HomerReid / scuff-em

A comprehensive and full-featured computational physics suite for boundary-element analysis of electromagnetic scattering, fluctuation-induced phenomena (Casimir forces and radiative heat transfer), nanophotonics, RF device engineering, electrostatics, and more. Includes a core library with C++ and python APIs as well as many command-line applications.
http://www.homerreid.com/scuff-em
GNU General Public License v2.0
125 stars 50 forks source link

Installation issue #152

Closed JacopoMarcheselli closed 6 years ago

JacopoMarcheselli commented 6 years ago

Dear prof. Reid,

I've been trying to install scuff-em on the cluster of my institution but I couldn't make it.

When I'm using gnu compiler (gnu 4.9.2) along with openmpi 1.8.3, hdf5 1.8.12 and mkl 11.1 (for the lapack and blas libraries) I found no way to make it recognise all the libraries during the configuration process. They probably are in non-standard folders, but when I explicitly point to the right folders in the environment variables the compilers (both C++ and Fortran) simply refuses to pass the check and cannot create executables. I tried many possible solutions and all the different folders and combinations but I couldn't make it work.

In attachment I put the log of configuration and the environment variables when I try to use the dynamical link to mkl: config_gnu.txt env_gnu.txt

So I switched to intel compiler (intel 14.0 which includes icc and ifort, the other libraries are the same), in order to make it easier to find mkl libraries, which actually happened. The configure I used is this:

./configure --with-hdf5-includedir=$HDF5_INC --with-hdf5-libdir=$HDF5_LIB --prefix=/home/jmarches/scuff-em.bin/ --with-openmp

I attached the configure log file and the environment variables:

config_intel.txt env_intel.txt

The configuration process ends up succeeding, but when it comes to compiling I get this error:

" libhrutil.cc(1028): error: identifier "FE_INVALID" is undefined feenableexcept(FE_INVALID | FE_OVERFLOW); ^

libhrutil.cc(1028): error: identifier "FE_OVERFLOW" is undefined feenableexcept(FE_INVALID | FE_OVERFLOW); ^

libhrutil.cc(1028): error: identifier "feenableexcept" is undefined feenableexcept(FE_INVALID | FE_OVERFLOW); ^

compilation aborted for libhrutil.cc (code 2) "

For which I did not find any functioning solution

May I ask for help?

Cheers, Jacopo

HomerReid commented 6 years ago

Your build with the GCC compilers is failing because you aren't quite specifying the configure options correctly. In particular, you are specifying directories to the --with-blas and --with-lapack options, whereas in fact those options want the full paths to the actual binary files. So you want to say something like

configure --with-blas=--with-blas=/u/shared/programs/x86_64/mkl/11.1.3/composer_xe_2013_sp1.3.174/mkl/lib/intel64/libmkl_intel_ilp64.a

and similarly for --with-lapack. (I have actually never tried to link the MKL libraries with GCC-compiled code, so you may run into further snags in trying to do this.)

On the other hand, your build with the intel compilers seems to be failing because the fenv.h file provided in the intel development environment is not compatible with the standard POSIX fenv.h file. I don't know exactly why this would be, since the fenv.h file on my installation of the intel compilers does have all the symbols yours seems to be missing (FE_INVALID, etc.) Could you send me the fenv.h file that is accessed by your version of the intel compilers? Alternatively, you could just comment out the offending lines in libhrutil.cc as they are not crucial for the operation of the code.