HPCBIOS_07-03: Common Set of Open Source Compilers


As open source software becomes increasingly prevalent, the number of packages that are configured to compile under the GNU compiler suite grows each year. Although codes compiled under GNU suite often do not match the performance of codes generated by commercial compilers, the general availability and familiarity with the GNU suite is consistently drawing a larger HPC user base. Many packages that compile automatically under GNU may require large amounts of support time to compile under other compiler suites. Providing a minimum set of open source compilers is imperative.

  • BC Policy: HPCBIOS_07-03
  • Date of Policy: 2012-12-15

Thus, to increase user productivity and expand commonality across HPCBIOS compatible sites, a site MUST install the GNU compiler suite and make it easily available, either through a user’s default path or the availability of a modulefile. In addition, in order to fully take advantage of the HPC environment, MPI support for the GNU compiler suite MUST be implemented for compliance with this policy.

GCC version 4.6.x of the suite is strongly encouraged for maximum compatibility, hence it has become a requirement for being compliant with this policy:

Name Prefered version(s) Compliance level
GCC v4.6.2 or later MUST
GCC v4.7.2 or later MUST
GCC v4.8.2 or later SHOULD
GCC v4.9.0 or later SHOULD
GCC v5.0.0 or later SHOULD
Clang v3.2 or later SHOULD
TCC v0.9.26 or later MAY

It is at the discretion of each site which (if any) libraries/software will be compiled to support GNU based codes. Ultimately, it will be the responsibility of each user of the GNU compilers to create the libraries/software that they require for their GNU compiled software.

Clang/LLVM is another open source compiler of general interest, not so necessarily for HPC purposes but rather for cross-checking compiled code and the remarkable ability to be extendible at will. Furthermore, Clang is very extensive in testing aspects, revealing early on potential issues.

Finally, TCC may be used in scripting efforts, via the convenience of C code or, simply as experimentation environment.