Summary and Version Information

Package Pgi
Description PGI Compiler Suite
Categories Progamming/Development
Version Module tag Availability* GPU
17.3 pgi/17.3 Non-HPC Glue systems
Deepthought HPCC
Deepthought2 HPCC

*: Packages labelled as "available" on an HPC cluster means that it can be used on the compute nodes of that cluster. Even software not listed as available on an HPC cluster is generally available on the login nodes of the cluster (assuming it is available for the appropriate OS version; e.g. RedHat Linux 6 for the two Deepthought clusters). This is due to the fact that the compute nodes do not use AFS and so have copies of the AFS software tree, and so we only install packages as requested. Contact us if you need a version listed as not available on one of the clusters.

In general, you need to prepare your Unix environment to be able to use this software. To do this, either:

  • tap TAPFOO
  • module load MODFOO

where TAPFOO and MODFOO are one of the tags in the tap and module columns above, respectively. The tap command will print a short usage text (use -q to supress this, this is needed in startup dot files); you can get a similar text with module help MODFOO. For more information on the tap and module commands.

For packages which are libraries which other codes get built against, see the section on compiling codes for more help.

Tap/module commands listed with a version of current will set up for what we considered the most current stable and tested version of the package installed on the system. The exact version is subject to change with little if any notice, and might be platform dependent. Versions labelled new would represent a newer version of the package which is still being tested by users; if stability is not a primary concern you are encouraged to use it. Those with versions listed as old set up for an older version of the package; you should only use this if the newer versions are causing issues. Old versions may be dropped after a while. Again, the exact versions are subject to change with little if any notice.

In general, you can abbreviate the module tags. If no version is given, the default current version is used. For packages with compiler/MPI/etc dependencies, if a compiler module or MPI library was previously loaded, it will try to load the correct build of the package for those packages. If you specify the compiler/MPI dependency, it will attempt to load the compiler/MPI library for you if needed.

Licensing Information

The PGI Compiler suite is restrictively licensed. The Division of Information Technology has purchased a small number of licenses for use by the general campus community.

Compilation Suggestions

The PGI Compiler Suite tends to generate very processor specific binary code. This is not a problem if you run your code only on the same system that you used to compile it. However, if you intend to run the code on multiple systems, this might cause problems. Specifically, you might get Illegal instruction errors at runtime when you run your code on a system other than the system it was compiled on. This is because the compiler generated machine code using instructions in the instruction set of the processor of the machine it was compiled on, but some of those instructions are not recognized by the processor on the machine you are running it on.

There are a couple of ways in which this situation can be avoided:

  1. You generally will have greater success if you compile the code on the system with the older processor. For the most part, newer processors recognize the instruction set of older processors, but there are exceptions.
  2. You can explicitly tell the compiler which instruction set to use with the -tp=NAME option. man pgcc will give a list of the allowed NAMEs. You will want to give the value corresponding to the lowest level of processor you plan to run the code on. The options x64 is good for 64 bit architectures and px for any x86 compatible processor.