PGI 2010 Features and Performance

  • PGI Accelerator™ x64+GPU native Fortran 95/03 and C99 compilers now support the full PGI Accelerator Programming Model v1.0 standard for directive-based GPU programming and optimization.
    • Now supported on Linux, MacOS and Windows
    • Device-resident data using MIRROR, REFLECTED, UPDATE directives
    • COMPLEX and DOUBLE COMPLEX data, Fortran derived types, C structs
    • Automatic GPU-side loop unrolling, support for the UNROLL clause
    • Support for Accelerator regions nested within OpenMP parallel regions
  • PGI CUDA Fortran extensions supported in the PGI 2010 Fortran 95/03 compiler enable explicit CUDA GPU programming
    • Declare variables in CUDA GPU device, constant or shared memory
    • Dynamically allocate page-locked pinned host memory, CUDA device main memory, constant memory and shared memory
    • Move data between host and GPU with Fortran assignment statements
    • Declare explicit CUDA grids/thread-blocks to launch GPU compute kernels
    • Support for CUDA Runtime API functions and features
    • Efficient host-side emulation for easy CUDA Fortran debugging
  • PGI Fortran 2003 incremental features. See full list below.
  • PGC++/ PGCC enhancements include the latest EDG release 4.1 front-end with enhanced GNU and Microsoft compatibility, extern inline support, improved BOOST support, thread-safe exception handling
  • PGI Visual Fortran supports launching and debugging of MSMPI programs on Windows clusters from within Visual Studio, adds support for the PGI Accelerator Programming model and PGI CUDA Fortran on NVIDIA CUDA-enabled GPUs, and now includes the standalone PGPROF performance profiler with CCFF support.
  • Compiler optimizations and enhancements include OpenMP support for up to 256 cores, support for AVX code generation, C++ inlining and executable size improvements,
  • PGPROF parallel MPI/OpenMP performance analysis and tuning tool
    • Uniform cross-platform performance profiling without re-compiling or any special software privileges on Linux, MacOS and Windows
    • PGI Accelerator and CUDA Fortran GPU-side performance statistics
    • Updated graphical user interface
  • Latest Operating Systems supported including RHEL 5, Fedora 11, SLES 11, SuSE 11.1, Ubuntu 9, Windows 7 and Mac OS X Snow Leopard
  • Updated Documentation including the PGI Users Guide, PGI Tools Guide and PVF Users Guide

Complete details are included in the PGI Workstation Release Notes, the PGI Visual Fortran Release Notes and the PGI CDK Release Notes.

What are the latest release versions?

The current PGI 2010 release versions are:

  PGI Workstation and PGI Server for Linux   10.9, updated September 14, 2010
  PGI CDK® for Linux   10.9, updated September 14, 2010
  PGI Workstation and PGI Server for Windows   10.9, updated September 14, 2010
  PGI Visual Fortran®   10.9, updated September 14, 2010
  PGI CDK for Windows   10.9, updated September 14, 2010
  PGI Workstation for Mac OS X   10.9, updated September 14, 2010

Download the current release or download an older release from the PGI archive.

How do I get the latest release?

PGI products are available in the download section. There is also a link after you log in to your account.

Which Fortran 2003 features do you support?

