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.
- 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.
- 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
- 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
- Change to cafc directory:
cd cafc
- 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.
- Install the compiler and run-time libraries:
make install
Supported Platforms
So far cafc was successfully built and tested on the following platforms:
- 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
- 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
- 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
- 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
- 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
- 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