CosmoHammer icon indicating copy to clipboard operation
CosmoHammer copied to clipboard

Pickling error in Python 3 with MPI

Open ajshajib opened this issue 6 years ago • 1 comments

Below is the error that I received (Python: 3.6.1, openmpi: 1.4).

Traceback (most recent call last):
  File "/u/home/a/ajshajib/mybin/lenstronomy/lenstronomy/Sampling/sampler.py", line 67, in pso
    for swarm in pso.sample(n_iterations):
  File "/u/home/a/ajshajib/mybin/CosmoHammer/cosmoHammer/pso/ParticleSwarmOptimizer.py", line 78, in sample
    self._get_fitness(self.swarm)
  File "/u/home/a/ajshajib/mybin/CosmoHammer/cosmoHammer/pso/MpiParticleSwarmOptimizer.py", line 51, in _get_fitness
    results =  mapFunction(self.func, pos)
  File "/u/home/a/ajshajib/mybin/CosmoHammer/cosmoHammer/util/MpiUtil.py", line 43, in map
    self.mapFunction(function, splitList(sequence,size)[rank])))
  File "mpi4py/MPI/Comm.pyx", line 1272, in mpi4py.MPI.Comm.allgather
  File "mpi4py/MPI/msgpickle.pxi", line 770, in mpi4py.MPI.PyMPI_allgather
  File "mpi4py/MPI/msgpickle.pxi", line 104, in mpi4py.MPI.Pickle.dump
  File "mpi4py/MPI/msgpickle.pxi", line 91, in mpi4py.MPI.Pickle.cdumps
TypeError: can't pickle module objects

ajshajib avatar Jul 03 '19 23:07 ajshajib

I had the same issue without MPI. I fixed it on my fork by replacing the "import multiprocessing" by "import multiprocess", which uses dill for pickling.

martin-millon avatar Aug 16 '19 09:08 martin-millon