Omni Compiler is a collection of programs and libraries that allow users to build code transformation compilers. Omni Compiler can translate C and Fortran programs with XcalableMP and OpenACC directives into parallel code suitable for compiling with a native compiler linked with the Omni Compiler runtime library. Moreover, Omni Compiler supports the XcalableACC programming model for accelerated cluster systems. Please refer to the Omni Compiler homepage for more information.
The purpose of XcalableMP is to facilitate the development of distributed memory parallel applications with the use of code pragmas or directives, rather than explicit MPI calls. Distributed memory is handled by means of co-arrays. Although the use of co-arrays is a well-established Fortran concept, XcalableMP also makes co-arrays available in C.
Version 1.3.3 has been installed on Lengau, using gcc-8.3.0 and mpich-3.3. There are two versions:
chpc/compmech/omnicompiler/1.3.3_gcc830_mpich33_xmp
to use this version.chpc/compmech/omnicompiler/1.3.3_gcc830_mpich33_xmp_xacc_oacc
to use this version, which relies on CUDA. Code compiled with this version can only be used on GPU-equipped nodes.
In order to run XcalableMP code, use the mpirun
commmand, as used for codes parallelised with MPI. Please note that because the Omni Compiler has been built with mpich, it is necessary to add the runtime option -iface ib0
to enable the use of the Infiniband network. MPICH has been integrated with PBS, therefore it should not be necessary to use a machinefile.