Tout le monde a sur son bureau cet énorme supercalculateur massivement parallélisé sous la forme d’un GPU de carte graphique.
-Adam
Découvrez CUDA de NVidia. IMO est la plate-forme la plus simple pour programmer des 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 tout type de calcul en utilisant GPU.
J'espère que ça t'as aidé.
Je pense que les autres ont répondu à votre deuxième question. Pour ce qui est du premier, le "Hello World" de CUDA, je ne pense pas qu’il existe un standard, 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 kit de développement NVIDIA, la tâche très simple peut être étendue pour illustrer de nombreuses considérations CUDA telles que les lectures fusionnées, les conflits de banques de mémoire et le déroulement de boucles.
Voir cette présentation pour plus d'informations:
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
Examinez le SDK ATI Stream Computing . Il est basé sur BrookGP développé à Stanford.
À l’avenir, tous les travaux GPU seront normalisés à l’aide de OpenCL . C'est une initiative parrainée par Apple qui sera neutre vis-à-vis des fournisseurs de cartes graphiques.
CUDA est un excellent cadre 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 s’exécute sur le CPU à votre compilateur habituel. N'est NVIDIA que si et ne fonctionne que sur les cartes 8 séries ou mieux. Vous pouvez vérifier zone CUDA pour voir ce que l'on peut en faire. Il y a quelques bonnes démos dans le CUDA SDK . La documentation fournie avec le SDK constitue un très bon point de départ pour écrire du code. Il vous guidera à travers l’écriture d’un noyau de multiplication matricielle, ce qui en fait un excellent point de départ.
OpenCL est un effort pour rendre une bibliothèque multi-plateforme capable de programmer le code approprié, entre autres choses, aux GPU. Il permet d'écrire le code sans savoir sur quel processeur graphique il sera exécuté, ce qui facilite l'utilisation d'une partie de la puissance du processeur graphique sans cibler spécifiquement plusieurs types de processeur graphique. Je soupçonne qu’il n’est pas aussi performant que le code GPU natif (ou aussi naturel que le permettent les fabricants de GPU), mais le compromis peut en valoir la peine pour certaines applications.
Il en est encore à ses débuts (1.1 dans ce cas-ci), mais a gagné du terrain dans le secteur - par exemple, il est supporté nativement sur OS X 10.5 et supérieur.
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 compilation (comme #pragma acc kernels
) pour envoyer du travail au GPU. Par exemple, si vous avez une grosse boucle (seules les plus grandes en bénéficient réellement):
int i;
float a = 2.0;
float b[10000];
#pragma acc kernels
for (i = 0; i < 10000; ++i) b[i] = 1.0f;
#pragma acc kernels
for (i = 0; i < 10000; ++i) {
b[i] = b[i] * a;
}
Edit: malheureusement, seul le compilateur PGI prend réellement en charge OpenACC pour le moment, pour les cartes NVIDIA GPU.
Peut-être aimerez-vous ceci GPGPU IDE , qui cache une complexité inutile pour les expériences GPU générales. Actuellement, les noyaux peuvent être programmés pour les shaders OpenCL et/ou GLSL.
Si vous utilisez MATLAB, il devient assez simple d'utiliser des GPU pour l'informatique technique (calculs matriciels et calculs complexes). Je trouve cela utile pour les utilisations des cartes GPU en dehors des jeux. Consultez le lien ci-dessous:
Je m'intéresse également à ce sujet et à la programmation parallèle. Et j'ai trouvé ce qui suit lien , jetez un coup d'œil à Udacity.com!