Features listed may not be supported in versions prior to 10.8.

  • Full C interoperability including:
    • iso_c_binding module
    • BIND attribute
    • VALUE attribute
    • c_loc procedure
    • c_funloc procedure
    • c_associated procedure
    • c_f_pointer subroutine
    • c_f_procpointer subroutine
    • enumerators
  • IEEE support:
    • ieee_exceptions module
    • ieee_arithmetic module
    • ieee_features module
  • Environment support:
    • iso_fortran_env module
    • command_argument_count
    • get_command
    • get_command_argument
    • get_environment_variable
    • is_iostat_end
    • is_iostat_eor
    • system_clock count_rate is integer or real
  • Object Oriented Programming support:
    • classes
    • type extensions (non-polymorphic)
    • polymorphic entities
    • typed allocation
    • inheritance
    • extends_type_of intrinsic
    • same_type_as intrinsic
    • specific type-bound procedures
    • deferred type-bound procedures
    • TYPE PUBLIC and PRIVATE attributes
    • TYPE ABSTRACT attributes
  • Allocatable Regularization
  • Allocatable Assignments (both arrays and scalars). The default is to use the Fortran 95 assignment semantics; the option -Mallocatable=03 enables the Fortran 2003 assignment semantics.
  • Pointer reshaping
  • Abstract interface
  • IMPORT statements
  • move_alloc()
  • KIND argument for Fortran intrinsics
  • VOLATILE attribute and statement
  • PASS and NOPASS attribute and statement
  • Procedure pointers and statements
  • Mixed component accessibility
  • Asynchronous Input/Output (partially implemented)
  • Stream access I/O
  • new_line intrinsic
  • WAIT statement
  • ASSOCIATE statement
  • BLANK, PAD and POS READ statement specifiers
  • DELIM and POS WRITE statement specifiers
  • PENDING and POS INQUIRE statement specifiers
  • I/O ENCODING specifier
  • I/O DECIMAL specifier
  • ASYNCHRONOUS attribute and statement
  • ALLOCATE SOURCE specifier

How do I find out if my license will work with the current release?

Previously, a PGI license file had a field with 3.000, 3.100, 3.200, 3.300, 4.000, 4.100, 5.000, 5.100, 5.200, 6.000, 6.100, 6.200, 7.000, 7.100, 7.200, 8.000, 9.000 or 10.2 in it. This number represents the highest release this license will support along with all previous releases. (Note: Since 7.0, licenses are compatible with releases back to 5.1—older releases may need the older license format).

With the PGI 2010 release version 10.3, PGI license files use a form of your subscription expiration date as the release number. These licenses will work with any software that is issued before this expiration date. For example, a license with a subscription expiration date of December 25, 2010, will include "2010.1225" as the version in the license.dat file. A new release issued for example on June 9, 2010, (and called version 10.6), will have a release version date of 2010.0609. Because the software release version date is less than the formatted subscription expiration date contained in the license, this software will work. Old releases also work with a new license format because their release version "date" (e.g. 7.200) is also before the subscripton expriration date of 2010.1225.

How do I find out if I qualify for a current release license?

Your subscription information is summarized on your PIN management page. Click any PIN in the list for information about that PIN including subscription expiration date, release number and current license keys. Note that current release licenses use the expiration date of the subscription as the date of the newest release the license will support. If your subscription is current you will not need to generate a new license for a new release. A release for example, 10.5, which came out May 8, 2010, has a release version date of 2010.0508. A license with subscription expiration date of June 14, 2011, will have a license with a FEATURE or PACKAGE line value of 2011.0614. This license should work with the 10.5 release, along with all releases that are issued on or before June 14, 2010.

What is a subscription?

The PGI Subscription Service entitles the subscriber to new licenses for new releases. Typically, a subscription is valid for one year from date of purchase. New license purchases include 60 days of subscription service. If you did not purchase a subscription when you purchased your license, or if your subscription has expired, you can qualify for the current relase by bringing your subscription current. You may also wish to read the PGI Subscription Service Agreement.

How does this release differ from the previous release?

  • PGI 2010 uses a new type of license file that requires using the 11.7 version of pgroupd. You will need to make changes to your license server to allow the 10.2 license file to support older releases as well.
  • PGI 2010 now supports up to 256 OpenMP threads. Earlier versions had a 64 thread limit.
  • Further information can be found in the PGI 2010 Release Notes located in the documentation section.

Any known problems with the recent releases?

  • 32-bit executables that use libpthreads may fail on 64-bit Linux systems because libpthreads reduces stack size to 2MB. This is a Linux limitation. libpthreads is used by routines compiled -mp or -Mconcur. 64-bit executables do not experience this limitation.
  • Some users linking with libpthreads (-mp or -Mconcur) have seen the error message symbol _h_errno, version GLIBC_2.2.5 not defined in file with link time reference This can be worked around with the environment variable LD_ASSUME_KERNEL export LD_ASSUME_KERNEL=2.4.1 or export LD_ASSUME_KERNEL=2.2.5 for example.
Click me