Chapter 5.2 : Le compilateur nvc++

nvc++ est un compilateur comme les autres, si ce n'est qu'il permet (depuis la release de novembre 2020) de compiler du C++17 en permettant que l'exécutable produit puisse calculer sur un GPU noteNVidia bien sur, il ne faut pas exagérer.. Cela est activé par l'option -stdpar, qui va nous changer la vie.

Cela implique plusieurs choses :

  • Vous avez vu que la programmation Cuda peut vite être fastidieuse :
    • Il faut, en effet, gérer les transferts de mémoire, la taille des blocs, le nombre de blocs, en prennant garde à faire des blocs d'une taille multiple de celle des warps.
    • Il faut découper suffisemment le calcul pour avoir suffisemment de thread et permettre à l'ordonanceur GPU de faire son travail efficacement, mais pas trop pour ne pas avoir d'erreur.
    • Pour en rajouter une couche, on peut aussi, lorsque l'on a plusieurs calculs indépendants à faire en même temps, utiliser des cuda-stream et ainsi calculer sur un stream pendant un transfert mémoire sur un autre.
  • Développer en C++17 implique, maintenant, de ne plus avoir besoin de rien d'autre qu'un compilateur approprié pour utiliser un GPUnoteNVidia, il ne faudrait pas encore exagérer..


Dans la suite, nous présenterons des exemples de plus en plus complexes pour en arriver à notre simulation de Gray Scott en C++17.