Source code for cosmoHammer.ConcurrentMpiCosmoHammerSampler
import multiprocessing
from cosmoHammer.MpiCosmoHammerSampler import MpiCosmoHammerSampler
[docs]class ConcurrentMpiCosmoHammerSampler(MpiCosmoHammerSampler):
"""
A sampler implementation extending the mpi sampler in order to allow to
distribute the computation with MPI and using multiprocessing on a single node.
:param threads: (optional)
The number of threads to use for parallelization. If ``threads == 1``,
then the ``multiprocessing`` module is not used but if
``threads > 1``, then a ``Pool`` object is created
:param kwargs: key word arguments passed to the CosmoHammerSampler
"""
def __init__(self, threads=1, **kwargs):
"""
CosmoHammer sampler implementation
"""
self.threads = threads
super(ConcurrentMpiCosmoHammerSampler, self).__init__(**kwargs)
def _getMapFunction(self):
if self.threads > 1:
pool = multiprocessing.Pool(self.threads)
return pool.map
else:
return map