Compiling with GotoBLAS2


  • Guest -
I've seen a posting about using BLAS here, but there was no answer. I can build NWchem-6.0 with GotoBLAS and Intel compiler, using the build_nwchem script with added HAS_BLAS=yes and BLASOPT="/mypath/libgoto2-intel.a -lpthread". It does link OK. But then almost every QA test fails for bad DGEMM in the autosym procedure. Is it possible to fix this?

--
With best regards,
Grigory Shamov

Forum Regular
Hi Grigory,

Can you send us your output file ?

Best,
-Niri

Niri Govind
NWChem Developer
niri.govind@pnl.gov

  • Guest -
Dear Niri,

Thank you, I've just sent my output and build_nwchem to your email!

--
With best regards,
Grigory Shamov

  • Guest -
Same thing with gfortran and corresponding GotoBLAS2
The BLAS library seem to be OK in itself, for I was able to build GAMESS-US with it.

--
With best regards,
Grigory Shamov

  • Guest -
Could be an i8 problem in GotoBLAS
Quote: Apr 7th 10:10 pm
The BLAS library seem to be OK in itself, for I was able to build GAMESS-US with it.

--
With best regards,
Grigory Shamov

  • Guest -
Could be an i8 problem in GotoBLAS
GotoBLAS by default is compiled with the -i4 option (or the corresponding option) and therefore won't take 64-bit array pointers.

Forum Vet
How to link NWChem against GotoBLAS on 64-bit platforms
There are two alternatives for linking NWChem against GotoBLAS2 on 64-bit platforms

1)
Install GotoBLAS2 with 64bit integers. This is accomplished by compiling the GotoBLAS2 library after having by edited the GotoBLAS2 Makefile.rule file and un-commenting the line containing the INTERFACE64 definition. In other words, the line
#INTERFACE64 = 1
needs to be changed to
INTERFACE64 = 1

On the NWChem side, you simply need to set the environmental variable BLASOPT to the GotoBLAS2 library location

2)
If GotoBLAS2 has not been compiled with 64-bit integers (and I cam guessing it is the case for Grigory), then you need
to use the 64_to_32 procedure described in the $NWCHEM_TOP/install file

1) cd $NWCHEM_TOP/src
2) make clean
3) make 64_to_32
4) make USE_64TO32=y HAS_BLAS=yes BLASOPT=" optimized BLAS"

e.g. for IBM64: make USE_64TO32=y HAS_BLAS=yes BLASOPT="-lessl -lmass"

More details were recently discussed in the following post
http://nwchemgit.github.io/Special_AWCforum/sp/id979

  • Guest -
Thanks,
Dear Edoardo,

Thank you; I've compiled NWChem specifying the 64bit pointers explicitly in MKL, as follows:

export BLASOPT="-L$MKLROOT/lib/intel64 -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread -lm"

And it seems to work now. Previously, I let the compiler choose with simple -mkl switch, and it perhaps picked the 32bit ones.

--
Grigory Shamov


Forum >> NWChem's corner >> Compiling NWChem