Install Nvidia free C, C++, Fortran compilers

Note: PGI compilers appear to be superseded by the free-to-use Nvidia HPC SDK compilers:

  • C: nvc
  • C++: nvc++
  • Fortran: nvfortran

Nvidia HPC binaries offer speed improvements over GNU GCC / GFortran, but Intel-compiled binaries can be significantly faster than Nvidia-compiled binaries for CPU-only workloads. Unless one specifically needs the GPU features of Nvidia HPC SDK consider GNU, Clang or Intel compilers that have more modern Fortran features. Nvidia has the HPC SDK in beta testing, please follow their install procedure.

The procedure below was for the legacy PGI compilers and we plan to update for Nvidia HPC SDK after its public production release.

Legacy PGI compilers

The no-cost PGI Community Edition compilers are for:

  • C: pgcc (C11)
  • C++: pgc++ (C++17, Linux only)
  • Fortran: pgfortran (Fortran 2003)

Install

If you have an older PGI compiler installed, uninstall that first to avoid license server issues–even when using the no-cost Community Edition.

Download and install PGI Community Edition:

  • Linux: sudo not required, but must be on symbolic-link-aware drive (not ExFAT)
  • Windows: Requires Visual Studio
  • MacOS is no longer supported by PGI after version 19.10.

PGI compiler is over 2 GB download. CUDA install is optional.

Linux

We assume PGI was installed under “~/.local/pgi” – add to ~/.bashrc like:

export PATH="$PATH:$HOME/.local/pgi/linux86-64/2019/bin/"

Open a new terminal to use PGI pgfortran pgcc pgc++

Windows

use PGI command prompt–you may need to do

set FC=pgfortran
set CC=pgcc

Note that there is no pgc++ on Windows.

PGI on Windows requires Visual Studio. If upgrading Visual Studio (even a minor update) after installing PGI, one may need to reinstall PGI compilers.

Usage

Typically we invoke compilers from a build system such as Meson or CMake.

Meson

Meson build system supports PGI and Flang compilers.

project('demo','fortran', meson_version: '>=0.52.0')

fc = meson.get_compiler('fortran')
if fc.get_id() == 'pgi'
  message('PGI compiler')
endif

CMake

CMake distinguishes between PGI and Flang compilers. Set compiler-specific options in CMakeLists.txt for various Fortran compilers like:

project(myproj Fortran)

if(CMAKE_Fortran_COMPILER_ID STREQUAL PGI)
  add_compile_options(-Mdclchk)
endif()

select the PGI compilers at CMake configure step:

FC=pgfortran CC=pgcc CXX=pgc++ cmake -B build

PGI Debugger

PGI 19.10 ended the “pgdbg” graphical debugger. The Java-based “pgdbg” graphical debugger was for Fortran, C and C++, including the no-cost Community Edition.