[MAINIMAGE]
 
  Welcome
  Community
  Documentation
  Download
  Machines
 
Projects 
For Developers 
Dev Plans 
Bug Tracking 
Feature Requests 
Mailing Lists 
Viz Tools 
  Showcase
  Links
 



Quick Subscription:
News Mailing List


more Mailing Lists
  Search CactusCode:


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

  1. 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:

    1. 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'

    2. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

  1. 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).

  2. 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.

      

Cactus Webmaster Last Modified: Monday, 01-Mar-2004 17:17:59 CST