Impact des GPU sur la simulation de fluides avec PyFR

La simulation de fluides (plus connue sous le sigle anglophone CFD, computational fluid dynamics) apparaît dans un grand nombre d’applications d’ingénierie : il s’agit de déterminer, par ordinateur, par exemple, l’écoulement de l’air autour d’avions ou de voitures de formule 1. Ainsi, les concepteurs peuvent adapter leurs pièces, notamment pour en améliorer l’aérodynamisme. Les calculs requis sont extrêmement poussés (équations aux dérivées partielles non linéaires) et requièrent une grande puissance de calcul.

Un grand nombre de logiciels existe déjà pour résoudre ces problèmes, comme OpenFOAM dans le monde du logiciel libre. Cependant, ils n’exploitent pas tous les accélérateurs disponibles pour ces calculs (OpenFOAM nécessite des extensions pour ce faire), comme les processeurs graphiques (GPU), à la mode dans le monde du calcul scientifique (HPSC) : l’intérêt est de bénéficier d’un très grand nombre de cÅ“urs. En effet, un processeur traditionnel a au plus une vingtaine de cÅ“urs par processeur : par exemple, dix-huit chez Intel). Un GPU en compte désormais plusieurs milliers (tant chez NVIDIA que AMD), bien qu’avec une architecture radicalement différente.

PyFR est un logiciel de CFD assez récent (sa version 1.0.0 est sortie la semaine dernière), basé sur un concept différent des solveurs actuels, la reconstruction de flux (FR), pour atteindre une précision bien plus élevée que les solveurs existants, même sur des géométries très complexes, tout en étant mieux adaptés à des GPU. (Techniquement, pour la discrétisation spatiale, il s’agit d’un schéma d’intégration à ordre élevé sur une grille non structurée, qui mêle la précision de méthodes d’ordre élevé des méthodes à différences finies et l’adaptabilité géométrique des volumes et éléments finis.)

Les solveurs actuels partent d’hypothèses des années 1980, quand les opérations de calcul sur des nombres réels étaient très coûteuses, mais la mémoire très rapide par rapport au processeur, deux points complètement dépassés par les architectures actuelles, afin de simuler des écoulements stationnaires. Ainsi, pour s’adapter à des simulations non stationnaires, il faut réinventer une série de composants

En pratique, ce nouveau logiciel peut donner des résultats dix fois plus précis dix fois plus rapidement que les techniques précédentes, tout en étant capable d’exploiter la puissance d’une série de GPU. Il s’adapte également à une série de plateformes : des grappes de CPU, formant les superordinateurs les plus courants ; des GPU, peu importe leur fabricant (tant AMD que NVIDIA). La distribution du calcul sur plusieurs nÅ“uds s’effectue par MPI.

Côté technologique, la parallélisation sur un nÅ“ud de calcul est possible tant par OpenMP (plusieurs fils d’exécution sur le même processeur) que CUDA ou OpenCL (GPU). Le logiciel lui-même est principalement codé en Python — ce qui ne l’empêche pas d’exceller au niveau des temps de calcul, grâce à la facilité d’appel de code natif, principalement en C et Fortran. L’interpréteur ajoute un surcoût en temps d’exécution inférieur au pour cent : cette perte de performance est négligeable quand le code de calcul ne compte que cinq mille lignes de code !

Tout le côté numérique est extrait dans une série de primitives bien comprises et optimisées. La communication s’effectue par une version de MPI adaptée à du calcul sur GPU, notamment en utilisant la technologie NVIDIA GPUDirect, qui permet la copie de données directement dans la mémoire du GPU, sans passer par la mémoire centrale (RAM). Les surcoûts dus à Python sont effacés en très grande partie grâce à la nature asynchrone de CUDA : le code Python n’est pas obligé d’attendre la fin des calculs sur le GPU avant de passer à autre chose.

