Skip to Content

Programming Environment

A Programming Environment (PrgEnv) is a set of related software components, such as compilers, scientific software libraries, implementations of parallel programming paradigms, batch job schedulers, and other third-party tools, all of which cooperate with each other.

Four programming environments are available on Blue Waters, namely the Cray Programming Environment, the PGI programming environment, the Gnu programming environment, and the Intel programming environment. The programming environment is managed by the module command.

The Cray Programming Environment, including the Cray compiler suite, is loaded by default upon login, but it is a simple matter to change from one Programming Environment to another by using the module command.

Type module list to generate a display of all currently loaded software modules; the Programming Environment will have a name beginning with "PrgEnv", followed by a compiler vendor name and a version number.

Type module avail to generate a display of all available software modules.  Note that some sets of modules are mutually exclusive – for example, only one Programming Environment may be loaded at any given time.

To change the Programming Environment, including the compiler, first use the module list command to see which Programming Environment is currently loaded, and then use the module swap command to load a different one.  For example, if you wish to compile your application with the PGI compilers instead of the (default) Cray compilers, type:

$ module swap PrgEnv-cray PrgEnv-pgi

although there are cases where assumptions on default loaded modules can cause warning messages to appear. The default version will automatically be selected if none is specified; if you require a specific version of any module simply append the version number to the module command:

module load PrgEnv-pgi/4.0.34

In addition to providing access to different compilers, loading a Programming Environment also provides access to the proper versions of Scientific Software Libraries, MPI libraries, etc

To add modules permanently to your environment you can add module commands to a file in your home directory called .modules . For example if you want to always use the GNU progamming environment you would add:

gbauer@h2ologin2:~> cat ~/.modules
module swap PrgEnv-cray PrgEnv-gnu