
Hello,
I have installed (in non standard directories)
* MUMPS 5.0.1 * * SCOTCH 6.0.4 * METIS 5.1.0
resulting in following libs
* libcmumps.a libdmumps.a libmpiseq.a libmumps_common.a libpord.a libsmumps.a libzmumps.a * libesmumps.a libptesmumps.a libptscotch.a libptscotcherr.a libptscotcherrexit.a libscotch.a libscotcherr.a libscotcherrexit.a libscotch_group.a * libmetis.a
I use Intel’s icc/ifort/MKL.
When building kwant, the output shows "User-configured MUMPS", no errors. I use following build.conf file:
[mumps] libraries = zmumps mumps_common pord metis esmumps scotch scotcherr mpiseq library_dirs = $MUMPS/lib $METIS/lib $SCOTCH/lib
[lapack] libraries = mkl_intel_lp64 mkl_sequential mkl_core mkl_def library_dirs = $IMKL/mkl/lib/intel64 extra_link_args = -Wl,-rpath=$IMKL/mkl/lib/intel64
However, it seems something is going wrong since MUMPS cannot be loaded. I tried both kwant 1.0.5 and 1.1.1.
from scikits import umfpack import kwant
[…]/lib/python2.7/site-packages/kwant-1.1.1-py2.7-linux-x86_64.egg/kwant/solvers/default.py:18: RuntimeWarning: MUMPS is not available, SciPy built-in solver will be used as a fallback. Performance can be very poor in this case.
from kwant.linalg import mumps
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "[…]/lib/python2.7/site-packages/kwant-1.1.1-py2.7-linux-x86_64.egg/kwant/linalg/mumps.py", line 17, in <module> from . import _mumps ImportError: […]/lib/python2.7/site-packages/kwant-1.1.1-py2.7-linux-x86_64.egg/kwant/linalg/_mumps.so: undefined symbol: scotchfdgraphcorderinit_
Any idea how to solve this problem?
Thanks in advance!
Regards, Stefan

Becuwe Stefan wrote:
I have installed (in non standard directories)
- MUMPS 5.0.1
- SCOTCH 6.0.4
- METIS 5.1.0
(...) However, it seems something is going wrong since MUMPS cannot be loaded. I tried both kwant 1.0.5 and 1.1.1. (...)
from kwant.linalg import mumps
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "[…]/lib/python2.7/site-packages/kwant-1.1.1-py2.7-linux-x86_64.egg/kwant/linalg/mumps.py", line 17, in <module> from . import _mumps ImportError: […]/lib/python2.7/site-packages/kwant-1.1.1-py2.7-linux-x86_64.egg/kwant/linalg/_mumps.so: undefined symbol: scotchfdgraphcorderinit_
Hi Stefan,
You might be actually the first one to try to run Kwant with MUMPS 5 and SCOTCH 6. I have been always using MUMPS 4 and SCOTCH 5 so far (as found in Debian), and I do not know of anyone who has tried newer versions. But I believe that both SCOTCH and MUMPS have not introduced backwards-incompatible changes so Kwant should work with them.
The routine scotchfdgraphcorderinit that appears in your error message above belongs to the SCOTCH _distributed_ library [1] a.k.a PT-SCOTCH. Kwant only uses the sequential library. The symbol scotchfdgraphcorderinit that appears in your error message can only be found in the parallel version of scotch:
$ grep -lo scotchfdgraphorderinit *.so libptscotch-5.1.so
The name of the sequential version occurs both SCOTCH and PT-SCOTCH:
$ grep -lo scotchfgraphorderinit *.so libptscotch-5.1.so libscotch-5.1.so
So, it seems to me, that your problem is due to including some bits of parallel SCOTCH or MUMPS while Kwant only requires the sequential version. You could check whether you have compiled your MUMPS with PT-SCOTCH support.
You can use the tool “ldd” to see the dynamic libraries that some binary has been linked to. Neither _mumps.so nor libscotch.so should have any references to ptscotch.
I hope that the above can help you a bit. Please keep us updated about your progress.
Christoph

