# Compilador PGI

Compilador PGI :
| Versió inicial | 1991 |
| Llenguatges | Fortran, C i C++ |
| Sistema operatiu | Windows, Linux i macOS |
| Desenvolupador | The Portland Group |
| Propietari | NVIDIA |
| Extensions compatibles | OpenMP i OpenACC |
| Tipus | Conjunt de compiladors |
Els compiladors PGI són un conjunt de compiladors de C, C++ i Fortran que són aptes per a sistemes d'alt rendiment.
Els compiladors de PGI permeten desenvolupar aplicacions per a diferents tipus de processadors i targetes gràfiques d'NVIDIA. S'utilitzen tant en estacions de treball comunes com en els computadors més ràpids del món, inclòs el supercomputador del Top500 #1 Summit Supercomputer, on s'executen aplicacions orientades a la química quàntica, al clima, a la dinàmica molecular i a l'astrofísica.

## Història

Els compiladors PGI van ser desenvolupats per l'empresa The Portland Group (PGI), fundada l'any 1989. Dos anys després van publicar la primera versió de compiladors per als llenguatges Fortran i C, que van ser dissenyats per al processador Intel i860. Aquests compiladors van ser utilitzats per supercomputadors com l'iPSC/860, el Touchstone Delta i el Paragon.
A principis dels anys noranta PGI es va involucrar al desenvolupament de High Performance Fortran (HPF), una extensió del llenguatge de dades paral·leles anomenat Fortran 90.
L'any 2000 The Portland Group va ser comprada per l'empresa STMicroelectronics per produir compiladors basats en la High Performance Computing (HPC) en Linux, Windows i MacOS.
El 2013 NVIDIA va adquirir The Portland Group de STMicroelectronics per continuar desenvolupant els mateixos compiladors sota la marca “PGI Compilers and Tools”.
Més tard, va aparèixer un nou compilador anomenat CUDA Fortran, pensat per funcionar en programes orientats al còmput d'altes prestacions mitjançant l'ús de les targetes gràfiques d'NVIDIA i que inclou directives de programació.

## Compilador
### PGI al núvol

Els compiladors de l'edició PGI Community Edition per a Linux/x86-64 es poden usar com a imatge d'un contenidor al núvol d'NVIDIA anomenat NVIDIA GPU Cloud (NGC) i al mercat Amazon Web Services (AWS). Aquestes imatges són compatibles amb els processadors multicore i amb les targetes gràfiques d'NVIDIA (inclosa la família Volta V100) més recents i inclouen compiladors Fortran, C i C++ habilitats per OpenACC.

### CUDA Fortran

CUDA Fortran s'inclou a tots els compiladors PGI Fortran i la versió de lliure accés està disponible a l'edició PGI Community Edition.

### PGI OpenACC

Afegint directives del compilador que ofereix OpenACC es poden accelerar les aplicacions.
Els compiladors PGI OpenACC estan orientats a tots els acceleradors de targetes gràfiques de NVIDIA Tesla amb capacitat de còmput 2.0 o superior a Linux i Windows.
Amb la versió de PGI 15.10 també es poden usar processadors multinucli 64-bit x86 usant Linux, Windows i macOS.

### PCAST

PGI Compiler Assisted Software Testing (PCAST) és un conjunt de capacitats destinades a testejar com de correcte és un programa i a determinar els punts de divergència entre les versions de codi del processador i la targeta gràfica, i també entre el mateix codi executant-se en arquitectures diferents del processador.

### Perfilador de rendiment

PGI té un analitzador estadístic de programes paral·lels escrits amb directives OpenMP o OpenACC o accelerades mitjançant CUDA. Serveix per visualitzar el rendiment de tot allò que compon el programa i també proveeix ajudes per entendre per què algunes parts del programa tenen un temps d'execució més elevat. Amb aquesta informació es pot maximitzar la vectorització i el rendiment en un sol nucli del processador.
Aquest perfilador de rendiment és compatible amb codis font escrits en Fortran, C i C++, siguin o no compilats amb PGI.
Utilitzant el Common Compiler Feedback Format (CCFF) PGI desa la informació sobre com ha estat optimitzat el programa (el perquè s'ha fet o s'ha descartat una optimització concreta). Aleshores, el PGI Profiler s'encarrega d'extreure aquesta informació i associar-la amb el codi font i altres dades de rendiment per permetre veure-les totes simultàniament.

