***THIS HAS BEEN MOVED TO THE ECDF WEB SITE***

Compiling and Porting codes

Serial Codes

There are GNU compilers and Intel compiler suites on Eddie for users to build 32/64 bit C, C++ and Fortran application codes.

Compiler

Version

Commands

Description

GNU

3.4.5

gcc(C), g++(C++), g77(Fortran 77)

default gnu compilers makes it easy to port codes to Eddie

GNU

4.1.0

gfortran(Fortran 90)

gnu fortran90 compiler

Intel

9.1

icc(C,C++), ifort(Fortran 77/90)

Intel commercial compilers potentially provide increased performance for codes running on Intel EMT64 architecture

Build application codes with the following syntax:

gcc [options] file.c
g++ [options] file.c
g77 [options] file.f
gfortran [options] file.f90

icc [options] file.c
ifort [options] file.f
ifort [options] file.f90

You can use the environment modules to set the appropriate environment variables:

module add intel/cce 
module add intel/fce

or manually set environment variables yourself:

export PATH=/usr/local/Cluster-Apps/intel/cce/.../bin:/usr/local/Cluster-Apps/intel/fce.../bin:$PATH
export LD_LIBRARY_PATH=/usr/local/Cluster-Apps/intel/cce/.../lib:/usr/local/Cluster-Apps/intel/fce/  \
.../lib:$LD_LIBRARY_PATH

GNU compilers by default generate 32 bit code. If you want to generate 64 bit codes, add the flag -m64 to your compile/link statements. Intel compiler suites provide seperate 32 bit and 64 bit compilers: cc,fc (32bit) cce,fce(64bit)

MPI code

Eddie provides various MPI libraries for building MPI-based parallel codes. See Picking a proper MPI library page for performance discussions of the various MPI libraries.

MPI

Version

Commands

Description

LAM/MPI

7.1.3

mpicc (MPI C,C++), mpif77 (MPI Fortran77), mpif90 (MPI Fortran90)

support Gigabit Ethernet

OpenMPI

1.2.2

mpicc (MPI C,C++), mpif77 (MPI Fortran77), mpif90 (MPI Fortran90)

support Gigabit Ethernet and Infiniband

MPICH

1.2.7p1

mpicc (MPI C,C++), mpif77 (MPI Fortran77), mpif90 (MPI Fortran90)

support Gigabit Ethernet

MPICH2

1.0.5

mpicc (MPI C,C++), mpif77 (MPI Fortran77), mpif90 (MPI Fortran90)

support Gigabit Ethernet

Infinipath MPI

2.1

mpicc (MPI C,C++), mpif77 (MPI Fortran77), mpif90 (MPI Fortran90)

support Infiniband

Build MPI codes with the following syntax:

mpicc [options] file.c
mpic++ [options] file.cpp
mpif77 [options] file.f
mpif90 [options] file.f

You can check the module you have loaded by module list or use which command to find out where the mpi commands refer to

All the MPI libraries on Eddie have been configured to support both GNU AND Intel compilers. You need specify the proper combination before building application codes. To avoid mistakes, we strongly recommend environment module tool.

Example 1 To select OpenMPI with Intel C compilers:

module add intel/cce
module add openmpi/intel

Example 2 To select LAM/MPI with GNU compilers:

module add lam/gcc

OpenMP codes

OpenMP is supported by Intel compilers to enable shared memory parallel codes running on Eddie. To compile OpenMP code, you need the Intel compiler command (icc, ifort) plus the flag -openmp

module add intel/cce
icc -openmp [ other options ] file.c

Global Array codes

We hope to deploy the Global Array environment on Eddie at a future date.

Compiling and Porting codes (last edited 2007-08-07 13:53:59 by OrlandoRichards)