Dear Stefan,
just to add to Christoph's answer: In principle Mumps 5 and scotch 6 should work - I briefly tested the combination on my laptop some time ago.
As Christoph already figured out, you seem to have Mumps compiled with ptscotch. Kwant can for now only use the serial version of Mumps. Did you compile Mumps yourself? If so, you need to adjust a Makefile of Mumps so that you build the serial version only.
Best,
Michael
On 27-10-15 12:38, Christoph Groth wrote:
Becuwe Stefan wrote:
I have installed (in non standard directories)
- MUMPS 5.0.1
- SCOTCH 6.0.4
- METIS 5.1.0
(...) However, it seems something is going wrong since MUMPS cannot be loaded. I tried both kwant 1.0.5 and 1.1.1. (...)
from kwant.linalg import mumps
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "[…]/lib/python2.7/site-packages/kwant-1.1.1-py2.7-linux-x86_64.egg/kwant/linalg/mumps.py", line 17, in <module> from . import _mumps ImportError: […]/lib/python2.7/site-packages/kwant-1.1.1-py2.7-linux-x86_64.egg/kwant/linalg/_mumps.so: undefined symbol: scotchfdgraphcorderinit_
Hi Stefan,
You might be actually the first one to try to run Kwant with MUMPS 5 and SCOTCH 6. I have been always using MUMPS 4 and SCOTCH 5 so far (as found in Debian), and I do not know of anyone who has tried newer versions. But I believe that both SCOTCH and MUMPS have not introduced backwards-incompatible changes so Kwant should work with them.
The routine scotchfdgraphcorderinit that appears in your error message above belongs to the SCOTCH _distributed_ library [1] a.k.a PT-SCOTCH. Kwant only uses the sequential library. The symbol scotchfdgraphcorderinit that appears in your error message can only be found in the parallel version of scotch:
$ grep -lo scotchfdgraphorderinit *.so libptscotch-5.1.so
The name of the sequential version occurs both SCOTCH and PT-SCOTCH:
$ grep -lo scotchfgraphorderinit *.so libptscotch-5.1.so libscotch-5.1.so
So, it seems to me, that your problem is due to including some bits of parallel SCOTCH or MUMPS while Kwant only requires the sequential version. You could check whether you have compiled your MUMPS with PT-SCOTCH support.
You can use the tool “ldd” to see the dynamic libraries that some binary has been linked to. Neither _mumps.so nor libscotch.so should have any references to ptscotch.
I hope that the above can help you a bit. Please keep us updated about your progress.
Christoph

Dear Michael,
As Christoph already figured out, you seem to have Mumps compiled with ptscotch. Kwant can for now only use the serial version of Mumps. Did you compile Mumps yourself? If so, you need to adjust a Makefile of Mumps so that you build the serial version only.
That was an error indeed. I think I fixed MUMPS’ Makefile, using
LIBSEQ="-L[…]/libseq -lmpiseq" INCSEQ="-I[…]/libseq" LSCOTCH="-L$SCOTCH/lib -lesmumps -lscotch -lscotcherr" LMETIS="-L$METIS/lib -lmetis"
I also needed to add "ifcore" (using Intel icc, ifort) to libraries in the [mumps] section in build.conf to avoid "undefined symbol: for_write_int_fmt"
So far so good, but …
import kwant
Current memory used: 416 bytes Maximum memory used: 416 bytes ***Memory allocation failed for OMETIS: cptr. Requested size: 3435973836824 bytes Segmentation fault (core dump made)
Any ideas?
Hopefully converging to a working setup… ;-)
Regards, Stefan

Becuwe Stefan wrote:
So far so good, but …
import kwant
Current memory used: 416 bytes Maximum memory used: 416 bytes ***Memory allocation failed for OMETIS: cptr. Requested size: 3435973836824 bytes Segmentation fault (core dump made)
Any ideas?
Weird! 3435973836824 bytes, that's exactly 3200 GiB and 24 bytes. I have no experience with METIS, but I know that MUMPS works quite well with SCOTCH alone. You could try to compile it without METIS.
Christoph

Dear Stefan,
On 28-10-15 11:14, Becuwe Stefan wrote:
***Memory allocation failed for OMETIS: cptr. Requested size: 3435973836824 bytes
That error looks quite funny. I've been using metis on my computer, and so far no problems - so in principle it should work.
Is it possible that in compiling, metis and mumps use different integer sizes?
As far as I understand, you get the error directly after importing kwant? The only calls to Mumps/metis are then on some small 2x2 test problem to probe some functionalities of mumps.
Best,
Michael

Dear Michael,
That error looks quite funny. I've been using metis on my computer, and so far no problems - so in principle it should work.
Do you have the combination MUMPS + SCOTCH + METIS?
Is it possible that in compiling, metis and mumps use different integer sizes?
I will check. Following Christoph’s advice, I used MUMPS + SCOTCH and that seems to work, so without METIS.
As far as I understand, you get the error directly after importing kwant?
Correct!
Regards, Stefan
participants (3)
-
Becuwe Stefan
-
Christoph Groth
-
Michael Wimmer