Co-Array Fortran at Rice

CAF Home | Documentation | Download | Examples | Publications | Performance | Links | Project Contacts


Last Updated 08/07/05

Downloading the Sources

To reduce the effort needed to distribute the Rice Co-Array Fortran compiler (cafc), we have opted to distribute it in source form only. Source files for the compiler are distributed via anonymous CVS checkout.

  1. To retrieve the source files from CVS, you will need to download hipersoft-anonssh
    an ssh script that contains a key that will grant you read-only access to the Hipersoft CVS repositories at Rice University. Save this script in ${HOME}/bin/hipersoft-anonssh and change permissions to make it executable.

  2. Set up the required CVS environment variables to enable you to access the CAFC repository.

    (csh variants)
    setenv CVS_RSH ${HOME}/bin/hipersoft-anonssh
    setenv CVSROOT :ext:anoncvs@koolkat2.cs.rice.edu:/Volumes/cvsrep/developer

    (sh variants)
    export CVS_RSH=${HOME}/bin/hipersoft-anonssh
    export CVSROOT=:ext:anoncvs@koolkat2.cs.rice.edu:/Volumes/cvsrep/developer

  3. Use CVS to check out the latest stable cafc sources using the command

    cvs co -r cafc_0_9 cafc


External Packages

cafc uses the Open64/SL Fortran 90 infrastructure and supports two communication libraries: ARMCI and GASNet.

ARMCI requires the MPI library. Both ARMCI and GASNet might require other packages depending on the communication interconnect (see installation instructions for ARMCI and GASNet).

Open64 Notes:
Review the instructions to download Open64.

cvs co Open64

Building:
1. Change to Open64 directory, cd Open64/osprey1.0

2. Change to a platform specific target directory:
- Linux (IA32): targ_ia32_ia64_linux
- Linux (IA64): targ_ia64_ia64_linux
- Tru64: targ_alpha_tru64
- IRIX64: targ_mips_irix

3. Build mfef90, whirl2f, ir_tools and libf90caf:
cd crayf90/sgi; make ; cd -
cd whirl2f; make; cd -
cd ir_tools; make; cd -
cd libf90caf; make ; cd -

ARMCI Notes:
Review the information about downloading and building ARMCI. It might require vendor-specific libraries, such as GM, Quadrics, SHMEM, pthreads, etc. ARMCI requires the MPI communication library.

GASNet Notes:
Review the information about downloading and building GASNet. It might require MPI and/or vendor-specific libraries, such as GM, Quadrics, SHMEM, pthreads, etc. cafc was tested with GASNet 1.5, which is a development version. GASNet 1.6 (release version) should be available on August 15th, 2005.

MPI Notes:
Review the information about downloading and building MPICH, the open-source implementation of MPI. Information about vendor MPI implementations can be obtained from vendors' web sites.


Building cafc

  1. Change to cafc directory:
    cd cafc
  2. Run the configure script. Use configure --help for all available options. The most important options are:
    --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local]
    --with-Open64 Open64 root directory
    --with-armci ARMCI root directory
    --with-gasnet GASNet root directory
    --with-gasnet_conduit GASNet conduit
    --with-mpi MPI root (use --with-mpi=/usr for most vendor MPI distributions)
    --with-gm Myrinet GM root (where applicable)

    To build cafc, a user should specifiy only one of the ARMCI or GASNet communication libraries.

    The configure script will try to infer the vendor C, C++ and Fortran 90 compilers, which are used to build the runtime library. The default values are:
    - Linux (IA32): icc, icc, ifort
    - Linux (IA64): icc, icc, ifort
    - Alpha: cc, cxx, f90
    - IRIX64: cc, CC, f90

    The user can optionally specify the C++ and F90 compilers:
    --with-VendorCXX vendor C++ compiler
    --with-VendorF90 path to Fortran compiler (/usr/local/bin/f90)

    The configure script will choose the GNU C/C++ compilers in order to build
    the cafc compiler.
    On Alpha machines, the Compaq C/C++ compilers can be used by specifying
    CC=cc CXX=cxx in the environment before running configure.
    On IRIX64 machines, the MIPSPro C/C++ compilers can be used by specifying
    CC=cc CXX=CC in the environment before running configure.
  3. Install the compiler and run-time libraries:
    make install

Supported Platforms

So far cafc was successfully built and tested on the following platforms:

  1. Pentium+Ethernet workstations running Linux32 RedHat 7.3-9.0 with
    - GNU C++ 3.4.4
    - binutils 2.15
    - Intel C++ and Fortran compilers 9.0/8.x
    - MPICH 1.2.7
    - ARMCI 1.1
    - GASNet 1.5 using the MPI conduit
  2. Itanium2 + Myrinet 2000 running Linux64 RedHat with
    - GNU C++ 3.4.4
    - binutils 2.15
    - Intel C++ and Fortran compilers 9.0/8.x
    - Myrinet GM 1.6.5
    - MPICH-GM 1.2.6
    - ARMCI 1.1
    - GASNet 1.5 with the gm conduit
  3. Itanium2 + Quadrics II running Linux64 RedHat with
    - GNU C++ 3.4.4
    - binutils 2.13
    - Intel C++ and Fortran compilers 8.1
    - Quadrics II
    - Quadrics MPI
    - ARMCI 1.1
    - GASNet 1.5 with the elan conduit
  4. SGI Altix 3000 running Linux64 RedHat 7.2 with
    - GNU C++ 3.3.2
    - binutils 2.13
    - Intel C++ and Fortran compilers 8.1
    - SGI MPI
    - ARMCI 1.1
    - GASNet 1.5 with the shmem conduit
    - SHMEM
  5. Alphaserver SC + Quadrics running OSF1 Tru64 V5.1A with
    - Compaq C++ compiler V6.5 or GNU C++ 3.3.2
    - Compaq Fortran V5.5
    - Compaq MPI
    - Quadrics ELAN 3 libraries
    - ARMCI 1.1
  6. SGI Origin 2000 running IRIX64 6.5 with
    - MIPSPro C/C++ compiler 7.3.1.3m
    - MIPSPro F90 compiler 7.3.1.3m
    - IRIX MPI
    - ARMCI 1.1

Hipersoft | LACSI | GrADS | Compaq | NCSA | NPACI © 2003 Rice University