Department of Electrical and Computer Engineering
Information Infrastructure Institute

Compiling

Application Development

In order for your application to run on the Blue Gene, it must be compiled against the Blue Gene MPI libraries for the Power architecture. Because the Blue Gene is a specialized computer, there are certain limitations not found in other systems:

  • Applications must use MPI.
  • Applications must be statically linked, no shared libraries.
  • Application must be single-threaded.
  • Most Unix system calls are not allowed, e.g. fork, exec, signal.
  • There is no local storage for each node (eg. /tmp)

Compilers

The Blue Gene comes with two sets of compilers: the GNU compiler suite (eg. gcc), and the IBM compiler suite (eg. xlc). Each suite also has an associate cross-compiler for building parallel applications. The cross-compilers all have names beginning with 'blrts_':

IBM compilers: blrts_c89, blrts_cc, blrts_f90, blrts_fort77, blrts_xlc, blrts_xlC, blrts_xlc++, blrts_xlf90, blrts_c99, blrts_f77, blrts_f95, blrts_xlf, blrts_xlf95

GNU compilers: blrts_g++, blrts_gcc, blrts_g7

Header files

The MPI and various Blue Gene header files are in the directory /bgl/BlueLight/ppcfloor/bglsys/include/ . You will therefore need to include -I/bgl/BlueLight/ppcfloor/bglsys/include with your compiler flags.

Libraries

Every Blue Gene program must be linked with at least four libraries which are in the directory /bgl/BlueLight/ppcfloor/bglsys/lib/ . The main 4 required libraries are libmpich.rts.a, libdevices.rts.a, libmsglayer.rts.a, and librts.rts.a. That is all you need for C and Fortran. The library libcxxmpich.rts.a is also required to compile C++ code. The compiler option -fno-underscoring is required by blrts_g77.

There is more detailed information on compiling here.

Makefile

Here is a sample Makefile to use as a reference.