Tout le monde a cet énorme superordinateur massivement parallélisé sur son bureau sous la forme d'un GPU de carte graphique.
- Quel est l'équivalent "bonjour du monde" de la communauté GPU?
- Que dois-je faire, où dois-je aller, pour commencer à programmer le GPU pour les principaux fournisseurs de GPU?
-Adam
Réponses:
Découvrez CUDA par NVidia, IMO est la plate-forme la plus simple pour faire de la programmation GPU. Il y a des tonnes de documents sympas à lire. http://www.nvidia.com/object/cuda_home.html
Bonjour tout le monde serait de faire n'importe quel type de calcul en utilisant le GPU.
J'espère que cela pourra aider.
la source
la source
Je pense que les autres ont répondu à votre deuxième question. En ce qui concerne le premier, le "Hello World" de CUDA, je ne pense pas qu'il existe une norme établie, mais personnellement, je recommanderais un additionneur parallèle (c'est-à-dire un programme qui additionne N entiers).
Si vous regardez l'exemple de «réduction» dans le SDK NVIDIA, la tâche superficiellement simple peut être étendue pour démontrer de nombreuses considérations CUDA telles que les lectures fusionnées, les conflits de banques de mémoire et le déroulement de boucle.
Voir cette présentation pour plus d'informations:
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
la source
Jetez un œil au SDK ATI Stream Computing . Il est basé sur BrookGPU développé à Stanford.
À l'avenir, tous les travaux GPU seront normalisés à l'aide d' OpenCL . C'est une initiative parrainée par Apple qui sera indépendante des fournisseurs de cartes graphiques.
la source
OpenCL est un effort pour créer une bibliothèque multiplateforme capable de programmer du code adapté, entre autres, aux GPU. Il permet d'écrire le code sans savoir sur quel GPU il fonctionnera, ce qui facilite l'utilisation d'une partie de la puissance du GPU sans cibler spécifiquement plusieurs types de GPU. Je soupçonne que ce n'est pas aussi performant que le code GPU natif (ou aussi natif que les fabricants de GPU le permettent), mais le compromis peut en valoir la peine pour certaines applications.
Il en est encore à ses débuts (1.1 à partir de cette réponse), mais a gagné en popularité dans l'industrie - par exemple, il est pris en charge nativement sur OS X 10.5 et supérieur.
la source
CUDA est un excellent framework pour commencer. Il vous permet d'écrire des noyaux GPGPU en C. Le compilateur produira un microcode GPU à partir de votre code et enverra tout ce qui fonctionne sur le CPU à votre compilateur régulier. Il s'agit uniquement de NVIDIA et ne fonctionne que sur les cartes de la série 8 ou mieux. Vous pouvez consulter la zone CUDA pour voir ce que vous pouvez en faire. Il existe d'excellentes démos dans le SDK CUDA . La documentation fournie avec le SDK est un très bon point de départ pour écrire du code. Il vous guidera tout au long de l'écriture d'un noyau de multiplication matricielle, ce qui est un excellent point de départ.
la source
Un autre moyen facile d'entrer dans la programmation GPU, sans entrer dans CUDA ou OpenCL, est de le faire via OpenACC .
OpenACC fonctionne comme OpenMP, avec des directives de compilateur (comme
#pragma acc kernels
) pour envoyer le travail au GPU. Par exemple, si vous avez une grande boucle (seules les plus grandes en bénéficient vraiment):Edit: malheureusement, seul le compilateur PGI prend vraiment en charge OpenACC pour le moment, pour les cartes GPU NVIDIA.
la source
Essayez GPU ++ et libSh
Le lien LibSh a une bonne description de la façon dont ils ont lié le langage de programmation aux primitives graphiques (et évidemment, les primitives elles-mêmes), et GPU ++ décrit de quoi il s'agit, à la fois avec des exemples de code.
la source
Si vous utilisez MATLAB, il devient assez simple d'utiliser des GPU pour le calcul technique (calculs matriciels et calcul intensif / calcul des nombres). Je le trouve utile pour les utilisations de cartes GPU en dehors des jeux. Consultez le lien ci-dessous:
http://www.mathworks.com/discovery/matlab-gpu.html
la source