3.4.1 : Pourquoi NVC++ ?

Il se trouve que depuis novembre 2020, nvc++ permet de compiler du C++17 sur GPU. Bien entendu, il faut écrire les kernels de calcul en C++17 avec des joyeusetés comme les std::transform ou les std::for_each. Mais moyennant ce coût noteQui permet tout de même de simplifier ce que l'on écrit., le programme devient alors portable sur CPU et GPU NVidia. Les tests de performances noteDe NVidia certes mais quand même montrent que l'exécution est aussi rapide qu'avec des kernels Cuda, pour les cas testés. Même si cela n'est certainement pas vrai dans l'absolu, car on pourra toujours trouver un cas tordu dans lequel ça ne fonctionnera pas, cette annonce de souplesse et de performance m'intrigue au point que ce cours et le précédent (à voir ici) ne sont qu'une excuse pour voir jusqu'où on peut aller avec cette fonctionnalité.

Il n'y a aucune raison que cela fonctionne sur les autres GPU du marché car NVidia ne va quand même pas aider la concurence. Il faut cependant noter que cela pourrait bien encourager les autres constructeurs à fournir gratuitement des compilateurs spécifiques pour leur matériel noteBien que ce ne soit pas encore complètement le cas, il faut reconnaître qu'il y a un certain frétillement de la communauté LLVM depuis quelques mois sur le sujet. Avec des projets comme SpirV, Kompute, SharkTank pour n'en citer que quelque uns.. Ce qui serait une très bonne chose.

Note : il faut bien reconnaître que, pour le moment, on passe d'un problème de bibliothèques à un problème de compilateurs ET de bibliothèques. Mais quand ces compilateurs seront plus matures, la question des bibliothèques devra être transparente, ce qui nous arrangera.