I am parallelizing code to numerically solve a 5 Dimensional population balance model. Currently I have a very good MPICH2 parallelized code in FORTRAN but as we increase parameter values the arrays become too large to run in distributed memory mode.
I have access to a cluster with 15 nodes, where each node has two 8 core CPUs and 128GB of RAM. I want to write run a program with MPI-3.0 in shared memory mode so that each process does not generate its own copy of each array.
Before I can run anything on the cluster I have to test it on a desktop running Ubuntu. It is essentially one blade of the cluster in that it has two 8 core CPUs and 128 GBs of RAM. I will be writing and testing my code on it, so please gear your responses towards running programs on the Ubuntu computer.
I have read that there is a way to run MPI-3.0 in shared memory mode like OpenMP instead of its default distributed memory mode.
Questions:
How will I have to alter my code? Do I need to add in calls to other MPI functions like
MPI_WIN_ALLOCATE
?How do I compile my code to run MPI-3.0 in shared memory mode? Will this be different if it is over several nodes?
Please give sample compilation scripts if you can. I also have only GNU compilers. The cluster I use does not support Intel compilers.
mpiexec -n 8 /path/to/application
to fake your computer into thinking it has 8 different nodes. $\endgroup$