mpirical
The mpirical
package is designed to make it easy to execute
Python code in its own, dedicated MPI environment. It works by
providing a decorator called mpirical.mpirun
which acts like
a MPI’s mpirun
utility. Every time you execute an
mpirical
-decorated function, that function will run in its
own MPI environment, with the number of processes specified,
as if it had been made into an MPI executable and run with
mpirun
from the command-line.
For example, consider some mpi4py
code in a file called
my_mpi_script.py
:
def function():
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
if rank == 0:
print('Hello, everyone!')
else:
print('And hello to you, rank 0!')
if __name__ == '__main__':
function()
You would normally need to execute this with MPI’s mpirun
,
like so:
mpirun -np 4 python my_mpi_script.py
With mpirical
, you can accomplish the same thing by simply
decorating the function
function and then executing it, like so:
import mpirical
@mpirical.mpirun(np=4)
def function():
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
if rank == 0:
print('Hello, everyone!')
else:
print('And hello to you, rank 0!')
function()
When this script is executed, the function
code will be executed
with 4 MPI processes, just as if it were run with mpirun
previously.