Compiling and linking code
Compilers
Language  | 
Compiler name  | 
|---|---|
C  | 
blrts_xlc  | 
C++  | 
blrts_xlC  | 
F77  | 
blrts_xlf  | 
F90  | 
blrts_xlf90  | 
F95  | 
blrts_xlf95  | 
- The system include files are in 
/bgl/BlueLight/ppcfloor/bglsys/include - The mpi and system driver libraries are under 
/bgl/BlueLight/ppcfloor/bglsys/lib- The libraries to link with must be listed in this order: 
-lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts 
 - The libraries to link with must be listed in this order: 
 - You may also use these scripts in 
/contrib/bgl/binto automatically set the include and MPI libraries for you:- mpxlc
 - mpxlC
 - mpxlf
 - mpxlf90
 
 
 Note that 
mpicc and mpif77 are available, but they use the GNU gcc compilers, which do not offer the level of performance of the XL compilers. Please use the XL compilers when compiling your codes.
Compiler flags
- Optimization levels:
	
-O: good place to start, use with -qmaxmem=64000-O2: same as -O-O3 -qstrict: tries more aggressive optimization, while strictly obeying program semantics-O3: aggressive, allows re-association, will replace division by multiplication with the inverse-qhot: turns on high-order transformation module will add vector routines, unless -qhot=novector- check listing: 
-qreport=hotlist 
- check listing: 
 
 - start with 
-g -O -qarch=440 -qmaxmem=64000 
Example
- Here's an example of compiling and linking a simple program:
 
bash$ blrts_xlc -c example.c -I/bgl/BlueLight/ppcfloor/bglsys/include bash$ blrts_xlc -o example example.o -I/bgl/BlueLight/ppcfloor/bglsys/include -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts
- The same compile using 
mpxlcfrom/contrib/bgl/bin: 
bash$ mpxlc -c example.c bash$ mpxlc -o example example.o
Note: The compile and link flags are the same for Fortran77/90/95 and C/C++