Compiling
Important Considerations
On Blue Gene, the front-end nodes have different processors and run a different operating system than the compute nodes, therefore, your codes must be cross-compiled. Discovery of system characteristics during compilation (e.g., via configure) may also require code changes. Moreover, some system calls are not supported by the compute node kernel, which runs on the compute nodes.
Compiler Versions and Paths
Currently XL Fortran V10.1 and XL C/C++ V9.0 are installed on Blue Gene. The paths to the compilers should be set by default in your login shell.
Message Passing (MPI) Programs
On Blue Gene, MPI is based on MPICH2 from ANL. You can use MPI wrappers (mpxlf, mpxlf90, mpcc, mpCC) for compilation and linking. The path to the wrappers should be set by default in your login shell.
Compiler Options
| Option | Definition |
| –qarch=440 | uses only single FPU per processor (minimum option). |
| –qarch=440d | allows both FPUs per processor (alternate option). |
| –qtune=440 | use after –qarch, to avoid warnings. |
| –O3 | gives minimal optimization with no SIMDization. |
| –O3 –qhot=simd | adds SIMDization. |
| –O4 | adds compile-time interprocedural analysis. |
| –O5 | adds link-time interprocedural analysis. |
| –qdebug | gives SIMDization info. |
The –qarch option is essential. Currently, –O3 –qarch=440 is recommended, though –O3 –qarch=440d is a reasonable alternative. For example, to compile a simple Fortran 90 program parallel.f with MPI routines included, you could use:
mpxlf90 –O3 –qarch=440d –o parallel parallel.f



