hpss

Since 2/12/13 01:55 pm

lens

Since 2/13/13 10:20 am

smoky

Since 2/13/13 08:05 am
OLCF User Assistance Center

Can't find the information you need below? Need advice from a real person? We're here to help.

OLCF support consultants are available to respond to your emails and phone calls from 9:00 a.m. to 5:00 p.m. EST, Monday through Friday, exclusive of holidays. Emails received outside of regular support hours will be addressed the next business day.

pgi

Bookmark and Share


Description

Website: Portland Group (PGI)

Cray provides the PGI compilers as part of several programming environments on Jaguar.

Note that Jaguar has two kinds of nodes:

1 .Compute nodes running the CNL OS. * To build code for the compute nodes, you should use the Cray wrappers cc, CC, and ftn. * The wrappers will call the appropriate PGI compiler which will use the appropriate header files and link against the appropriate libraries. 2. Service and login nodes running Linux. * To build code for the Linux service nodes, you can call the PGI compilers directly. (See list below.) * We strongly suggest that you don’t call the PGI compilers directly if you are building code to run on the compute nodes.

The Cray wrappers cc, CC, and ftn will automatically link against MPI (-lmpi) and SciLib (-lsci). This is not true when calling the PGI compilers directly. See the cc, CC, and ftn man pages for more information on their usage.

To see man pages on PGI compilers with a full list of compiler options, first make sure the “PrgEnv-pgi” module is loaded, and then do a man on any of the following:

  • pgcc
  • pgCC
  • pgf90/pgf95
  • pgf77

For more detailed information, see PGI documentation and Cray’s documentation.

Use

To use the Cray wrappers with the PGI compilers, the PrgEnv-pgi module should be loaded:

module avail PrgEnv
module swap PrgEnv-pgi PrgEnv-pgi        # this loads some version of pgi, currently 7.2.3

To just use the PGI compilers directly, just load the pgi module you want:

module avail pgi
module load pgi/7.2.3         # Note that this does not changed the Cray wrappers.

It is possible to use the PGI compiler versions directly without loading the Cray Programming Environments, but note that the Cray wrappers will probably not work as expected if you do that.

Also note that with CNL 2.0.49 and above, the following options are set automatically by the xtpe-quadcore module (loaded by default):

jaguar12> module display xtpe-quadcore
-------------------------------------------------------------------
/opt/xt-asyncpe/1.0/modulefiles/xtpe-quadcore:

prepend-path     PE_PRODUCT_LIST XTPE_QUADCORE
setenv           XTPE_QUADCORE_ENABLED ON
setenv           LIBSCI_PRE_LINK_OPTS  -lsci_quadcore
setenv           PGI_POST_COMPILE_OPTS   -tp barcelona-64
setenv           PATHSCALE_POST_COMPILE_OPTS  -march=barcelona
setenv           GNU_POST_COMPILE_OPTS  -march=barcelona
setenv           LLVM_AMD_10H 1
-------------------------------------------------------------------

However, the “barcelona” option works with many versions of the compiler.

Version barcelona support
7.2.x yes

It is best to review the pgcc, pgCC, and pgf90 man pages for a list of their options.

C/C++ Options

The following options control the amount of debugging information generated by the compiler. They can adversely affect optimization.

Option Description
-g Generates symbolic debug information. Turns off optimization.
-Mbounds Adds array bound checking.

For most cases, the usual levels of optimization are appropriate (-O0, -O1, -O2 [default], -O3). Here are a few exceptions.

Option Description
-fast Chooses generally optimal flags for the target platform. Use pgcc -fast -help to see the equivalent switches. Note this sets the optimization level to a minimum of 2; see -O.
-fastsse Chooses generally optimal flags for a processor that supports the streaming SIMD extensions (SSE) (Pentium 3/4, AthlonXP/MP, Opteron) and SSE2 (Pentium 4, Opteron) instructions. Use pgcc -fastsse -help to see the equivalent switches.
-tp barcelona-64 Targets optimization to the 64-bit Opteron quad-core processor.
-Mflushz Sets SSE to flush-to-zero mode.
-pg, -Mprof Instrument program for profiling. These flags imply different types of profiling.
-Minfo Generates an optimization report to standard error. This has several suboptions, so check the man page.
-mp=nonuma Enables the compiler to generate multithreaded code based on the OpenMP directives. Use the nonuma suboption when linking with the Cray wrappers.