Sources : On a Wing and PyFR: How GPU Technology Is Transforming Flow Simulation, PyFR: An open source framework for solving advection–diffusion type problems on streaming architectures using the flux reconstruction approach, PyFR: Technical Challenges of Bringing Next Generation Computational Fluid Dynamics to GPU Platforms – See more at: http://on-demand-gtc.gputechconf.com/gtcnew/on-demand-gtc.php?searchByKeyword=pyfr&searchItems=&sessionTopic=&sessionEvent=&sessionYear=&sessionFormat=&submit=&select=#sthash.CNa7viRf.dpuf (dont l’image).

Voir aussi : le site officiel de PyFR.

CUDA 7 RC

CUDA 7, dont la RC vient de sortir, est présentée par NVIDIA comme une « mise à jour importante de la plateforme ». Outre les habituelles améliorations de performances, du côté des plateformes, l’architecture IBM POWER sera maintenant gérée dans toutes les versions du SDK (seule la version 5.5 était disponible) — ce qui n’est pas étonnant, NVIDIA étant membre de la fondation OpenPOWER.

Lire la suite

Les prochains processeurs NVIDIA

Le CEO de NVIDIA, Jen-Hsun Huang, après avoir annoncé quelques détails architecturaux sur le futur des Tegra, a ébauché un futur où les technologies de la marque se rejoignent (mobile, desktop et superordinateurs). L’année dernière, l’architecture Kepler pour les GPU a été mise sur le marché, utilisée notamment pour des superordinateurs bien plus efficaces, énergétiquement parlant (voir le top 500 de novembre 2012).

La prochaine génération de GPU, Maxwell, offrira une mémoire virtuelle unifiée, donnant accès à la mémoire des GPU pour les CPU – et vice-versa. La suivante, Volta, tentera d’optimiser les accès à la mémoire sur le GPU, en plaçant les modules de mémoire juste au-dessus des puces de calcul (NVIDIA parle de mémoire empilée – « stacked DRAM ») ; les ingénieurs estiment une vitesse d’un téraoctet par seconde, soit cinquante disques Blu-Ray par seconde.

Planning prévisionnel pour les GPU NVIDIA.

Côté mobile, Logan mixera un processeur Tegra semblable aux actuels avec un GPU Kepler, sur la même puce, dans les mêmes dimensions qu’un Tegra actuel. Parker ajoutera le support d’ARM 64 bits, en plus de passer à un GPU Maxwell.

Planning prévisionnel pour les processeurs NVIDIA Tegra.

Source : http://blogs.nvidia.com/2013/03/nvidia-ceo-updates-nvidias-roadmap/

Kayla : NVIDIA Tegra et GPU Kepler

NVIDIA, producteur historique de cartes graphiques, s’était récemment lancé dans les processeurs ARM, utilisés dans certains appareils mobiles (avec un GPU intégré). Une grande révolution est venue ces dernières années dans le secteur des GPU : leur utilisation pour des calculs non graphiques, fournissant même la plus grosse partie de la puissance de calcul du superordinateur le plus rapide du moment (voir le top 500 de novembre 2012). Il semblait logique de vouloir combiner ces deux aspects – ce sera bientôt chose faite, avec la plateforme Kayla.

Cette plateforme est constituée d’un processeur mobile Tegra avec un GPU NVIDIA (basé sur l’architecture Kepler), pour une puissance de calcul encore jamais atteinte sur mobile. Parmi les technologies supportées, on note CUDA 5 et OpenGL 4.3. De manière très physique, cet ensemble n’est pas particulièrement compact (il convient plus pour des tablettes que pour des smartphones), mais donne un avant-goût des possibilités de Logan, la prochaine génération de processeurs Tegra (qui sera bien plus compacte que Kayla).

Jen-Hsun Huang, CEO de NVIDIA, présentant Kayla.

