
Par Justin Lebar
Le CPU a toujours constitué le principal levier de traitement de l’ensemble des opérations lourdes de calcul comme les simulations physiques, le rendu hors-ligne pour les films, les calculs de risques pour les institutions financières, la prévision météorologique, l'encodage de fichier vidéo et son, etc. Véritable chef d’orchestre de l’ordinateur, le CPU a permis à Intel de dominer largement tous les besoins de calcul et d’engranger de substantielles marges avec ses 80% de parts de marché. Certains de ces calculs lourds sont cependant facilement parallélisables et peuvent donc bénéficier d'une architecture pensée pour le calcul parallèle. La plupart des architectures parallèles étaient lourdes, chères et s'adressaient à un marché de niche jusqu'à ce que le GPU s'impose comme un acteur important du calcul parallèle.
Le GPU bénéficie d’une large diffusion favorisée par le marché important des jeux vidéos, ce qui a permis d’en réduire considérablement les couts par rapport à une architecture trop spécialisée. Pour comprendre les différences fondamentales entre un CPU et un GPU, il suffit de comparer leur manière de traiter chaque opération. Les CPU incluent un nombre restreint de cœurs optimisés pour le traitement en série, alors que les GPU intègrent des milliers de cœurs conçus pour traiter efficacement de nombreuses tâches simultanées.
Les constructeurs ont décidé donc de mettre en place des langages permettant de tirer profit des possibilités offertes par les processeurs graphiques. Au début, ATI a développé Close to Metal, une librairie très bas niveau suppléée par la suite par Stream. Ensuite vient NVIDIA, avec CUDA, une technologie disponible sur toutes les cartes graphiques grand public depuis la série des GeForce 8000. Cependant, la programmation des GPUs peut s’avérer délicate. C++ est rarement disponible dans une forme non modifiée et il existe peu d’approches portables et open source. L’une des plateformes les plus populaires, CUDA, n’a pratiquement aucune implémentation open source de qualité. Par conséquent, son support pour C++ est resté à la traine et n’a pas constitué un attrait pour les chercheurs et tous ceux qui n’ont pas été convaincus par les outils de NVIDIA.
Néanmoins, les choses commencent à changer aujourd’hui. Clang est maintenant un compilateur GPU open source et entièrement fonctionnel. Il fournit un modèle de programmation compatible avec CUDA et peut compiler la plupart des bibliothèques de cette technologie allant de Thrust à Eigen et TensorFlow.
Dans cette conférence, Justin Lebar qui est un ingénieur de Google, va donner un aperçu sur comment LLVM et Clang supportent C++ sur GPU, comment ils sont compatibles avec un code existant de CUDA et comment il est possible aujourd’hui d’écrire du code pour l’exécuter sur des GPU à l’aide de ce compilateur open source.
Source : YouTube
Et vous ?

Voir aussi :




Vous avez lu gratuitement 5 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.