skip to content


The Portland Compiler Suite contains Fortran 95, Fortran 90, Fortran 77, C, and C++ compilers.


Most of the Theory clusters. The software requires a licence which costs money. If other groups want to acquire licences to allow them access to it this can be arranged- please talk to the Computer Officers.


The compiler is downloadable from Portland's web site. We use the PGI Server package, with both 32 and 64-bit compilers.

Licence details

This is commercial licence-managed software. We have a two-user network licence. This allows anyone on the access list (the 'theory' Unix group) to use the compiler provided the licence server is available and has a free licence. You do not need the licence in order to run the binaries that the compiler produces, only to compile. You may redistribute the binaries produced. Portland provide a freely downloadable portability package containing some of the required libraries to allow binaries to run on machines where the compiler isn't installed. However this only works for some versions, and you should consult the FAQ for full details.

For the 6.X and up version of the compiler, the portability libraries are packaged conveniently in a separate directory REDIST within the installed tree. The contents of this directory may be distributed with your binaries.

Instructions for users

Load the appropriate module. If you are on the access control list one of the available versions will probably be loaded for you already. The name of the of the module is pgi. You can see all the available versions with module av pgi. You can easily switch between different versions.


The compiler comes with manpages. You may need to load the module to make the manpage available. However most of the documentation is in HTML and PDF form in the doc subdirectory of the compiler's install directory. You will have to use a web browser or PDF reader to view it. A good place to start is the file index.htm. Portland also provide an excellent FAQ on the web.

Admin notes

See also the workstation documentation for Portland which has much more detail, but assumes an install for a particular Linux distro not a shared one.

To install a new version of Portland for the clusters the easy way, put the Portlandtarball in a scratch directory on a managed Linux workstation. Make sure the NFS server is mounted read-write. Run /usr/local/shared/sbin/install_pgi14 tarballname version server . The third argument can be anything, it just tells the script to do the server install. Works for version 14. The installer is an Expect script that wraps the Portland installer, so tends to need tweaking for new major versions of Portland. The 'attic' directory in /usr/local/shared/sbin contains older Expect scripts that worked for earlier releases. The Expect script creates a modulefile in the right place so no need to do anything after you have run it. Cron jobs on the clusters do the rest.

To do it the old way (when the script breaks)

  1. Download and unpack the installer on the software server machine (currently paun). It unpacks in the current directory by default so make a sub directory first.
  2. Run ./install
  3. When prompted, pick a network install. Say yes to ACML and CUDA and no to MPICH.
  4. The install directory is /usr/local/shared/anylinux/pgi and the 'shared object directory is /usr/local/shared/anylinux/pgi/version/share_objects
  5. The version number should be obvious, but if not it's formatted like 9.0-4, 10.0-0 etc.
  6. Copy the siterc file into the bin directory (use an older install - it doesn't change)
  7. Make a module in /usr/local/shared/anylinux/Modules/modulefiles64 by symlinking /usr/local/shared/anylinux/Modules/basefiles/pgi10cluster to an appropriatre name (see existing exampkes)
  8. On the newer clusters a cron job will copy all this to the local hard drive overnight and set up the localrc file for the cluster.