Avec le support d’OpenGL 4.3, on peut s’attendre à des effets graphiques bien plus avancés que ce que l’on trouve actuellement sur les applications mobiles (avec le support de la tessellation, notamment). CUDA 5 est une plateforme très avancée de GPGPU : on pourrait s’attendre à avoir des applications de reconnaissance (faciale, d’objets, etc.) très rapides et efficaces sur des téléphones. Ainsi, les performances de ces appareils deviennent comparables avec les performances d’un ordinateur plus classique.

Le portage de code ne devrait pas être d’une complexité énorme. NAMD, un logiciel de simulation de dynamique moléculaire, a été porté en deux jours sur cette nouvelle plateforme ; le logiciel de lancer de rayons de NVIDIA, OptiX, a, lui, été porté en une journée à peine.

Source : http://blogs.nvidia.com/2013/03/gpu-computing-comes-to-tegra/

NVIDIA CUDA supporte Python

Python, sacré langage de l’année 2010 par TIOBE, est désormais supporté par NVIDIA CUDA, la technologie de GPGPU (calcul général sur processeur graphique) de NVIDIA. Auparavant, seuls C, C++ et Fortran étaient supportés. Python est un langage bien plus dynamique, flexible, fournissant en général une meilleure productivité (il n’est généralement pas compilé) et loin d’être en perte de vitesse, en plus d’être facile à apprendre.

Ce support émane de NumbaPro, un compilateur Python, basé sur le compilateur libre (sous licence type BSD) LLVM, développé par la société Continuum Analytics. Il a été rendu possible grâce au passage sur cette base de code du compilateur principal de CUDA, NVCC, de plus sous licence libre.

Au vu des fonctionnalités avancées de LLVM, comme la compilation à la volée, les performances ne sont pas sacrifiées. Selon Vijay Pande, professeur à l’université de Stanford, ce support permettra à son équipe de garder la productivité de Python au-delà des prototypes, au lieu de réimplémenter les algorithmes en C ou C++.

Selon Travis Oliphant, cofondateur de Continuum Analytics,

Hundreds of thousands of Python programmers will now be able to leverage GPU accelerators to improve performance on their applications. With NumbaPro, programmers have the best of both worlds: they can take advantage of the flexibility and high productivity of Python with the high performance of NVIDIA GPUs.

Source : http://www.readability.com/read?url=http://nvidianews.nvidia.com/Releases/GPU-Accelerated-Computing-Reaches-Next-Generation-of-Programmers-With-Python-Support-of-NVIDIA-CUDA-950.aspx.

NVIDIA CUDA 4.1 est disponible, ouverture des sources du compilateur

La version 4.0 étant sortie en mai 2011, deux mois après une Release Candidate, voici la nouvelle cuvée CUDA, la version 4.1, qui se concentre sur trois axes (et non des moindres !) :

  • un Visual Profiler amélioré, avec analyse de performance automatisée ;
  • des centaines de nouvelles fonctions pour NPP (NVIDIA Performance Primitives), de nouvelles primitives pour le traitement des images et du signal fortement optimisées ;
  • un nouveau compilateur basé sur LLVM.

Ces nouvelles fonctionnalités ont principalement été développées à l’intention des (géo)physiciens, biologistes et chimistes. Évidemment, bien d’autres nouvelles fonctionnalités sont disponibles (support des fonctions de Bessel, nouveaux générateurs de nombres pseudoaléatoires, etc.).

Le profileur visuel

Cette nouvelle version de l’environnement de profiling basé sur Eclipse effectue une analyse pointue des performances des applications automatiquement, d’une manière encore simplifiée de telle sorte que tous les développeurs pourront retirer un maximum de performances de CUDA et de leur matériel en identifiant les goulots d’étranglement de leur implémentation et en les corrigeant, grâce à une suggestion étape par étape d’améliorations au code avec des liens avec la documentation déjà présente dans la boîte à outils.

null

Parallel Nsight 2.1

Un add-in pour Visual Studio combinant la puissance de l’EDI à celle du GPGPU : il permet de déboguer, profiler et optimiser du code prévu pour GPU à l’intérieur même de l’EDI, bien que plus prévu pour le CPU (que ce soit des kernels CUDA ou OpenCL, des shaders DirectX ou OpenGL).

