TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Wat wat wat wat

Por:   •  8/10/2015  •  Pesquisas Acadêmicas  •  1.528 Palavras (7 Páginas)  •  362 Visualizações

Página 1 de 7

3.1 - O que acontece no programa de cumprimentos se, em vez de strlen (greeting) + 1, usamos strlen (greeting) para o comprimento da mensagem que está sendo enviado por processos 1, 2, ..., comm sz-1? O que acontece se usarmos MAX cadeia em vez de strlen (greeting) + 1? Você pode explicar estes resultados?

3.2 – Modifique a regra trapezoidal de modo a que ele venha o mesmo integrante corretamente se comm_sz não for divisível igualmente por n(você poderá assumir que  n >= comm_sz).

3.3 - Determine quais as variáveis do programa regra trapezoidal são locais e qual são globais.

3.4 - Modifique o programa que apenas imprime uma linha de saída de cada processo (output.c MPI) de modo que a saída seja impresso na classificação dos ranks : processo 0s saí primeiro , em seguida o processo 1s, e assim por diante.

3.5 - Em uma árvore binária, existe um único caminho mais curto de cada nó para a raiz. O comprimento deste caminho é muitas vezes chamado a profundidade do nó. Uma árvore binária em que cada não-folha tem dois filhos é chamado de uma árvore binária completa, e uma árvore binária completa é às vezes assim chamado por ter a maioria das folhas com a mesma pronfundidade. Veja a Figura 14. Use o princípio da indução matemática para provar que se T é uma árvore binária completa com n folhas, então a profundidade das folhas é dada por log(n) na base 2.

3.6 – Supondo comm_sz = 4 e que X é um vetor com largura de n = 14 componentes:

        a – Como é que os componentes de X podem ser distribuídos entre os processos em um         programa que utilizou uma distribuição por bloco?

        B - Como é que os componentes de x podem ser distribuídos entre os processos em um         programa que usou uma distribuição cíclica?

        C -  Como é que os componentes de x podem ser distribuídos entre os processos em um         programa que usou uma distribuição block-cíclica com blocksize b = 2?

Você deve tentar fazer as suas distribuições geral, de modo que eles poderiam ser usados​​, independentemente do que comm_sz e n são. Você também deve tentar fazer as suas distribuições "justas" para que se q e r são todos os dois processos, a diferença entre o número de componentes designados para q e o número de componentes atribuídos a r é o menor possível.

3.7 - O que as diversas funções coletivas MPI fazer se o comunicador contém um processo único?

3.8 – Supondo comm_sz = 8 e n = 16:

        A - Desenhe um diagrama que mostra como MPI Scatter podem ser implementados         utilizando a comunicação estruturada em árvore com processos comm_sz quando o processo         0 necessita de distribuir um array contendo n elementos.

        B - Desenhe um diagrama que mostra como MPI Gather pode ser implementada por meio de         comunicação estruturada em árvore quando uma matriz de n-elemento que foi distribuído         entre comm_sz processos precisam ser reunidas para o processo 0.

3.9 – Escrever um programa em MPI que implementa a multiplicação de um vetor por um escalar e ponto. O usuário deve digitar dois vetores e um escalar, todos os quais são lidos pelo processo 0 e distribuídos entre os processos. Os resultados são calculados e cobrados no processo 0, que os imprime. Você pode assumir que n, a ordem dos vetores, é divisível por comm_sz.

3.10 – Na função Read_vector mostrada no programa 3.9, usamos local_n como o argumento atual para dois dos argumentos formais para MPI_Scatter: send_count e recv_count. Por que está certo o pseudônimo desses argumentos?

3.11 - Encontrar somas de prefixo é uma generalização da soma global. Em vez de simplesmente encontrar a soma dos valores de n,

[pic 1]

        as somas de prefixo são as somas parciais de n:

[pic 2]

A – Elabore um algoritmo serial para calcular as n somas de um array de n elementos

B – Paralelize seu algoritmo serial para um sistema de n processos, em que cada um deles são armazenados em x_i's.

C – Supondopara k inteiros positivos. Você pode elaborar um algoritmo serial e uma paralelização do serial para que o algoritmo paralelo requeira apenas k fases de comunicação?[pic 3]

D - MPI fornece uma função de comunicação coletiva, MPI_Scan, que pode ser usada para computar a soma dos prefixos.

 [pic 4]

Ela opera em arrays com count elementos; tanto sendbuf_p e recvbuf_p deve-se referir a blocos de count elementos do tipo datatype. O argumento op é o igual  op do MPI_Reduce. Escreva um programa em MPI que gera uma matriz aleatória dos counts  elementos em cada processo MPI, encontra as somas dos prefixos, e imprime os resultados.

3.12 – Uma alternativa para a estrutura butterfly allreduce é uma estrutura passa-anel. No passa-anel, se existirem processos p, cada processo q enviando dados para processo q+1, exceto que o processo p-1 envia dados para o processo 0. Este processo é repetido até que cada processo tem o resultado desejado. Assim, podemos implementar allreduce com o seguinte código:

[pic 5]

A – Escreva um programa MPI que implementa esse algoritmo para o allreduce. como comparar seu desempenho com o allreduce estruturado allreduce?

B - Modifique o programa MPI você escreveu na primeira parte para que ele implementa somas de prefixo.

3.13 – MPI_Scatter e MPI_Gather têm a limitação de que cada processo tem de enviar ou receber o mesmo número de itens de dados. Quando este não é o caso, devemos utilizar as funções MPI MPI_Gatherv e MPI_Scatterv. Consulte as páginas do man para estas funções, e modificar sua soma vetorial, produto escalar e programe para que ele possa lidar corretamente com o caso quando n não é uniformemente divisível por comm_sz.

...

Baixar como (para membros premium)  txt (8.7 Kb)   pdf (176.3 Kb)   docx (83.3 Kb)  
Continuar por mais 6 páginas »
Disponível apenas no TrabalhosGratuitos.com