Fortran Options

The following options control how source files are translated into machine code.

Option Description
-M fixed The source code uses fixed-form syntax, as in Fortran 77. This option is on by default for source files ending in .f, .F, .for, and .fpp.
-M free The source code uses free-form syntax, introduced in Fortran 90. This option is on by default for source files ending in .f90, .F90, .f95, .F95.
-F This option preprocesses each file and leaves the output in a file named file.f for each file named file.F.
-i8 This option treats INTEGER variables as 8 bytes. For operations involving integers, uses 64 bits for computations.
-r8 This option interprets REAL variables as DOUBLE PRECISION. Equivalent to using the options -Mr8 and -Mr8intrinsics.

The following options control the amount of debugging information generated by the compiler. They can adversely affect optimization.

Option Description
-g Generates symbolic debugging information. Turns off optimization.
-Mbounds Adds array bound checking.
-Mchkptr Checks for unintended dereferencing of null pointers.

For most cases, the usual levels of optimization are appropriate (-O0, -O1, -O2 [default], -O3). Here are a few exceptions.

Option Description
-fast Chooses generally optimal flags for the target platform. Use pgf90 -fast -help to see the equivalent switches. Note this sets the optimization level to a minimum of 2; see -O.
-fastsse Chooses generally optimal flags for a processor that supports the SSE (Pentium 3/4, AthlonXP/MP, Opteron) and SSE2 (Pentium 4, Opteron) instructions. Use pgf90 -fastsse -help to see the equivalent switches.
-Mflushz Sets SSE to flush-to-zero mode. -pg,
-Mprof Instrument program for profiling. These flags imply different types of profiling.
-Minfo Generates an optimization report to standard error. This has several suboptions, so check the man page.
-Mlist Generates a listing file.
-mp=nonuma Enables the compiler to generate multithreaded code based on the OpenMP directives. Use the nonuma suboption when linking with the Cray wrappers.

The following information is available by running module help pgi

----------- Module Specific Help for 'pgi/12.8.0' -----------------

PGI 12.8.0
==========

Release Date: September 20, 2012

Purpose:
--------
  Features of PGI 12.8.0 are documented at:

http://www.pgroup.com/doc/pgirn128.pdf

  The following bug is fixed in the PGI 12.8.0 release.
    784151  pgf90 issuing incorrect name conflict error because of wrong scopes

Product and OS Dependencies:
----------------------------
  pgi 12.8.0 is supported on Cray XT and XE systems running CLE 2.2 or
  later operating systems and on Cray XK systems running CLE 4.0.

Documentation:
--------------
  Documentation for PGI 12.8.0 is in /opt/pgi/12.8.0/linux86-64/12.8/doc/
  PGI User's Guide,              pgi12ug.pdf
  PGI Fortran Reference,         pgifortref.pdf
  PGI CUDA Fortran Guide,        pgicudaforug.pdf
  PGI 12.8 Release Notes,        pgirn128.pdf
  PGI 12.8 Installation Guide,   pgiinstall128.pdf

Installation:
-------------
  rpm -ihv pgi-12.8.0-02.x86_64.rpm

  To make this the default version, execute:
    /opt/cray/admin-pe/set_default_files/set_default_pgi_12.8.0

Certain components, files or programs contained within this package or product are Copyright -2012 Cray Inc. All rights reserved.

Available Versions




System Application/Version Build
Titan pgi/11.10.0 universal
Titan pgi/11.10.0.patch universal
Titan pgi/11.8.0 universal
Titan pgi/11.9.0 universal
Titan pgi/12.1.0 universal
Titan pgi/12.2.0 universal
Titan pgi/12.3.0 universal
Titan pgi/12.4.0 universal
Titan pgi/12.5.0 universal
Titan pgi/12.5.0.openacc universal