Users have the permission to copy the contents of the REDIST
directory from the PGI installation to target execution systems for
the purpose of running pgi compiled programs.
To dynamically link libraries at runtime, you need to first link the
libraries to create the executable. On the execution machine, you will
need the PGI runtime libraries available to dynamically load,
in either a ‘path’ added to $LD_LIBRARY_PATH, or a “-rpath ‘path’” added at
link time to the executable.
For Linux systems, you may want to link with
-Bstatic_pgi
which will attempt to link all the PGI libraries statically, and the non-PGI
libraries dynamically linked at runtime. This will require no
movement of runtime libs to the target machine.
To avoid problems that may occur when moving from a Linux system with
libnuma properly installed, to one without, we suggest compiling/linking with
What are the CPU architectures of the “Compilation Node” and the “log Nodes”?
An illegal instruction typically means that you’re running a binary that includes new instructions that are not supported on older hardware. For example, running a binary built for Sandy-Bridge (which supports AVX instructions) on a Nehalem (which does not support AVX).
The solution is to use the target processor flag (-tp) to specify which architecture(s) should be used when generating the binary. You can specify more than one processor and multiple versions of routines (where applicable) will be created for each target processor. Or you can target the just the architecture of the “log Node” or a generic 64-bit processor (-tp=px-64). Please see “pgfortran -help -tp” for a complete list of target processors.