Sorry, I'm sure making a silly mistake, but did not work out.
I'm compiling a simple mpi hello world:
#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 %d\n", rank, size );
MPI_Finalize();
return 0;
}
And:
> mpicc -o hello_world_c hello_world.c
> mpirun -np 4 hello_world_c
But returns:
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
But my computer is a core i7 with 4 cores. And everything seems to be ok, ie. cat /proc/cpuinfo shows the 4 processors
what's happening??? Thanks in advance!!!!
I don't know how you can compile it:
will be changed to
another point is that mpi is message passing interface that passes messages between processes not cores or processors if you have a 4 core system you can run your code with so many processes as your ram permits but only 4 processes are working at any time and other processes must wait so it is efficient that you use only 4 process.
In this case, you need mpiexec from the 'mpich2' package.
Firstly, remove all mpi packages that installed on your computer. If your server is Ubuntu, you can use the command:
To make sure that you have removed all the packages, try this command
If you got nothing in response, you already removed all the packages.
Then reinstall the package of mpich2
Try to compile and run your code again! Hope this help!
There is nothing wrong with your code. The only problem that can be is with your mpi installation.
Notice:
There is a differences between processor to core. its not the same thing.
INSTALL
Now compile and execute code