Computação paralela com OpenMPI [RESOLVIDO]

1. Computação paralela com OpenMPI [RESOLVIDO]

Paulo Henrique
MrCrawl3r

(usa Ubuntu)

Enviado em 07/05/2016 - 12:49h

Boa tarde,

Estou com o seguinte problema:

Exercício proposto (ou quase todo ele)
Tenho um quantidade de números no intervalo entre 0 e esta quantidade e tenho que verificar quantos desses números são primos. Até aí tudo bem!

Problema:
Porém o exercício pede que eu divida este intervalos em vários processos, e depois junte as somas locais dos numeros primos encontrados no processo master usando MPI (não posso usar MPI_Reduction()). Consegui fazer o código, porém ainda possui alguma coisa errada que não enxergo o que é no código que deixa o processo mestre esperando infinitamente os outros processos entregarem a resposta.

Podem me ajudar com este problema?

Código feito até aqui:
http://pastebin.com/vSv8c3p0

Para compilar e executar o programa, digito no terminal:
$mpic++ primes.cpp -o primes
$mpiexec -np 2 ./primes

E no final não aparece nada na tela além do nada.


Quando eu tinha feito o programa sem usar os métodos MPI_Recv() e MPI_Send(), e fazia o mesmo processo acima, o resultado que aparecia na tela ocilava entre mostrar apenas a soma local do processo master ou mostrar as duas somas, como mostra esta saída da tela:
MrCrawl3r@son-of-a-bit:~/Documentos/PUC/Seminarios/TP3$ mpiexec -np 2 ./primes
proc nº 0 says: 95 were found between 0 and 500
MrCrawl3r@son-of-a-bit:~/Documentos/PUC/Seminarios/TP3$ mpiexec -np 2 ./primes
proc nº 0 says: 95 primes were found between 0 and 500
proc nº 1 says: 73 primes were found between 500 and 1000

O que me leva a pensar que o problema está no uso dos métodos citados. Porém comparei com outros programas e estou usando de forma similar.

Tentei detalhar ao máximo sem enrolar muito, espero que possam me ajudar. Obrigado pela atenção


  


2. Re: Computação paralela com OpenMPI [RESOLVIDO]

Paulo Henrique
MrCrawl3r

(usa Ubuntu)

Enviado em 07/05/2016 - 17:11h

Ops, esqueci de marcar resolvido xD

O erro tá no for depois da linha 66 que começa de 0 até o número de processos. O correto é começar em 1, já que o 0 está reservado para o processo master, e ele não precisa mandar nenhum dado para ele mesmo.

--------------------------------------------------
Att,
Mr Crawler.

O mundo depende dos computadores. Tenha total domínio sobre os computadores e domine o mundo!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts