Open MPI error with h.nrnmpi_init(): mca_base_component_repository_open: unable to open mca_patcher_overwrite
Posted: Sat May 30, 2020 10:04 am
Hi. I have a bedeviliing issue setting up parallelism in neuron on linux (Ubuntu 18.04.4). When I run h.nrnmpi_init(), I get this error:
I have found this commit to git hub by nrnhines, https://github.com/neuronsimulator/nrn/ ... d7d4aa690b, which in turn links to this page https://github.com/open-mpi/ompi/issues/3705. If I understand correctly from these issue pages, then dynamically loading some of the mpi libraries is failing. Steps that I have taken to get this far:
Output from "python ompi-dlopen.py" is:
So it's working, and finding the correct version of open mpi (v4.0.3). This suggests to me that I shouldn't need to run the patch suggested in that issue resolution, that nrnhines refers to in his git hub commit. However, the issue still seems to be that the wrong libraries are found, since the error message above points to /usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_patcher_overwrite.so, which has to be the preinstalled open mpi libraries.
Any suggestions you have would be helpful. A couple things I'm considering trying are 1) re-making openmpi without the options and then using the patch from the ompi git hub issue, and 2) building neuron with --with-paranrn=dynamic as nrnhines mentions. Would #2 matter?
Thanks, I'm stuck!
Code: Select all
mca_base_component_repository_open: unable to open mca_patcher_overwrite: /usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_patcher_overwrite.so: undefined symbol: mca_patcher_base_patch_t_class (ignored).
- Building neuron from source (./configure --with-iv --with-paranrn --with-nrnpython=python3)
- Compiling openmpi (v4.0.3) with configure/make: ./configure --prefix=/usr/local --disable-dlopen --disable-mca-dso
Code: Select all
import ctypes
libdir = "/usr/local/lib/"
lib = ctypes.CDLL(libdir+"libmpi.so", ctypes.RTLD_LOCAL)
ierr = lib.MPI_Init(None,None)
assert ierr==0
r = ctypes.create_string_buffer(4096)
n = ctypes.c_int()
ierr = lib.MPI_Get_library_version(r, ctypes.byref(n))
assert ierr==0
print(r[0:n.value])
ierr = lib.MPI_Finalize()
assert ierr==0
Code: Select all
b'Open MPI v4.0.3, package: Open MPI tony@tony-desktop Distribution, ident: 4.0.3, repo rev: v4.0.3, Mar 03, 2020\x00'
Any suggestions you have would be helpful. A couple things I'm considering trying are 1) re-making openmpi without the options and then using the patch from the ompi git hub issue, and 2) building neuron with --with-paranrn=dynamic as nrnhines mentions. Would #2 matter?
Thanks, I'm stuck!