Difference between revisions of "MPI Hello World"
Line 59: | Line 59: | ||
Hello, world, I am 3 of 4 |
Hello, world, I am 3 of 4 |
||
</nowiki> |
</nowiki> |
||
+ | |||
+ | Now create a hostfile called <tt> cluster_hosts </tt> with the following entries: |
||
+ | <nowiki> |
||
+ | pnode01 slots=4 max_slots=8 |
||
+ | pnode02 slots=4 max_slots=8 |
||
+ | pnode03 slots=4 max_slots=8 |
||
+ | pnode04 slots=4 max_slots=8 |
||
+ | </nowiki> |
||
+ | |||
+ | and keep adding lines until you get to <tt> pnode40 </tt>. |
||
+ | |||
+ | The next step assumes you have set up your ssh keys as described in |
||
+ | With 40 nodes listed in your <tt> cluster_hosts </tt> file, run your program again with |
||
+ | |||
+ | mpirun --hostfile cluster_hosts ./hello_mpi |
Revision as of 13:29, 24 September 2022
MPI Hello World
Many parallel jobs are using MPI at the lowest level to manage parallel compute resources.
This is a 'Hello World' program that will test the operation of sending jobs to remote workers.
/* * Sample MPI "hello world" application in C */ #include <stdio.h> #include "mpi.h" int main(int argc, char* argv[]) { int rank, size, len; char version[MPI_MAX_LIBRARY_VERSION_STRING]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); printf("Hello, world, I am %d of %d \n", rank, size); MPI_Finalize(); return 0; }
create a folder and save this file as hello_mpi.c
You can compile this program with
mpicc -g hello_mpi.c -o hello_mpi
You now have an executable called hello_mpi
You can run the command with
mpirun ./hello_mpi
With no other arguments, mpirun will run all of the tasks on the local machine, usually one for each CPU core. You should see a hello world from each process, on each cpu core.
Now, to run your mpi program on the cluster, you will need to create a hostfile. First, lets create a simple hostfile that just runs four processes on the local machine
localhost slots=4 max_slots=8
Put that line in a file called localhost . Now run your program with that hostfile, using
mpirun --hostfile localhost ./hello_mpi
Hello, world, I am 0 of 4 Hello, world, I am 2 of 4 Hello, world, I am 1 of 4 Hello, world, I am 3 of 4
Now create a hostfile called cluster_hosts with the following entries:
pnode01 slots=4 max_slots=8 pnode02 slots=4 max_slots=8 pnode03 slots=4 max_slots=8 pnode04 slots=4 max_slots=8
and keep adding lines until you get to pnode40 .
The next step assumes you have set up your ssh keys as described in With 40 nodes listed in your cluster_hosts file, run your program again with
mpirun --hostfile cluster_hosts ./hello_mpi