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.
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