PGI Glossary

The PGI compilers and tools are supported on both 32-bit and 64-bit variants of the Linux, Mac OS X and Windows operating systems on a variety of x86-compatible processors. There are a wide variety of releases and distributions of each of these types of operating systems. The Portland Group defines the following terms with respect to these platforms:

Term Definition
AMD64 A 64-bit processor from AMD designed to be binary compatible with 32-bit x86 processors, and incorporating features such as additional registers and 64-bit addressing support for improved performance and greatly increased memory range. This includes the AMD* Opteron* family of processors.
AVX Advanced Vector Extensions to the x86 instruction set architecture. Later variants include AVX2 and AVX-512.
Barcelona The Quad-Core AMD Opteron processor (i.e. Opteron Rev x10) is often referred to as Barcelona.
Deprecate Deprecated status indicates that a feature has either been superseded and therefore should no longer be used, or that a feature has been identified for future removal. Deprecated features remain in the software for some period of time before being dropped. Features are deprecated rather than immediately removed for backward compatibility and to give programmers time to bring affected code up to current practices.
DLL A dynamic linked library on Win32 or Win64 platforms of the form xxx.dll containing objects that are dynamically linked into a program at the time of execution.
driver The compiler driver controls the compiler, linker, and assembler, and adds objects and libraries to create an executable. The -dryrun option illustrates operation of the driver. pgf77, pgf95, pghpf, pgcc, pgCC (Linux), and pgcpp are drivers for the PGI compilers. A pgf90 driver is retained for compatibility with existing makefiles, even though pgf90 and pgf95 drivers are identical.
Dual-, Quad-, or Multi-core Some x64 CPUs incorporate two or four complete processor cores (functional units, registers, level 1 cache, level 2 cache, etc) on a single silicon die. These are referred to as Dual-core or Quad-core (in general, Multi-core) processors. For purposes of OpenMP or auto-parallel threads, or MPI process parallelism, these cores function as distinct processors. However, the processing cores are on a single chip occupying a single socket on the system motherboard. In PGI 7.2, there are no longer software licensing limits on OpenMP threads for Multi-core.
FlexNet Formerly known as FLEXnet. The flexible license management software from Flexera Software.
Host Code C99 code intended to be executed on the single host processor in a potentially heterogeneous compute platform. Within the context of OpenCL, host code calls compute kernels that have been written in the OpenCL language and are executed on an OpenCL compute device.
Hyperthreading Some IA32 CPUs incorporate extra registers that allow two threads to run on a single CPU with improved performance for some tasks. This is called hyperthreading and abbreviated HT. Some linux86 and linux86-64 environments treat IA32 CPUs with HT as though there were a second pseudo CPU, even though there is only one physical CPU. Unless the Linux kernel is hyperthread-aware, the second thread of an OpenMP program will be assigned to the pseudo CPU, rather than a real second physical processor (if one exists in the system). OpenMP Programs can run very slowly if the second thread is not properly assigned.
IA32 An Intel Architecture 32-bit processor designed to be binary compatible with x86 processors, but incorporating new features such as streaming SIMD extensions (SSE) for improved performance. This includes Intel Pentium 4, Intel Xeon, and Intel Core processors. For simplicity, these release notes refer to x86 and IA32 processors collectively as 32-bit x86 processors.
Intel 64 A 64-bit IA32 processor with Extended Memory 64-bit Technology extensions designed to be binary compatible with AMD64 processors. This includes Intel Pentium 4, Intel Xeon, and Intel Core processors.
Kernel Code In the context of OpenCL, functions designated with the __kernel qualifier represent code that is intended for execution on an OpenCL compute device. The syntax of kernel code follows the OpenCL language standard.
Large Arrays Arrays with aggregate size larger than 2GB, which require 64-bit index arithmetic for accesses to elements of arrays. Program units that use Large Arrays must be compiled using -mcmodel=medium.
‑Mlarge_arrays Is specified and -mcmodel=medium is not specified, the default small memory model is used, and all index arithmetic is performed in 64-bits. This can be a useful mode of execution for certain existing 64-bit applications that use the small memory model but allocate and manage a single contiguous data space larger than 2GB.
License Keys License key are text strings use by FlexNet to enable operation of individual product features. PGI license keys are contained in the license.dat files located in the PGI installation directory. The type and number of keys are determined by the product and platform license.
linux86 32-bit Linux operating system running on an x86, AMD64 or Intel 64 processor-based system, with 32-bit GNU tools, utilities and libraries used by the PGI compilers to assemble and link for 32-bit execution.
linux86-64 64-bit Linux operating system running on an AMD64 or Intel 64 processor-based system, with 64-bit and 32-bit GNU tools, utilities and libraries used by the PGI compilers to assemble and link for execution in either linux86 or linux86-64 environments. The 32-bit development tools and execution environment under linux86-64 are considered a cross-development environment for x86 processor-based applications.
Mac OS X Collectively, all osx86 and osx86-64 platforms supported by the PGI compilers.
‑mcmodel=small Compiler/linker switch to produce small memory model format objects/executables in which both code (.text) and data (.bss) sections are limited to less than 2GB. This switch is the default and only possible format for linux86 32-bit executables. This switch is the default format for linux86-64 executables. Maximum address offset range is 32-bits, and total memory used for OS+Code+Data must be less than 2GB.
‑mcmodel=medium Compiler/linker switch to produce medium memory model format objects/executables in which code sections are limited to less than 2GB, but data sections can be greater than 2GB. This option is supported only in linux86-64 environments. It must be used to compile any program unit that will be linked in to a 64-bit executable that will use aggregate data sets larger than 2GB and will access data requiring address offsets greater than 2GB. This option must be used to link any 64-bit executable that will use aggregate data sets greater than 2GB in size. Executables linked using -mcmodel=medium can incorporate objects compiled using -mcmodel=small as long as the small objects are from a shared library.
MPI "Message Passing Interface&auot;—a language-independent communications protocol used to program parallel computers.
MPICH A freely available, portable implementation of MPI, a standard for message-passing for distributed-memory applications used in parallel computing.
Multi-platform license A multi-platform license accommodates any combination of different platform licenses (e.g. Linux, MacOS or Windows) up to the maximum node-locked volume pack seat count or network floating simultaneous user count.
network floating license A multi-user network floating license allows any system connected to the networked license server to request a license. Licenses are returned to the server pool after each use.
Network Installation A term that applies to installing software on a shared file system available to many machines. Typically this type of installation allows multiple users to access and run the software—up to the number of licenses associated with the software.
node-locked license A node-locked license is tied to a specific OS type and a specific machine (host name).
NUMA Non-Uniform Memory Access. A type of multi-processor system architecture in which the memory latency from a given processor to a given portion of memory can vary, resulting in the possibility for compiler or programming optimizations to ensure frequently accessed data is "close" to a given processor as determined by memory latency.
OpenCL host application A standard C or C++ executable compiled from Host code and containing API calls to identify available OpenCL devices and set up and launch OpenCL programs (kernels) on an OpenCL device.
OpenCL host compiler The compiler used to compile all C99 language .c files into standard ARM object files; both g++ and gcc are supported as host compilers in the PGI OpenCL compiler framework for multi-core ARM.
OpenCL runtime Code which is linked into an OpenCL executable and follows the OpenCL runtime API. The OpenCL runtime API executes compute kernels and manages scheduling as well as compute and memory resources within an OpenCL application.
OpenPOWER Any 64-bit processor based on the IBM Power architecture and produced under license by OpenPOWER Foundation members.
osx86 32-bit Apple Mac OS X operating systems running on an x86 Core 2 or Core 2 Duo processor-based system with the 32-bit Apple and GNU tools, utilities, and libraries used by the PGI compilers to assemble and link for 32-bit execution.
osx86-64 64-bit Apple Mac OS X operating systems running on an x64 Core 2 Duo processor-based system with the 64-bit and 32-bit Apple and GNU tools, utilities, and libraries used by the PGI compilers to assemble and link for either 64- or 32-bit execution.
Shared library A Linux library of the form libxxx.so containing objects that are dynamically linked into a program at the time of execution.
SSE Collectively, all SSE extensions supported by the PGI compilers.
SSE1 32-bit IEEE 754 FPU and associated streaming SIMD extensions (SSE) instructions on Pentium III, AthlonXP* and later 32-bit x86, AMD64 and Intel 64 compatible CPUs, enabling scalar and packed vector arithmetic on single-precision floating-point data.
SSE2 64-bit IEEE 754 FPU and associated SSE instructions on P4/Xeon and later 32-bit x86, AMD64 and Intel 64 compatible CPUs. SSE2 enables scalar and packed vector arithmetic on double-precision floating-point data.
SSE3 Additional 32-bit and 64-bit SSE instructions to enable more efficient support of arithmetic on complex floating-point data on 32-bit x86, AMD64 and Intel 64 compatible CPUs with so-called Prescott New Instructions (PNI), such as Intel IA32 processors with Intel 64 extensions and newer generation (Revision E and beyond) AMD64 processors.
SSE4A and ABM AMD Instruction Set enhancements for the Quad-Core AMD Opteron Processor. Support for these instructions is enabled by the -tp barcelona or -tp barcelona-64 switch.
SSSE3 An extension of the SSE3 instruction set found on the Intel Core 2.
Static linking A method of linking: On Linux, use -Bstatic to ensure all objects are included in a generated executable at link time. Static linking causes objects from static library archives of the form libxxx.a to be linked in to your executable, rather than dynamically linking the corresponding libxxx.so shared library.

