BlueGene Homepage BlueGene Homepage BlueGene Homepage BlueGene Homepage

Compiler Invocation on NYBlue/P

Overview

IBM Cross Compilers - Unwrapped

IBM Cross Compilers - MPI Wrappers

IBM Native Compilers

GNU Cross Compilers - Unwrapped

GNU Cross Compilers - MPI Wrappers

GNU Native Compilers

Compiler Invocation Introduction

IBM XL C/C++ and IBM XL Fortran documentation.

Back to User Guide

Overview

To run a code on the compute nodes you must compile and link it using a "cross-compiler" on the front-end (login node). A cross-compiler produces an executable that will run on the compute nodes.

If you instead use a native compiler, the resulting executable will run on the front-end but not on the remote nodes. Also, you can use the native compilers to compile and link only serial code because there are no mpich libraries on the front-end.

Currently you should run your applications on the compute nodes only. The native compilers can be used for compiling and linking the serial portion of your parallel application, as described on the Compiler Invocation page .

The locations and names of the "unwrapped" cross compilers appear below. For each such there is a description of the corresponding mpich-wrapper cross compiler, which is just a wrapper script that makes the cross compiler a bit easier for the user to invoke.

Thread-safe versions of each compiler have a _r suffix, for example xlf90_r .

Back to Top of Page

IBM Cross Compilers - Unwrapped

Unless and until you develop expertise with the IBM cross compilers, rather than use the unwrapped version, you're better off using the IBM cross compilers with mpi wrappers.

The unwrapped XL Fortran 77, Fortran 90, Fortran 95, Fortran 2003, C, and C++ cross compilers can be found under /opt/ibmcmp in

xlf/bg/11.1/bin (Fortran 77, 90, 95, and 2003),
vacpp/bg/9.0/bin (C)
vacpp/bg/9.0/bin (C++).

The various invocation names for these compilers and their meanings are described in the Compiling Programs section of the Using the XL Compilers for Blue Gene manual. Note that all cross compiler invocation names begin with the prefix bg, e.g. bgxlc .

For a given unwrapped ibm cross compiler, you can look at the corresponding wrapped version to see how you would link required libraries and incorporate required include files, for example for the unwrapped bgxlf you can look at the wrapper mpixlf77.

Back to Top of Page

IBM Cross Compilers - MPI Wrappers

In place of

bgxlf, bgxlf90, bgxlf95, bgxlf2003, bgxlc, and bgxlC

you can use

mpixlf77, mpixlf90, mpixlf95, mpixlf2003, mpixlc, and mpixlcxx respectively

located in

/bgsys/drivers/ppcfloor/comm/bin.

These are mpich wrappers for those compilers. Usage is very similar to other mpich wrapper use. Environment variables can optionally be used to set compiler and linker flags.

Invocation examples for Bash shell:

Back to Top of Page

IBM Native Compilers

You would use these to compile and link serial code portions only of your application on the front-end, as the first step of a larger objective of compiling and linking your parallel application to run on the compute nodes.

The native compiler invocation names do not begin with the bg prefix, for example the native IBM Fortran 77 invocation is xlf .

The native Fortran 77 (xlf), Fortran 90, Fortran 95 and Fortran 2003 compilers are located in

/opt/ibmcmp/xlf/bg/11.1/bin,

and the native C (xlc) and C++ compilers ( xlc++ and xlC) are in

/opt/ibmcmp/vacpp/bg/9.0/bin.

Regarding the invocation names to use, the Compiling XL Fortran Programs section of the IBM XL Fortran for Linux Compiler Reference and the Invoking the Compiler section of the IBM XL C/C++ for Linux Compiler Reference describe these.

Back to Top of Page

GNU Cross Compilers - Unwrapped

Unless and until you develop expertise with the GNU cross compilers, rather than use the unwrapped version, you're better off using the GNU cross compilers with mpi wrappers.

The GNU Fortran, C, and C++ cross compilers can be found under
/bgsys/drivers/ppcfloor/gnu-linux/bin

For example powerpc-bgp-linux-gcc is gcc. Note that /usr/bin/gcc should not be used for cross-compiling, it does not cross compile, it is the native gcc compiler.

For a given unwrapped gnu cross compiler, you can look at the corresponding wrapped version to see how you would link the libraries and incorporate the include files, for example for the unwrapped g77 you can look at the wrapper mpif77.

Back to Top of Page

GNU Cross Compilers - MPI Wrappers

In place of

g77, gcc, and g++

you can use

mpif77, mpicc, and mpicxx respectively

located in /bgsys/drivers/ppcfloor/comm/bin. These are mpich wrappers for those compilers. Usage is very similar to other mpich wrapper use. Environment variables can optionally be used to set compiler and linker flags.

Invocation examples for Bash shell:

Back to Top of Page

GNU Native Compilers

The GNU native compilers gcc and g++ are located in /usr/bin . You would use the GNU native compilers to compile and link the serial portion only of your application on the front-end, as the first step of a larger objective of compiling and linking your parallel application to run on the compute nodes.

Back to Top of Page


This site maintained by:
bgwebmaster@bnl.gov

One of ten national laboratories overseen and primarily funded by the Office of Science of the U.S. Department of Energy (DOE), Brookhaven National Laboratory conducts research in the physical, biomedical, and environmental sciences, as well as in energy technologies and national security. Brookhaven Lab also builds and operates major scientific facilities available to university, industry and government researchers. Brookhaven is operated and managed for DOE's Office of Science by Brookhaven Science Associates, a limited-liability company founded by Stony Brook University, the largest academic user of Laboratory facilities, and Battelle, a nonprofit, applied science and technology organization.
Privacy and Security Notice