PGI: PGI Workstation Compiler Suite

Contents

  1. Overview of package
  2. Overview of package
    1. General usage
  3. Availability of package by cluster
  4. Licensing Information
  5. Compilation Suggestions

Overview of package

General information about package
Package: PGI
Description: PGI Workstation Compiler Suite
For more information: https://www.pgroup.com/index.htm
Categories:
License: SiteLicense

General usage information

PGI Compiler Suite Workstation 17.3

The pgcc, pgc++, and pgfortran commands, as well as other PGI compiler suite commands, have been added to your PATH.

This is currently only available on the Deepthought HPC clusters.

Available versions of the package PGI, by cluster

This section lists the available versions of the package PGIon the different clusters.

Available versions of PGI on the Deepthought2 cluster (RHEL6) [DEPRECATED]

Available versions of PGI on the Deepthought2 cluster (RHEL6) [DEPRECATED]
Version Module tags CPU(s) optimized for GPU ready?
17.3 pgi/17.3 x86_64 N

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.