On Windows, the Windows linker links statically or dynamically depending on whether the libraries on the link-line are DLL import libraries or static libraries. By default, the static PGI libraries are included on the link line. To link with DLL versions of the PGI libraries instead of static libraries, compile and link with the -Bdynamic option.
Volume Packs A form of PGI product packaging. Multiple single user node-locked licenses sold in groups of 5, 10, 25 and 50.
Win32 Any of the 32-bit Microsoft* Windows* operating systems (XP/2000/Server 2003) running on an x86, AMD64 or Intel 64 processor-based system. On these targets, the PGI compiler products include additional Microsoft tools and libraries needed to build executables for 32-bit Windows systems.
Win64 Any of the 64-bit Microsoft Windows operating systems (XP Professional / Windows Server 2003 x64 Editions) running on an x64 processor-based system. On these targets, the PGI compiler products include additional Microsoft tools and libraries needed to build executables for either Win32 or Win64 environments. Windows - collectively, all Win32 and Win64 platforms supported by the PGI compilers.
Windows Collectively, all Win32 and Win64 platforms supported by the PGI compilers and tools.
x64 Collectively, all AMD64 and Intel 64 processors supported by the PGI compilers. Also, PGI products for these processors.
x64+GPU PGI products for x64+GPU include applicable support for PGI Accelerator directives, CUDA Fortran, CUDA-x86 and other GPU oriented technologies and capabilities.
x86 A processor designed to be binary compatible with i386/i486 and previous generation processors from Intel* Corporation. Used to refer collectively to such processors up to and including 32-bit variants.
x87 80-bit IEEE stack-based floating-point unit (FPU) and associated instructions on x86-compatible CPUs.
Click me