***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
Setting the environment for using Intel compilers
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
How to build 32/64 bit applications?
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
How do I know which MPI is selected in my current environment?
You can check the module you have loaded by module list or use which command to find out where the mpi commands refer to
Which sequential compiler MPI libraries use?
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.