Compiling GULP on a Linux Server

I would like to use GULP in parallel on a Linux server.

However, when moving the GULP source code to the server and trying to compile (in serial for the moment) I get this output:

gfortran -O3 -ffpe-summary=invalid,zero,overflow -I… -I/usr/local/include/ -DFLUSH -DNOFOX -c …/datatypes.F90
f951: error: unrecognized command line option “-ffpe-summary=invalid,zero,overflow”
make: *** [datatypes.o] Error 1
mv: cannot stat `gulp’: No such file or directory

Having read around a bit I understand this could be an issue with incorrect direction to libraries, but I am unsure and was wondering if anyone else has had a similar issue?

I will try and redirect to the correct libraries and update if that solves the problem, any help in the meantime is greatly appreciated!

Connor

Hi Connor. It looks like you must be using an old version of gfortran. This option was added from version 4.9 onwards and still exists in the current release (version 10). So there are two possible solutions:

  1. Update your version of gfortran to a more recent one (which is probably a good idea since there may be features of the latest fortran standards that may not be supported by older versions). I would recommend using version 8 or 9, since 10 might cause issues due to some of the new checking features implemented. Version 10 will be supported in the next release of GULP (6.0).
  2. Edit mkgulp to remove the -ffpe-summary option. This is designed to trap errors and so not essential to the running of the code.
    Hope that solves the issue.

Julian

Hi Julian,

Thanks for the quick response! That solved that issue.

However, possibly in relation to the version of gfortran I have installed: GNU Fortran (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3), when running the make file now I have this output:

gfortran -O3 -I… -I/usr/local/include/ -DFLUSH -DNOFOX -c …/m_alamode.F90
…/m_alamode.F90:1207.45:

call execute_command_line(runanphon,wait=.true.,exitstat=status)
1
Error: Keyword argument requires explicit interface for procedure ‘execute_command_line’ at (1)
…/m_alamode.F90:1227.45:

call execute_command_line(runanphon,wait=.true.,exitstat=status)
                                         1

Error: Keyword argument requires explicit interface for procedure ‘execute_command_line’ at (1)
…/m_alamode.F90:1354.45:

call execute_command_line(runanphon,wait=.true.,exitstat=status)
                                         1

Error: Keyword argument requires explicit interface for procedure ‘execute_command_line’ at (1)
…/m_alamode.F90:337.42:

call execute_command_line(runalm,wait=.true.,exitstat=status)
                                      1

Error: Keyword argument requires explicit interface for procedure ‘execute_command_line’ at (1)
…/m_alamode.F90:936.44:

  call execute_command_line(runalm,wait=.true.,exitstat=status)
                                        1

Error: Keyword argument requires explicit interface for procedure ‘execute_command_line’ at (1)
…/m_alamode.F90:1026.44:

  call execute_command_line(runalm,wait=.true.,exitstat=status)
                                        1

Error: Keyword argument requires explicit interface for procedure ‘execute_command_line’ at (1)
make: *** [m_alamode.o] Error 1
mv: cannot stat `gulp’: No such file or directory

It looks to me like an issue with compiler not understanding some new code features as you said. However, I don’t code in Fortran unfortunately, so I am not entirely sure what the error means.

If you know of a way around this issue that would be great! Or if it would be more expedient to download an older version of GULP I may just do that. Unfortunately, updating gfortran is not really possible at the moment, as I am not root on the server and the server manager is on holiday.

I believe the parallel features of GULP are only on the newer versions however, so perhaps the use of an older version would still not be useful?

Thanks again,

Connor

Hi Connor. You are correct - the version of gfortran is too old to compile the latest GULP because it doesn’t support this new feature of Fortran. If you use version 5.0 of GULP then it should avoid this problem since the use of the execute_command_line only appears from 5.1 onwards.

In regard to the parallelism, GULP has been parallel for a long time and so much older versions will allow you to use MPI. The major change was that from version 5.0 onwards it was possible to use MPI with second derivative calculations as distributed memory for the Hessian and dynamical matrices was added.

Julian

Hi Julian. Okay, thanks a lot for all your help!

Hi Julian. I had put off trying to compile without an updated compiler, but it seems the IT technician is quite busy at the moment, and unable to help.

So I have tried to compile gulp-5.0, and have run into a series of dumpgen.f90 outputs that look like this:

…/dumpgen.f90(610): remark #8291: Recommended relationship between field width ‘W’ and the number of fractional digits ‘D’ in this edit descriptor is ‘W>=D+7’.
write(iout,’(2(i4,1x),3(g14.8,1x))’) nfv,nff,fco,fca,fcp
---------------------------------^

Along with a final output which looks like this:

ipo: warning #11010: file format not recognized for /lib/libpthread.so.0
ipo: warning #11010: file format not recognized for /usr/lib/libm.so
ipo: warning #11010: file format not recognized for /usr/lib/libdl.so
ipo: warning #11010: file format not recognized for /usr/lib/libdl.so
ipo: warning #11010: file format not recognized for /usr/lib/libm.so
ipo: warning #11010: file format not recognized for /usr/lib/librt.so
ipo: warning #11010: file format not recognized for /usr/lib/libnsl.so
ipo: warning #11010: file format not recognized for /usr/lib/libutil.so
ipo: warning #11010: file format not recognized for /usr/lib/libm.so
ipo: warning #11010: file format not recognized for /usr/lib/libdl.so
ipo: warning #11010: file format not recognized for /usr/lib/libm.so
ipo: warning #11010: file format not recognized for /lib/libpthread.so.0
ipo: warning #11010: file format not recognized for /lib/libc.so.6
ipo: warning #11010: file format not recognized for /lib/ld-linux.so.2
ipo: warning #11010: file format not recognized for /usr/lib/libdl.so
ipo: warning #11010: file format not recognized for /lib/libc.so.6
ipo: warning #11010: file format not recognized for /lib/ld-linux.so.2
ld: cannot find -lmkl_scalapack_lp64
make: *** [gulp] Error 1
mv: cannot stat `gulp’: No such file or directory

Is this another issue with the compiler being out of date, or is it something that is potentially fixable? Thanks again, I realise it would be a lot simpler if I could just use the up to date compilers!

Hi Connor. There are 2 points here:

  1. The warnings about “field width” can be ignored - this is just an advisory from the compiler.
  2. The fatal error at the end is because you are trying to use the Intel compiler to link Scalapack from MKL but it’s either not installed or not in the location that GULP expects. You should make sure that you’ve loaded the Intel maths libraries (usually via “module load”) and that the location matches that specified in mkgulp. This also will require you to have compiled GULP with the Intel compiler otherwise the code won’t link.
    If trying to compile in parallel it’s important that you have a consistent mpif90 with the required maths libraries (Scalapack, Blacs, etc) otherwise there will be compile/link errors.