Duplication of MPI communicator error

Dear Fenics community,

I’m getting the following error when running a simulation from the stable FENICS docker and anaconda:

File “/home/fenics/shared/Arcos_revisited/Viga/modules_viga.py”, line 730, in solve_quasi_static2
theta_h, w_h, gamma_h = u.split(deepcopy=True)
File “/usr/local/lib/python3.6/dist-packages/dolfin/function/function.py”, line 571, in split
return tuple(self.sub(i, deepcopy) for i in range(num_sub_spaces))
File “/usr/local/lib/python3.6/dist-packages/dolfin/function/function.py”, line 571, in
return tuple(self.sub(i, deepcopy) for i in range(num_sub_spaces))
File “/usr/local/lib/python3.6/dist-packages/dolfin/function/function.py”, line 550, in sub
self.cpp_object().sub(i),
RuntimeError: * Error: Duplication of MPI communicator failed (MPI_Comm_dup

I have seen this error on dolfin_adjoint. This is caused by the presence of a u.split(deepcopy=True) when I’m splitting a solution inside a for loop. However, this is not happening when running the code from FENICS installed from repo, nor with Fenics from source.

The error is only for a particular code on which the solution u have 1000+ degrees of freedom and the loop runs over 4000 times. Is this some kind of limitation of the MPI communicator inside the container (virtual environment)?

Distros= Ubuntu 20.04.1 LTS, Arch-Linux

Docker image= Dolfin 2019.2.0.dev0 — Failing
Fenics Anaconda version = 2019.1.0 – Failing

Ubuntu ppa repo= 2019.2.0~git20200629.946dbd3-2 – Working
Arch - Fenics from source= 2019.2.0 – Working

How can I solve this?

Thanks!

1 Like

Ok I have made some more test: I have created a Docker container with Ubuntu 20.04, then added Fenics PPA, followed by ‘apt install fenics’. By running the problematic code inside this container, the MPI duplication error does not occur, so I am tempted to infer that both, the Fenics docker container and the Fenics virtual anaconda environment, have some kind of limitation in this respect.