armci undefined symbols building 6.5 on OS X 10.10.2


Gets Around
I am trying to build the latest NWChem 6.5 snapshot on OS X Yosemite 10.10.2: http://nwchemgit.github.io/download.php?f=Nwchem-dev.revision26971-src.2015-04-01.tar.gz

EDIT: I also get the error described below when using the non-snapshot release: http://nwchemgit.github.io/download.php?f=Nwchem-6.5.revision26243-src.2014-09-10.tar.bz2

I installed mpich2 and gfortran via homebrew. I have mpich 3.1.4 and gfortran 4.9.2.

This is how I am attempting to build, after unpacking the archive and renaming the directory to 6.5:

cd 6.5
export BLASOPT="-llapack -lblas"
export NWCHEM_MODULES="all"
export NWCHEM_TARGET="MACX64"
export USE_MPI="y"
export USE_MPIF="y"
export USE_MPIF4="y"
export CFLAGS_FORGA="-DMPICH_NO_ATTR_TYPE_TAGS"
export MPI_INCLUDE="/usr/local/include"
export MPI_LIB="/usr/local/lib"
export LIBMPI=" -lmpifort -lmpi -lpmpi -lpthread"
export CFLAGS_FORGA="-DMPICH_NO_ATTR_TYPE_TAGS"
export NWCHEM_TOP=`pwd`
cd $NWCHEM_TOP/src
make nwchem_config 2>&1 | tee make.nwchem_config.log
make | tee build.log


It chugs along successfully for quite a while before ending here:
gfortran   -L/opt/science/nwchem/6.5/lib/MACX64 -L/opt/science/nwchem/6.5/src/tools/install/lib  -o /opt/science/nwchem/6.5/bin/MACX64/nwchem nwchem.o stubs.o -lnwctask -lccsd -lmcscf -lselci -lmp2 -lmoints -lstepper -ldriver -loptim -lnwdft -lgradients -lcphf -lesp -lddscf -ldangchang -lguess -lhessian -lvib -lnwcutil -lrimp2 -lproperty -lsolvation -lnwints -lprepar -lnwmd -lnwpw -lofpw -lpaw -lpspw -lband -lnwpwlib -lcafe -lspace -lanalyze -lqhop -lpfft -ldplot -ldrdy -lvscf -lqmmm -lqmd -letrans -lpspw -ltce -lbq -lmm -lcons -lperfm -ldntmc -lccca -lnwcutil -lga -larmci -lpeigs -lperfm -lcons -lbq -lnwcutil -llapack -llapack -lblas -lblas -llapack -lblas  -llapack  -lblas   -L/usr/local/lib  -lmpifort -lmpi -lpmpi -lpthread       
Undefined symbols for architecture x86_64:
  "_caxpy", referenced from:
      __acc in libarmci.a(comex.o)
  "_daxpy", referenced from:
      __acc in libarmci.a(comex.o)
     (maybe you meant: _daxpy3_, _pack_tt_daxpy_ , _grsm_gg_daxpy_ , _grsm_gmg_daxpy_ , _LP_daxpy , _d3db_rr_daxpy_ , _d3db_cc_daxpy_ , _cram_rr_daxpy_ , _c3db_cc_daxpy_ , _daxpyfile_ , _cram_cc_daxpy_ , _daxpy_ , _pack_cc_daxpy_ , _c3db_rr_daxpy_ , _gal_daxpy_ )
  "_saxpy", referenced from:
      __acc in libarmci.a(comex.o)
  "_zaxpy", referenced from:
      __acc in libarmci.a(comex.o)
     (maybe you meant: _pack_cc_zaxpy_, _zaxpy_ , _c3db_cc_zaxpy_ , _d3db_cc_zaxpy_ , _cram_cc_zaxpy_ )
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make: *** [all] Error 1


The full build log is here: http://www.sciencemadness.org/cc/os-x-yosemite-build.log

Gets Around
I was able to build it successfully against OpenBLAS. The problem appears to be with attempting to build without an external BLAS.

Gets Around
On Mac, you should probably use BLASOPT="-framework Accelerate", which is the version Apple provides for you.

Gets Around
I ran a test job that another NWChem user has identified as sensitive to BLAS choice:
http://verahill.blogspot.com/2012/09/my-own-personal-benchmarks-for-nwchem.html
http://verahill.blogspot.com.au/2012/09/new-compute-node-using-amd-fx-8150.html

Title "Test 1"
Start  biphenyl_cation_twisted-1
echo
charge 1
geometry autosym units angstrom
 C     0.00000     -3.54034     0.00000
 C     -1.20296     -2.84049     -0.216000
 C     -1.20944     -1.46171     -0.206253
 C     0.00000     -0.721866     0.00000
 C     1.20944     -1.46171     0.206253
 C     1.20296     -2.84049     0.216000
 C     0.00000     0.721866     0.00000
 C     1.20944     1.46171     -0.206253
 C     1.20296     2.84049     -0.216000
 C     -1.20944     1.46171     0.206253
 C     0.00000     3.54034     0.00000
 C     -1.20296     2.84049     0.216000
 H     0.00000     -4.62590     0.00000
 H     -2.12200     -3.38761     -0.395378
 H     -2.13673     -0.938003     -0.401924
 H     2.12200     -3.38761     0.395378
 H     2.12200     3.38761     -0.395378
 H     -2.13673     0.938003     0.401924
 H     0.00000     4.62590     0.00000
 H     -2.12200     3.38761     0.395378
 H     2.13673     0.938003     -0.401924
 H     2.13673     -0.938003     0.401924
end
nwpw
  simulation_cell
     lattice_vectors
      2.000000e+01 0.000000e+00 0.000000e+00
      0.000000e+00 2.000000e+01 0.000000e+00
      0.000000e+00 0.000000e+00 2.000000e+01
  end
  mult 2
  np_dimensions -1  -1 
  tolerances 1e-7  1e-7
end
driver
  default
end
task pspw optimize


The job completed in 1640 seconds when NWChem was compiled with framework Accelerate and 1670 seconds when using OpenBLAS 0.28. This was using 4 processor cores, Intel i7-4770HQ CPU @ 2.20GHz, running OS X Yosemite, GNU compilers. The mp2_si2h6 QA job showed a smaller performance difference. If there is an even more BLAS-heavy job I could try for comparison I would like to do so.

The wiki unfortunately gives bad advice for BLASOPT on Yosemite which results not just in a slow build but (IME) build failure: http://nwchemgit.github.io/index.php/Compiling_NWChem


Forum >> NWChem's corner >> Compiling NWChem