Summary and Version Information
|Description||PGI Compiler Suite|
|17.3||pgi/17.3|| Non-HPC Glue systems
*: 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:
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.
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:
- 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.
- You can explicitly tell the compiler which instruction set to use with
man pgccwill 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
x64is good for 64 bit architectures and
pxfor any x86 compatible processor.