use a single global mpi thread pool instead of spawning them whenever needed