/ / Número errado de processadores mpi - mpi, processadores

Número mpi errado de processadores - mpi, processadores

Desculpe, estou certo de cometer um erro bobo, mas não deu certo.

Eu estou compilando um mpi simples olá mundo:

#include <stdio.h>
#include <mpi.h>

int main (argc, argv)
int argc;
char *argv[];
{
int rank, size;

MPI_Init (&argc, &argv);      /* starts MPI */
MPI_Comm_rank (MPI_COMM_WORLD, &rank);        /* get current process id */
MPI_Comm_size (MPI_COMM_WORLD, &size);        /* get number of processes */
printf( "Hello world from process %d of %dn", rank, size );
MPI_Finalize();
return 0;
}

E:

> mpicc -o hello_world_c hello_world.c
> mpirun -np 4 hello_world_c

Mas retorna:

Hello world from process 0 of 1
Hello world from process 0 of 1
Hello world from process 0 of 1
Hello world from process 0 of 1

Mas meu computador é um Core i7 com 4 núcleos. E tudo parece estar bem, ie. cat / proc / cpuinfo mostra os 4 processadores

o que está acontecendo??? Desde já, obrigado!!!!

Respostas:

5 para resposta № 1

Não há nada de errado com o seu código. O único problema que pode ser é com a instalação do seu mpi.

Aviso prévio:

Há diferenças entre o processador e o núcleo. não é a mesma coisa.


1 para resposta № 2

Neste caso, você precisa do mpiexec do pacote "mpich2".

Em primeiro lugar, remova todos os pacotes mpi instalados no seu computador. Se o seu servidor é Ubuntu, você pode usar o comando:

sudo apt-get purge mpi mpich2 openmpi-common

Para ter certeza de que você removeu todos os pacotes, tente este comando

which mpiexec

Se você não obteve nada em resposta, você já removeu todos os pacotes.

Então reinstale o pacote do mpich2

sudo apt-get install mpich2

Tente compilar e executar seu código novamente! Espero que esta ajuda!


0 para resposta № 3

Eu não sei como você pode compilar:

 int main (argc, argv)
int argc;
char *argv[];

será alterado para

 int main (int argc, char *argv[])

outro ponto é que o mpi é a passagem de mensagensinterface que passa mensagens entre processos, não núcleos ou processadores, se você tem um sistema de 4 núcleos, você pode executar seu código com tantos processos quanto o seu RAM permitir, mas apenas 4 processos estão funcionando a qualquer momento e outros processos devem esperar, então é eficiente use apenas 4 processos.


0 para a resposta № 4

INSTALAR

sudo apt-get install libopenmpi-dev openmpi-bin openmpi-doc

Agora compile e execute o código

insira a descrição da imagem aqui