Cette nouvelle version apporte la modification à chaud des shaders, mais aussi la visualisation des warps en cours d’exécution. On dispose désormais de plus d’informations sur ce qui se passe sur le GPU : l’état de CUDA au lancement, les spécificités du GPU courant (pilote, architecture, mémoire, etc.), filtrage des exceptions, assertions, points d’arrêt, etc. On peut également arrêter le débogage sur une assertion.

NVIDIA Performance Primitives

Le nombre de fonctions disponibles a doublé par rapport à la version précédente, principalement grâce au nouveau modules de traitement du signal, avec quelques modules supplémentaires pour le traitement des images, en plus des modules déjà disponibles pour les statistiques, le filtrage, les opérations morphologiques, les transformations linéaires et géométriques, la compression et bien d’autres (presque un millier de fonctions supplémentaires !).

LLVM

Un tout nouveau compilateur est disponible, basé sur LLVM. Il promet de belles optimisations sans devoir modifier le code, simplement en le recompilant (jusqu’à 10 %, selon les applications, sans aucune modification du code existant). Cette infrastructure de compilateurs est prévue pour être modulaire – il devrait donc être possible, à moindres frais, de fournir un compilateur CUDA pour d’autres plateformes que celles de NVIDIA, sans oublier le support de langages plus spécifiques que C, C++ et Fortran. En effet, les sources sont disponibles à tout qui en fait la demande.

null

Sources

Communiqué de presse

http://developer.nvidia.com/parallel-nsight-21-new-features

http://drdobbs.com/architecture-and-design/232500594

Télécharger la nouvelle version du CUDA Toolkit et de Parallel Nsight.

CUDA 4.0 arrive, la release candidate disponible

La sortie cette semaine aux développeurs enregistrés de CUDA est l’accomplissement de milliers d’heures dédiées à ce projet. Cette technologie peut sembler jeune, sa première version, la 1.0, n’a été sortie qu’en 2007. L’effet de cette sortie sur le monde entier n’a, sans nul doute possible, pas été nul. Elle n’est pas non plus le seul terrain d’avance pour les technologies massivement parallèles sur matériel NVIDIA : les API comme OpenCL et DirectCompute sont elles aussi supportées et améliorées, en plus d’un accès direct au GPU en C, C++ et Fortran.

Comme toujours, NVIDIA est à la recherche d’aide sur le sujet, notamment au niveau des retours d’utilisateurs, d’améliorations possibles, des bogues ; tout ce qui vous empêche de développer rapidement, de déployer des applications sans souci, tout cela doit être amélioré. Si vous êtes intéressé dans cette perspective, n’hésitez pas à vous enregistrer comme développeur.

Le contenu de CUDA 4.0

Venons-en au fait de cette sortie prochaine, vendredi 4 mars aux développeurs enregistrés.

Notons la version 2.0 de GPUDirect, une technologie qui offre un support pour des communications entre les GPU d’un serveur ou d’une station de travail, une fonctionnalité que beaucoup décrivent comme un outil pour un développement plus rapide et plus aisé pour plusieurs GPU, ainsi qu’un vecteur d’améliorations de performances.


UVA, acronyme de Unified Virtual Addressing, permet d’utiliser un espace d’adressage mémoire unifié entre la mémoire du système et celles des GPU.

Aussi, grande nouveauté par rapport aux versions précédentes de CUDA, le partage entre divers threads de GPU : plusieurs threads ou processus sur le CPU peuvent utiliser le même GPU pour leurs calculs. De même, un même thread CPU peut utiliser plusieurs GPU en même temps. Thrust est désormais intégré dans CUDA, le portage de la STL du C++ aux technologies du GPU.

Pour les amateurs de C++, de nouvelles fonctionnalités propres au langage sont désormais supportées, comme les fonctions virtuelles, ainsi que les mots clés new et delete pour la gestion de la mémoire allouée.