### Depuració

El PGI Debugger va ser eliminat a partir de la versió 20.1 de PGI (6 de febrer de 2020).
El depurador de PGI és compatible amb Linux x86, macOS i Windows i és capaç de depurar programes en sèrie i en paral·lel i aplicacions amb MPI i/o OpenMP en estacions de treball SMP, en servidors, en clústers de memòria distribuïda i en clústers híbrids on cada node conté diversos processadors multinucli de 64 bits.

## Llenguatges de programació

El compilador PGI inclou:
* Fortran
* C
* C++
També és compatible amb les extensions del llenguatge paral·lel OpenACC i OpenMP.

## Arquitectures

Els compiladors PGI són admesos per una gran varietat de sistemes operatius de Linux, macOS i Windows que funcionin en processadors compatibles amb una arquitectura de 64-bit x86, i en Linux sobre processadors OpenPOWER. (Actualment, el depurador PGI només funciona en x86-64/x64.)
A continuació, es mostren els requisits del sistema:
* Processador de la màquina: 64-bit OpenPOWER, 64-bit x86 (inclòs AMD64 i Intel 64) estació de treball o servidor amb un o més processadors d'un sol nucli o multinucli. Accelerador (opcional): NVIDIA CUDA-enabled GPU amb capacitat de càlcul 3.0 o posterior.
* Sistema operatiu:
** Linux POWER9: Linux Red Hat Enterprise 7.5 per a IBM Power LE.
** Linux POWER8: Ubuntu 14.04, 16.04, 18.04, Linux Red Hat Enterprise de 7.3 a 7.6.
** Linux x86-64: de CentOS 6.4 a CentOS 7.6, d'OpenSuSE Leap 42.2 a openSUSE Leap 15.0, de SUSE Linux Enterprise Server (SLES) 12 SP 2 a SLES 15, de Red Hat Enterprise Linux 6.4 a Red Hat Enterprise Linux 7.6, de Fedora 14 a Fedora 29, o Ubuntu 14.04, 16.04, 17.10, 18.04 i 18.10. És interoperable amb la majoria de versions de Linux mitjançant la revisió del kernel 2.6 i glibc 2.5 o més recent.
** Microsoft Windows 64-bit 7/8.1/10 i Servidor 2008 R2/2012/2016/2019.
* L'última versió en què els productes PGI són compatibles amb 32-bit és la 16.10.

## Desenvolupament

Actualment, la versió estable de PGI és la 20.1, que va ser publicada el 6 de febrer de 2020.

## Llicència

L'ús del programari PGI depèn de l'acceptació de l'acord de llicència de l'usuari final.
Les llicències dels usuaris amb PGI Professional poden gestionar permanentment les claus de la llicència després de la compra.
Les publicacions de la PGI Community Edition inclouen una clau de llicència específica per a aquesta versió.

## Referències

* ↑ "Summit User Guide — OLCF User Documentation"
* ↑ "Nvidia buys Portland Group for compiler smarts"
* ↑ "Nvidia compra Portland Group per a la intel·ligència del compilador" Arxivat 2013-07-31 a Wayback Machine.. NVIDIA. 29 de juny de 2013
* 1 2 "CUDA FORTRAN"
* ↑ "PGI and NVIDIA Team To Deliver CUDA Fortran Compiler". The Portland Group, Inc. 23 de juny de 2009
* ↑ "PGI CUDA Fortran Now Available from The Portland Group" The Portland Group, Inc. 17 de novembre de 2009
* ↑ "PGI Community Edition"
* ↑ "NVIDIA V100 TENSOR CORE GPU"
* ↑ "CUDA-Enabled Tesla Products"
* ↑ "PCAST - PGI Compiler Assisted Softwre Testing"
* ↑ "Performance Profile Parallel OpenACC and OpenMP Applications"
* ↑ "Debug Parallel MPI and OpenMP Cluster Applications"
* ↑ "PGI Glossary | AMD64"
* ↑ "PGI Glossary | Intel 64"
* ↑ "NVIDIA End-User License Agreement for PGI Software"

## Vegeu també

* Fortran
* C
* C++
* Depurador
* IDE

## Enllaços externs

* Lloc web oficial
* PGI Visual Fortran a la Visual Studio Gallery
* Pàgina web d'OpenACC
* Pàgina web d'OpenCL