Special Note:
When compiling for the NY Blue/P compute nodes, the compiler flags used on NY Blue/L:
-qarch=440 or 440d and -qtune=440
should not be used, instead use the following compiler flags:
-qarch=450 or 450d and -qtune=450
Addition Information:
Porting Your Code |
Blue Gene/P Application Development
Redbook
NY Blue offers the IBM and GNU compilers. The IBM compilers are recommended for optimal performance.
For information about running threaded programs on NY Blue/P see Running Threaded Programs On NY Blue/P. You can run either threaded or non-threaded programs there.
To run a code on the compute nodes, you must compile and link it using a "cross-compiler" on the front-end (login node). The cross-compiler produces an executable that will run on the compute nodes.
If you instead use a native compiler on the front-end, the resulting executable will run on the front-end but not necessarily on the remote nodes. You should run your applications on the compute nodes only. Also, you can use the native compiler to compile and link serial code only, i.e. there are currently no mpich libraries on the front-end, only on the compute nodes.
So why might you use the native compilers?
You may find it harder to build your executable for the compute nodes (i.e. using the cross compiler) than the login node. The login node runs the SUSE Linux Enterprise Server 10.0 (SLES10) operating system. The compute nodes are more limited than standard linux in regard to certain features such as system calls, header files, profiling, and shell utilities. You might decide to use the native compilers to port the serial portions of your parallel code to the front-end (i.e. login node) first, since it is a friendlier environment, then port the entire parallel code to the compute nodes (using the cross compilers).
Finally, for the cross compilers you can invoke each compiler (e.g. the C compiler) directly and be responsible yourself for things like linking in the required mpich libraries, or you can use the mpich wrapper scripts that are provided to do that for you. There are no mpich wrapper scripts for the native compilers because as mentioned there are no mpich libraries for the front-end.
In addition to the compiler invocation information on the sidebar at left, IBM offers a number of redbooks describing other aspects of IBM compiler usage: