I am wondering if it is possible to "mimick" a hybrid parallelization approach with mpi4py using ipyparallel?
I.e. have each engine access several cores?
By hybrid I mean using mpi4py for communication between MPI processes and Multithreading (e.g. using numba / BLAS threads in numpy / OpenMP) in ipyparallel.
Right now, every engine only sees a single core.
import ipyparallel as ipp
cluster = ipp.Cluster(engines="MPI", n=4, cluster_id="ppb", profile="MPI")
clients = cluster.start_and_connect_sync()
%%px
import numba
print(f"Numba can use {numba.config.NUMBA_NUM_THREADS} thread(s)")
Every engine then prints
Numba can use 1 thread(s)
While locally
import numba
print(f"Numba can use {numba.config.NUMBA_NUM_THREADS} thread(s)")
in my "8 core" container I get
Numba can use 8 thread(s)
Numba basically derives the number of threads from the available CPU cores.
Is there a way (that I missed) to make the engines see more than a single core?
I am wondering if it is possible to "mimick" a hybrid parallelization approach with
mpi4pyusingipyparallel?I.e. have each engine access several cores?
By hybrid I mean using mpi4py for communication between MPI processes and Multithreading (e.g. using
numba/ BLAS threads innumpy/ OpenMP) inipyparallel.Right now, every engine only sees a single core.
Every engine then prints
While locally
in my "8 core" container I get
Numba basically derives the number of threads from the available CPU cores.
Is there a way (that I missed) to make the engines see more than a single core?