Sources : http://blogs.nvidia.com/2011/03/announcing-cuda-4-0/, http://developer.nvidia.com/object/cuda_4_0_RC_downloads.html, http://www.ddj.com/high-performance-computing/229219474;jsessionid=YAXVYSIIVLYCTQE1GHPSKH4ATMY32JVN, http://www.anandtech.com/show/4198/nvidia-announces-cuda-40 (d’où proviennent les images)

Une série de marathons CUDA : NVIDIA CUDA Superhero relève les plus grands challenges de l’informatique

Le premier concours CUDA va bientôt se dérouler : la première manche commence le 15 septembre 2009 pour s’achever le 25. Les gagnants seront désignés le 30, à l’hôtel Fairmont, dans la patrie de NVIDIA : San Jose, en Californie (États-Unis).

CUDA est la solution proposée par NVIDIA pour le GPGPU, le calcul sur GPU (processeur graphique).

Il s’agit d’un marathon : vous avez assez peu de temps pour participer, et le défi à relever est assez immense, à en croire le site (some of computing’s biggest challenges, tel est le but clairement annoncé).

Le sujet est, à l’heure actuelle, bien entendu, inconnu, et sera révélé le jour J. 5 gagnants se partageront la somme de 5000$. Le concours est ouvert à tous les développeurs, et se déroulera en trois manches successives.

L’objectif de ce concours est clairement annoncé par NVIDIA :

We can educate over 200,000 programmers on the advantages parallel programming offers and fan the flames of the GPU Computing revolution.

L’organisation du concours est remise à TopCoder, un site de concours.

Plus d’infos ? Réactions ? Le forum !

OptiX, ou le ray tracing sur GPU

NVIDIA prévoit depuis un certain temps un système de ray tracing sur GPU : OptiX. Des démonstrations d’utilisation de ce moteur sont désormais disponibles sur le site de NVIDIA : NVIDIA® OptiXâ„¢ ray tracing engine examples.

Une version beta, privée, de ce moteur est aussi disponible. Vous pouvez vous inscrire sur la même page. Ce moteur, pour le moment, se limite aux GPU à base de NVIDIA Quadro FX, à condition que les pilotes R190 (ou plus récents) soient installés.

Le moteur OptiX se base entièrement sur la solution de GPGPU CUDA, ce qui lui permet de profiter des accélérations proposées sur certains modèles (les 3800, 4800 et 5800 des NVIDIA Quadro FX, par exemple) pour encore accélérer le rendu.

Qu’est-ce qu’un ray tracer ?

Le site web d’OptiX

Réagir !

Compilateur Fortran pour NVIDIA CUDA

On l’attendait depuis un petit bout de temps : NVIDIA envisage de sortir un compilateur Fortran pour CUDA, en partenariat avec PGI, vers novembre 2009. Jusqu’à maintenant, seul le C était supporté, avec quelques extensions du C++ (comme les templates), mais sans plus.

Cela répond à la demande du secteur professionnel : le Fortran est plus répandu que le C dans les laboratoires, malgré son grand âge : il est apparu en 1957, son développement a commencé en 1953. Il est depuis maintenu, de nouvelles spécifications sortant de temps en temps. Les principales sont F77 et F90, précédées par FII (58), FIII (58), FIV (61) et F66. Il évolue encore : F95, F03 et même F08.

La majorité des librairies de calcul sont écrites en Fortran : par exemple, BLAS et LAPACK, qui servent au tests de supercalculateurs, pour déterminer leur puissance en GFlops. Ces librairies ont été portées vers le C, mais elles étaient prévues, à l’origine, pour le Fortran.

Plus d’informations sur le site (en anglais) de Portland Group : PGI CUDA Fortran Compiler. Ainsi que dans l’annonce officielle.

Réjouissez-vous, amateurs de Fortran : bientôt, vous pourrez profiter des GPU pour vos calculs !