Linking problem with NWChem 6.6, Intel compilers and Infiniband


Click here for full thread
Clicked A Few Times
Hi all,

I'm trying to build NWChem 6.6 with the Intel compiler suite, Intel MPI and the Intel Math Kernel Library (MKL). We have an Infiniband interconnect.

Because we use EasyBuild to build software (including NWChem), I can't say definitively what the environment is when the build commences. Nevertheless, the log for the build reports the following:

== 2015-11-19 14:58:59,438 runpy.EB_NWChem INFO configuring...
== 2015-11-19 14:58:59,438 runpy.EB_NWChem INFO Starting configure step
== 2015-11-19 14:58:59,440 runpy.EB_NWChem INFO Running method configure_step part of step configure
== 2015-11-19 14:58:59,443 runpy.environment INFO Environment variable NWCHEM_TOP set to /tmp/eb-jBcIlw/tmpMKidpY-NWChem-6.6 (previously undefined)
== 2015-11-19 14:58:59,444 runpy.environment INFO Environment variable NWCHEM_TARGET set to LINUX64 (previously undefined)
== 2015-11-19 14:58:59,444 runpy.environment INFO Environment variable MSG_COMMS set to MPI (previously undefined)
== 2015-11-19 14:58:59,444 runpy.environment INFO Environment variable ARMCI_NETWORK set to OPENIB (previously undefined)
== 2015-11-19 14:58:59,444 runpy.environment INFO Environment variable IB_INCLUDE set to /usr/include (previously undefined)
== 2015-11-19 14:58:59,445 runpy.environment INFO Environment variable IB_LIB set to /usr/lib64 (previously undefined)
== 2015-11-19 14:58:59,445 runpy.environment INFO Environment variable IB_LIB_NAME set to -libumad -libverbs -lpthread -lrt (previously undefined)
== 2015-11-19 14:58:59,445 runpy.environment INFO Environment variable PYTHONHOME set to /share/easybuild/RHEL6.3/westmere/software/Python/2.7.9-intel-2015a (previously undefined)
== 2015-11-19 14:58:59,446 runpy.environment INFO Environment variable PYTHONVERSION set to 2.7 (previously undefined)
== 2015-11-19 14:58:59,446 runpy.environment INFO Environment variable EXTRA_LIBS set to  /share/easybuild/RHEL6.3/westmere/software/libreadline/6.2-intel-2015a/lib/libreadline.a /share/easybuild/RHEL6.3/westmere/software/ncurses/5.9-intel-2015a/lib/libcurses.a (previously undefined)
== 2015-11-19 14:58:59,446 runpy.environment INFO Environment variable LARGE_FILES set to TRUE (previously undefined)
== 2015-11-19 14:58:59,447 runpy.environment INFO Environment variable USE_NOFSCHECK set to TRUE (previously undefined)
== 2015-11-19 14:58:59,447 runpy.environment INFO Environment variable CCSDTLR set to y (previously undefined)
== 2015-11-19 14:58:59,447 runpy.environment INFO Environment variable CCSDTQ set to y (previously undefined)
== 2015-11-19 14:58:59,447 runpy.environment INFO Environment variable MRCC_METHODS set to y (previously undefined)
== 2015-11-19 14:58:59,448 runpy.environment INFO Environment variable EACCSD set to y (previously undefined)
== 2015-11-19 14:58:59,448 runpy.environment INFO Environment variable IPCCSD set to y (previously undefined)
== 2015-11-19 14:58:59,448 runpy.environment INFO Environment variable USE_MPI set to y (previously undefined)
== 2015-11-19 14:58:59,449 runpy.environment INFO Environment variable USE_MPIF set to y (previously undefined)
== 2015-11-19 14:58:59,449 runpy.environment INFO Environment variable USE_MPIF4 set to y (previously undefined)
== 2015-11-19 14:58:59,449 runpy.environment INFO Environment variable MPI_CC set to mpicc (previously undefined)
== 2015-11-19 14:58:59,450 runpy.environment INFO Environment variable MPI_CXX set to mpicxx (previously undefined)
== 2015-11-19 14:58:59,450 runpy.environment INFO Environment variable MPI_F90 set to mpif90 (previously undefined)
== 2015-11-19 14:58:59,450 runpy.environment INFO Environment variable MPI_LOC set to /share/easybuild/RHEL6.3/westmere/software/impi/5.0.2.044-iccifort-2015.1.133-GCC-4.9.2 (previously undefined)
== 2015-11-19 14:58:59,450 runpy.environment INFO Environment variable MPI_LIB set to /share/easybuild/RHEL6.3/westmere/software/impi/5.0.2.044-iccifort-2015.1.133-GCC-4.9.2/lib64 (previously undefined)
== 2015-11-19 14:58:59,451 runpy.environment INFO Environment variable MPI_INCLUDE set to /share/easybuild/RHEL6.3/westmere/software/impi/5.0.2.044-iccifort-2015.1.133-GCC-4.9.2/include64 (previously undefined)
== 2015-11-19 14:58:59,451 runpy.environment INFO Environment variable LIBMPI set to -lmpifort -lmpi -lmpigi -ldl -lrt -lpthread (previously undefined)
== 2015-11-19 14:58:59,451 runpy.environment INFO Environment variable COPTIMIZE set to -O2 -xHost -ftz -fp-speculation=safe -fp-model source -DMKL_ILP64 (previously undefined)
== 2015-11-19 14:58:59,452 runpy.environment INFO Environment variable FOPTIMIZE set to -i8 -O2 -xHost -ftz -fp-speculation=safe -fp-model source (previously undefined)
== 2015-11-19 14:58:59,452 runpy.environment INFO Environment variable BLASOPT set to -L/share/easybuild/RHEL6.3/westmere/software/icc/2015.1.133-GCC-4.9.2/lib/intel64 -L/share/easybuild/RHEL6.3/westmere/software/imkl/11.2.1.133-iimpi-7.2.3-GCC-4.9.2/lib -L/share/easybuild/RHEL6.3/westmere/software/imkl/11.2.1.133-iimpi-7.2.3-GCC-4.9.2/mkl/lib/intel64 -L/share/easybuild/RHEL6.3/westmere/software/imkl/11.2.1.133-iimpi-7.2.3-GCC-4.9.2/lib -L/share/easybuild/RHEL6.3/westmere/software/Python/2.7.9-intel-2015a/lib -L/share/easybuild/RHEL6.3/westmere/software/impi/5.0.2.044-iccifort-2015.1.133-GCC-4.9.2/lib64 -Wl,-Bstatic -Wl,--start-group -lmkl_scalapack_ilp64 -lmkl_blacs_intelmpi_ilp64 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -Wl,-Bdynamic -liomp5 -lpthread -lmpifort -lmpi -lmpigi -ldl -lrt -lpthread (previously undefined)
== 2015-11-19 14:58:59,452 runpy.environment INFO Environment variable SCALAPACK set to -L/share/easybuild/RHEL6.3/westmere/software/icc/2015.1.133-GCC-4.9.2/lib/intel6


Unfortunately, at what I think is the link command, I see this, followed by many other similar errors:

/tmp/eb-jBcIlw/tmpMKidpY-NWChem-6.6/src/tools/install/lib/libarmci.a(openib.o): In function `armci_server_alloc_bufs':                                
../../ga-5-4/armci/src/devices/openib/openib.c:(.text+0x1f3b): undefined reference to `ibv_reg_mr'


It seems to me that this may be because -libverbs is missing from the link line. I might have thought, however, that it would only need to be in the IB_LIB_NAME environment variable and that would propagate it to everywhere it needs to be. Have I left out something crucial, or is this a case where a patch or code change would be ideal?