It turns out that the solution was quite simple: I was using Intel’s compiler, 
so I need to change “gfortran” to “ifcore” in build.conf.

That combined with Michael’s advice got things working.
-Leon


From: Kwant-discuss 
<kwant-discuss-boun...@kwant-project.org<mailto:kwant-discuss-boun...@kwant-project.org>>
 on behalf of "Leon Maurer (lmaurer)" 
<lmau...@sandia.gov<mailto:lmau...@sandia.gov>>
Date: Friday, October 7, 2016 at 9:10 AM
To: "kwant-discuss@kwant-project.org<mailto:kwant-discuss@kwant-project.org>" 
<kwant-discuss@kwant-project.org<mailto:kwant-discuss@kwant-project.org>>
Subject: Re: [Kwant] [EXTERNAL] Re: more MUMPS problems

Hello Michael,

I’ve tried adding the new libraries, and now I have a slightly different error:

ImportError: 
/ascldap/users/lmaurer/local/lib/python3.5/site-packages/kwant-1.2.2-py3.5-linux-x86_64.egg/kwant/linalg/_mumps.cpython-35m-x86_64-linux-gnu.so:
 undefined symbol: for_close

Previously, the undefined symbol was “__kmpc_ok_to_fork”. I guess that’s 
progress!

Any more advice?

-Leon

From: Kwant-discuss 
<kwant-discuss-boun...@kwant-project.org<mailto:kwant-discuss-boun...@kwant-project.org>>
 on behalf of Michael Wimmer 
<m.t.wim...@tudelft.nl<mailto:m.t.wim...@tudelft.nl>>
Date: Friday, October 7, 2016 at 12:01 AM
To: "kwant-discuss@kwant-project.org<mailto:kwant-discuss@kwant-project.org>" 
<kwant-discuss@kwant-project.org<mailto:kwant-discuss@kwant-project.org>>
Subject: [EXTERNAL] Re: [Kwant] more MUMPS problems

Dear Leon,

Try the following: In the libraries line with the mkl limbs, add iomp5 pthread

The errors that you see refer to that the openmp library is missing.

Alternatively you could try to use anaconda (search previous emails on this 
list for details)

Best,

Michael


Von meinem iPad gesendet

Am 06.10.2016 um 23:12 schrieb Maurer, Leon 
<lmau...@sandia.gov<mailto:lmau...@sandia.gov>>:

Hello everyone,

I’m in the unfortunate position of having to compile Kwant (and all of its 
dependencies) from scratch in my home folder, and I’m having trouble getting 
Kwant to play well with MUMPS. After quite a bit of futzing, I’ve got 
everything to compile happily (the Kwant build recognizes the "User-configured 
MUMPS”), but Kwant still won’t work with MUMPS at runtime:

#############################
In [1]: import kwant
/home/lmaurer/local/lib/python3.5/site-packages/kwant-1.2.2-py3.5-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.
  "Performance can be very poor in this case.", RuntimeWarning)

In [2]: from kwant.linalg import mumps
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-2-2962310cb52c> in <module>()
----> 1 from kwant.linalg import mumps

/home/lmaurer/local/lib/python3.5/site-packages/kwant-1.2.2-py3.5-linux-x86_64.egg/kwant/linalg/mumps.py
 in <module>()
     15 import numpy as np
     16 import scipy.sparse
---> 17 from . import _mumps
     18 from .fortran_helpers import prepare_for_fortran
     19

ImportError: 
/home/lmaurer/local/lib/python3.5/site-packages/kwant-1.2.2-py3.5-linux-x86_64.egg/kwant/linalg/_mumps.cpython-35m-x86_64-linux-gnu.so:
 undefined symbol: __kmpc_ok_to_fork
#############################

For what it’s worth, I’ve put my entire build process below. It’s probably too 
much information, but the short version is that I’m using Intel’s complier on 
Linux. The Kwant-specific stuff is near the end. The earlier stuff is compiling 
Python, SCOTCH, METIS, and MUMPS.

Any advice?

Thanks.
-Leon


# folders to hold everything
cd
mkdir local
mkdir build

cd build

# install python and packages
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz
tar xf Python-3.5.2.tar.xz

cd Python-3.5.2
./configure --prefix=~/local
make
make install
export PATH=~/local/bin:$PATH
cd ..

