Intel IA32 Linux
Compilers
The following F90/F77 compilers are recognised by
the Cactus configuration system. (Note: These are just
the compilers which we have available, other compilers
can be easily added using configuration options with
the make system, this is usually simply a matter of
adding the right libraries for linking).
-
Absoft
-
Portland Group
-
GNU Fortran 77 (g77)
The GNU F77 compiler is free and the GPL license means
that it can be easily ported to new platforms. For
this reason it may be wise to stick to F77 if features
of F90 aren't needed.
-
Lahey
-
Intel
The Intel compiler is free, and from our experience
performs very well. The only drawback is that it can
require a lot of memory for compiling large files.
- Pacific/VAST F90
The Pacific F90 compiler isn't really a compiler, but
a translator to F77 which requires that GNU F77 is
available on your system. The Pacific F90 translator is
free, for the unoptimised version. We have seen some
problems with uncompilable F77 code being generated (for
example for CactusEinstein/AHFinder).
Linux FAQ
Known Problems
-
Preprocessor Bug in RedHat 7.x
The C preprocessor /lib/cpp distributed with
Redhat 7.x causes problems with Fortran code
(Fortran source code is by default passed through a
preprocessor). The C preprocessor can change the spacings
in a file, which is fine for C but can seriously affect
Fortran code. If this is happening, you will see errors
such as
***************************************************************************
Preprocessing
/Cactus_hydratest/arrangements/CactusPUGH/Interp/src/interp3.F
Compiling
/Cactus_hydratest/arrangements/CactusPUGH/Interp/src/interp3.F
Pacific-Sierra Research vf90 Personal V3.4N5 12:49:17 10/31/01 f90 to f77
subroutine INTERP3_CCTK_REAL
Syntax, line 140: Non-blank characters in columns 1-5 of continuation line
subroutine INTERP3_CCTK_COMPLEX
Syntax, line 319: Non-blank characters in columns 1-5 of continuation line
function LINEAR
function INTERP_QUAD
function CUBIC
gmake[3]: *** [interp3.F.o] Error 16
gmake[2]: *** [make.checked] Error 2
gmake[1]: ***
There are two suggested ways to get around this problem:
-
If you are using Beta 11 or higher, try using the
architecture independent Cactus preprocessor which we
are developing by configuring with
make <config>-config FPP='$${PERL} $${CCTK_HOME}/lib/sbin/cpp.pl'
-
Another way around this problem is to
get hold of a copy of cpp from an
earlier RedHat distribution (here is cpp from 6.2)
and either replace the original cpp, or
place it somewhere else and add the option
CPP=<location of new cpp> when you
configure Cactus.
- Pacific-Sierra Compiler
The free version of the Pacific Sierra compiler can
generate incompilable code, this is a problem with
the translator. The error messages look something like:
Compiling
/scratch/dorband/Cactus/arrangements/CactusEinstein/AHFinder/src/AHFinder_pow.F \
Pacific-Sierra Research vf90 Personal V3.4N5 19:44:34 11/20/01 f90 to f77
module F1COM
subroutine POWELL
Warning, line 167:
Too large to translate -- reduce program or loop size (RPNGEN)
Fatal, line 198: Internal error detected -- please report (EXPGET)
Syntax, line 198: Duplicate I/O specifier.
subroutine LINMIN
Warning, line 497:
Too large to translate -- reduce program or loop size (RPNGEN)
function F1DIM
The fix is to either do what the message says and reduce the code size, or move to a different
compiler.
- Pacific-Sierra Compiler
(FAQ No.3) I get 'g77: cannot specify -o with -c or -S and multiple compilations' when
compiling with the Pacific VAST90 compiler.
If the libvast90.a library is in the same directory as your F90 script,
F90 passes -lvast90 to the underlying G77 compile, which is of course only
a valid switch when linking. The solution is to seperate these files,
e.g. into bin and lib directories.
- Intel Compiler and isnan
There is a bug in the isnan function with
the Fortran Intel compiler (for IA32 and IA64).
This bug means that any thorn using isnan
(for example CactusUtils/NaNChecker) will
produce inconsistent results.
- Absoft Compiler
The Absoft fortran compiler (Version 6) produces the
wrong answers for CactusEinstein/AHFinder and
CactusBench/BenchADM if
optimisation is not used.
Compiling Problems
Portland Compiler
It seems important to put the debug flags into the F90_DEBUG_FLAGS macro (as they should be) instead of F90_FLAGS otherwise the compiler
produces executables that the Cactus configuration mechanism cannot handle (e.g. the Parameters all have zero value because of problems with underscores on common blocks).
Intel Compiler
If you get the linking error
/usr/bin/ld: cannot find -lIEPCF90
Then you need to append ${IA32ROOT}/lib to your LD_LIBRARY_PATH environment variable.
You can do this directly in your shell setup file (e.g. .cshrc) or alternatively there is a
script $IA32ROOT/bin/iccvars.csh which does this for you.
|