Open
Description
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?