skip to content
 

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

Availability: 

The software is installed on all the managed Linux workstations.

Instructions for users: 

Load the appropriate module. If you are in a group that already contributes to the cost of the licence then 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 (see the modules documentation for details).

The actual compilers are called pgf95, pgcc, and pgCC .

Licence Details: 

We currently use the free Community Edition of Portland. This gives us access to two compilers releases a year, in April and October, each of which works for one year after the date of release. There should therefore always be two fairly modern releases available.

We also have a two-user network licence which covers all older versions up to 17.3. Those will continue to work until as long as the Linux OS they're running on remains compatible with them, but eventually some incompatibility will arise because these are now fairly out of date: for example Ubuntu 18.04 is not compatible with any of the PGI 17 or lower versions. We recommend you don't use those PGI versions unless you really need to.

You do not need a 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.

Documentation: 

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.

Source: 

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

Admin notes: 

Installing with script

Put the downloaded tarball in a scratch directory on a 64-bit Linux workstation. Make sure the NFS server is mounted read-write.

 /usr/local/shared/sbin/install_pgi15 tarball version 

This will install the package for that version of the image. Then add modules to the chemistry-modulefiles-trusty package. 

To do the equivalent for the clusters, give a third argument to the command. That puts the appropriate server stuff on the NFS server. Cron jobs then take care of putting it on clusters and setting up modules. 

Libraries

To make the PGI compilers work properly with new style modules for libraries I have to add a siterc file in the bin directories:

 # get the value of the environment variable LIBRARY_PATH variable LIBRARY_PATH is environment(LIBRARY_PATH); variable inc_path is environment(CPATH);  # split this value at colons, separate by -L, prepend 1st one by -L variable library_path is default($if($LIBRARY_PATH,-L$replace($LIBRARY_PATH,":", -L))); # hack up an rpath variable my_rpath is default($if($LIBRARY_PATH,-rpath $LIBRARY_PATH));  # add the -L arguments to the link line append LDLIBARGS=$library_path; append LDLIBARGS=$my_rpath; append SITEINC=$inc_path; 

/usr/local/shared/sbin/testcompilers.sh pgf95 pgcc is a script that checks the compiler's working and correctly configured. Running this is less tedious than testing it by hand.

CUDA

PGI 10.0+ has support for CUDA / Nvidia GPU cards that you can install along with the compiler - no extra configuration is needed, unlike version 9.0. The CUDA support requires a separate licence which we have bought. Obviously it only works at runtime if you have a suitable GPU and the right drivers.

PGI 9.0 has support for Nvidia GPU cards. To enable it on this version you need to put a sitenvrc file into the bin directory containing the location of your CUDA install:

 set CUDA=/usr/local/shared/suse-11.1/x86_64/cuda/2.1; set NVOPEN64DIR=$CUDA/open64/lib; set CUDADIR=$CUDA/bin; set CUDALIB=$CUDA/lib; set COMPUTECAP=10; 

Don't install this file into version 10.0 as it breaks things.

The COMPUTECAP thing turns off double precision. We haven't currently got double precision cards anyway.

Can't find what you're looking for?

Then you might find our A-Z site index useful. Or, you can search the site using the box at the top of the page, or by clicking here.