# install important python packages
pip3 install scipy tinyarray matplotlib cython

# get SCOTCH, METIS, MUMPS
wget http://gforge.inria.fr/frs/download.php/file/34618/scotch_6.0.4.tar.gz
wget http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.1.0.tar.gz
wget http://graal.ens-lyon.fr/MUMPS/MUMPS_5.0.2.tar.gz

tar xf scotch_6.0.4.tar.gz
tar xf metis-5.1.0.tar.gz
tar xf MUMPS_5.0.2.tar.gz

# install METIS
cd metis-5.1.0
make config shared=1 prefix=~/local/
make
make install
cd ..

# install SCOTCH
cd scotch_6.0.4/src/
cp Make.inc/Makefile.inc.x86-64_pc_linux2.icc Makefile.inc

# need to tweak the makefile
nano Makefile.inc

Add "-fPIC” to the line that starts with "CFLAGS"

make
make esmumps
make install prefix=~/local

# make install won't install esmumps... copy files manually
cd ../..
cp scotch_6.0.4/lib/libesmumps.a ~/local/lib/
cp scotch_6.0.4/include/esmumps.h ~/local/include/

# install MUMPS
cd MUMPS_5.0.2
cp Make.inc/Makefile.INTEL.SEQ Makefile.inc

# need to make a bunch of changes to Makefile.inc
nano Makefile.inc

1) change "#SCOTCHDIR  = ${HOME}/scotch_6.0"
to "SCOTCHDIR  = ${HOME}/local/lib"

2) uncomment the line "LSCOTCH    = -L$(SCOTCHDIR)/lib -lesmumps -lscotch 
-lscotcherr"

3) change the line "#LMETISDIR = /local/metis/"
to "LMETISDIR = ${HOME}/local/lib"

4) uncomment the line "LMETIS    = -L$(LMETISDIR) -lmetis"

5) change the line "ORDERINGSF  = -Dpord"
to "ORDERINGSF  = -Dpord -Dscotch -Dmetis"

6) change "MKLROOT=/opt/intel/mkl/lib/intel64"
to "MKLROOT=/opt/intel-12.1/mkl/lib/intel64"

7) add the "-fPIC" compiler flag to the lines that begin "OPTF", "OPTL", and 
"OPTC"


# about damn time!
make z

# there's no automatic installation...
cp include/* ~/local/include/
cp lib/* ~/local/lib/
cp libseq/libmpiseq.a ~/local/lib/
cp libseq/*.h ~/local/include/

cd ..

# now for kwant
git clone --branch v1.2.2  http://gitlab.kwant-project.org/kwant/kwant.git
cd kwant

# need to make a new configuration file
nano build.conf

#### START OF FILE

[lapack]
libraries = mkl_intel_lp64 mkl_sequential mkl_core mkl_def
library_dirs = /opt/intel-12.1/mkl/lib/intel64
extra_link_args = -Wl,-rpath=/opt/intel-12.1/mkl/lib/intel64

[mumps]
libraries = zmumps mumps_common pord metis esmumps scotch scotcherr mpiseq 
gfortran
library_dirs = /home/lmaurer/local/lib/
include_dirs = /home/lmaurer/local/include

#### END OF FILE

# finally make and install kwant
python3 setup.py build
python3 setup.py install

# need to do the following or kwant won't be able to find libmetis.so
export LD_LIBRARY_PATH=~/local/lib/:$LD_LIBRARY_PATH


For reference, here are my libs and headers
$ ls local/lib/
libesmumps.a  libmpiseq.a        libpord.a        libscotch.a
libscotcherrexit.a  libzmumps.a  python3.5 libmetis.so   libmumps_common.a
libpython3.5m.a  libscotcherr.a  libscotchmetis.a    pkgconfig
$ ls local/include/
cmumps_c.h     cmumps_struc.h  dmumps_root.h   elapse.h   metis.h  mpi.h
mumps_c_types.h  scotchf.h  smumps_c.h     smumps_struc.h  zmumps_root.h
cmumps_root.h  dmumps_c.h      dmumps_struc.h  esmumps.h  mpif.h
mumps_compat.h  python3.5m       scotch.h   smumps_root.h  zmumps_c.h
zmumps_struc.h

Reply via email to