Portland Group and NVIDIA HPC SDK compilers
PGI 20.7 has been re-branded to the NVIDIA HPC SDK.
A result of this change is that pgcc,pgc++, and pgfortran have been aliased to nvc,nvc++ and nvfortran
respectively. This has not affected the functionality of the compilers with Linaro Forge.
The old compiler directives can still be used directly without making use of the
nv
prefixed directives.
If you experience problems with missing or incomplete stack traces (that
is [partial trace]
entries in Linaro MAP or no stack traces for allocations
in the View Pointer Details window of Linaro DDT), compile your
program with the -Mframe
and -Meh_frame
arguments.
Some known issues are listed here:
Included files in Fortran 90 generate incorrect file and line information in debug information. The information provides refers to including file but displays the line numbers from the included file.
The PGI compiler might emit incorrect line number information, particularly for optimized code.
This can cause Linaro Forge to show your program on a different line to the one expected.
When using memory debugging with statically-linked PGI executables (
-Bstatic
), you must add alocalrc
file to your PGI installation because of the in-built ordering of library linkage for F77/F90. Thelocalrc
file defines the correct linkage when using Linaro DDT and (static) memory debugging. Append the following to<{>pgi-path>/bin/localrc
:switch -Bstaticddt is help(Link for DDT memory debugging with static binding) helpgroup(linker) append(LDARGS=--eh-frame-hdr -z muldefs) append(LDARGS=-Bstatic) append(LDARGS=-L{DDT-Install-Path}/lib/64) set(CRTL=$if(-Bstaticddt,-ldmallocthcxx -lc -lns$(PREFIX)c -l$(PREFIX)c, -lc -lns$(PREFIX)c -l$(PREFIX)c)) set(LC=$if(-Bstaticddt,-ldmallocthcxx -lgcc -lgcc_eh -lc -lgcc -lgcc_eh -lc, -lgcc -lc -lgcc));
pgf90 -help
now lists-Bstaticddt
as a compilation flag. You must use that flag for memory debugging with static linking.This does not affect the default method of using PGI and memory debugging, which is to use dynamic libraries.
When you pass an array splice as an argument to a subroutine that has an assumed shape array argument, the offset of the array splice might be ignored by Linaro DDT. If this affects you, contact Forge Support.
Linaro DDT might show extra symbols for pointers to arrays and some other types. For example, if your program uses the variable
ialloc2d
, then the symbolialloc2d$sd
might also be displayed. The extra symbols are added by the compiler and can be ignored.The Portland compiler also wraps F90 allocations in a compiler-handled allocation area, rather than directly using the systems memory allocation libraries directly for each allocate statement. This means that bounds protection (Guard Pages) cannot function correctly with this compiler.
11.1, 12.1 and 13.1 do not support PGI compiler versions prior to 19.1. If debugging binaries prior to this version is required, then set GNU 8.2 (gdb-82) as the debugger in the Options window.
You might experience issues with Pin to address for Watchpoints. If this affects you, contact Forge Support.