Compiler Invocation on NY Blue/L
NY Blue offers the IBM and GNU compilers. The IBM compilers are recommended for optimal performance.
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 9.0 (SLES9) 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.
This site maintained by: firstname.lastname@example.org