Compilation de code OpenACC (Fortran, C/C++)
Sur Jean Zay, les compilateurs NVIDIA HPC offrent la possibilité d'utiliser OpenACC.
Options de compilation pour NVIDIA HPC
La documentation des compilateurs NVIDIA est accessible sur le site Web de NVIDIA.
Prise en compte de OpenACC
Les options de compilation pour la prise en charge d'OpenACC par le compilateur NVIDIA HPC sont les suivantes :
-acc: cette option active le support d'OpenACC. Il est possible de lui donner les sous-options suivantes :[no]autopar: Active (ou pas) la parallélisation automatique pour la directiveACC PARALLEL. Le défaut est de l'activer.[no]routineseq: Compile (ou pas) toutes les routines pour l'accélérateur. Le défaut est de ne pas compiler chaque routine comme séquentielle.strict: Affiche des messages d'avertissement en cas d'utilisation de directives non OpenACC pour l'accélérateur.verystrict: Arrête la compilation en cas d'utilisation de directives non OpenACC pour l'accélérateur.sync: Ignore les clauses async.[no]wait: Attend (ou pas) la fin de chaque noyau de calcul sur l'accélérateur. Le lancement de noyaux est bloqué par défaut, sauf si async est utilisé.- Exemple :
nvfortran -acc=noautopar,sync -o prog_ACC prog_ACC.f90
`
-ta: Cette option active le déport de calcul sur l'accélérateur. Elle implique l'option-acc.- Elle est utile pour choisir l'architecture cible pour laquelle le code va être compilé.
- Pour utiliser les GPU V100 de Jean Zay, il faut utiliser la
sous-option
teslade-taet la compute capabilitycc70. Par exemple :nvfortran -ta=tesla:cc70 -o prog_gpu prog_gpu.f90 - Quelques exemples utiles de sous-options de
tesla:managed: Permet de créer une vue partagée de la mémoire des GPU et des CPU.pinned: Active l'épinglage de la mémoire sur le CPU. Cela peut améliorer les performances des transferts de données.autocompare: Active la comparaison des résultats sur CPU et GPU.
Les autres options sont disponibles dans la documentation Web NVIDIA.