Vous êtes sur la page 1sur 29

Date de publication : 29/06/2009 Dernire mise jour : 29/06/2009

Cette F.A.Q. a t ralise partir des questions frquemment poses et de l'exprience personnelle des auteurs. Nous tenons souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prtend pas non plus tre complte. Nous esprons que cette F.A.Q. saura rpondre un maximum de vos questions. Nous vous souhaitons une bonne lecture. Nous tenons remercier ram-0000 pour sa relecture ! L'quipe vous souhait une bonne lecture !

Ont contribu cette FAQ :

Thibaut Cuvelier (Site web) -

1. GPGPU (16) ...............................................................................................................................................................................4 1.1. Gnralits (2) .................................................................................................................................................................. 5 1.2. Vocabulaire (9) ................................................................................................................................................................. 6 1.3. Matriel (5) ....................................................................................................................................................................... 9 2. CUDA (30) .............................................................................................................................................................................. 11 2.1. Gnralits (6) .................................................................................................................................................................12 2.2. Vocabulaire (5) ............................................................................................................................................................... 17 2.3. Pourquoi choisir CUDA (3) ........................................................................................................................................... 19 2.4. Matriel (5) ..................................................................................................................................................................... 21 2.5. Installation de CUDA (6) ............................................................................................................................................... 23 2.6. Spcificits de la programmation (5) ............................................................................................................................. 28

-3Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > GPGPU

-4Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > GPGPU > Gnralits Qu'est-ce que le GPGPU ?


Auteurs : Thibaut Cuvelier , General Purpose Processing on Graphic Processing Unit. Parfois crit GPGP, ou GP2. Il s'agit de l'utilisation d'un GPU, qui d'ordinaire ne s'occupe que de la 3D, pour effectuer des calculs massivement parallles, d'habitude effectus sur les CPU. Les GPU sont des processeurs qui peuvent excuter une plus petite action un trs grand nombre de fois en parallle, alors que les CPU sont prvus pour excuter de longs et complexes calculs en srie. Les premires solutions de GPGPU datent des GeForce 5000, grce aux shaders. Mais programmer des shaders pour certains calculs tait plus qu'ardu, vu que les donnes doivent tre converties en images avant de pouvoir tre traites de la sorte. Ces solutions n'ont donc pas eu beaucoup de succs. Plus rcemment, DirectX a propos du GPGPU, dans une version trs semblable celle des shaders, avec des compute shaders, dans sa version 11.

Quel gain puis-je esprer en utilisant une solution de GPGPU ?


Auteurs : Thibaut Cuvelier , Cela dpend uniquement du type d'application. Une application qui n'est pas paralllisable verra ses performances diminuer fortement avec le GPGPU, tandis qu'une application fortement paralllisable les verra augmenter jusqu' 200x. Cela fait grandement changer les habitudes de programmation : autrefois, les architectures aussi parallles que les GPU modernes taient extrmement chres, elles taient donc peu utilises. L'avnement du GPGPU devrait faire changer la donne, vu que les GPU sont trs bon march, et qu'on peut les mettre jour trs facilement. Pour donner un ordre d'ide, pour de la compression de flux vido (un genre d'opration qui plat aux GPU), TMPGEnc, grce CUDA, peut aller jusqu' 8x plus vite que sur un CPU haut de gamme. Cependant, le gain avec une puce graphique bas de gamme ne s'lve qu' une rapidit amliore de 50%. Pour un systme de recherche de mot de passe perdu, la vitesse peut tre monte d'un facteur 15. Plus spectaculairement, un calcul de densit mlange peut tre acclr 170x !

lien :

Densit mlange

-5Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > GPGPU > Vocabulaire Qu'est-ce que le calcul homogne ?


Auteurs : Thibaut Cuvelier , Il s'agit d'une simple ide : pour simplifier le dveloppement, il faut utiliser partout la mme architecture, parfois au dtriment des performances. Le CPU tend tre le meilleur pour les oprations srielles, avec beaucoup de branchements et d'accs alatoires la mmoire. Le GPU, a contrario, excelle sur des calculs massivement parallles avec des flottants. Le calcul homogne, c'est simplement utiliser le mme processeur pour toutes les oprations. On parle aussi de calcul homogne s'il est effectu sur une seule et mme plateforme : Windows, Mac OS X, GNU/ Linux, GNU/Hurd... lien : Qu'est-ce que le calcul htrogne ?

Qu'est-ce que le calcul htrogne ?


Auteurs : Thibaut Cuvelier , Il s'agit d'une simple ide : pour obtenir la meilleure efficacit, les applications devraient utiliser les deux processeurs des ordinateurs : le CPU et le GPU. Le CPU tend tre le meilleur pour les oprations srielles, avec beaucoup de branchements et d'accs alatoires la mmoire. Le GPU, a contrario, excelle sur des calculs massivement parallles avec des flottants. Le calcul htrogne, c'est simplement utiliser le bon processeur pour la bonne opration. On parle aussi de calcul htrogne s'il est effectu sur diffrentes plateformes : Windows, Mac OS X, GNU/Linux, GNU/Hurd... lien : Qu'est-ce que le calcul homogne ?

Qu'est-ce que le calcul sriel ?


Auteurs : Thibaut Cuvelier , Aussi dit calcul en srie ou calcul squentiel. Il s'agit de calcul qui ne peut se diviser en parties distinctes : elles doivent se drouler l'une aprs l'autre. Les donnes sur lesquelles un processeur de calcul sriel seront envoyes une une, en file. Les CPU sont des processeurs calcul sriel. En effet, on leur demande d'effectuer de longs calculs complexes (c'est-dire multiples embranchements) sur une assez petite quantit de donnes. Jusqu' prsent, ils taient aussi utiliss pour des tches relevant du calcul parallle, parce que leur puissance le leur permettait. Dsormais, la frquence des processeurs ne peut plus augmenter (les limites de la physiques sont presque atteintes des frquences de 5 Ghz). lien : Qu'est-ce que le calcul parallle ?

-6Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

lien :

Qu'est-ce que sont les donnes parallles ?

Qu'est-ce que le calcul parallle ?


Auteurs : Thibaut Cuvelier , Il s'agit de calcul qui peut tre divis en parties distinctes, chacune excute en mme temps que les autres. Les donnes sur lesquelles un processeur de calcul parallle seront envoyes ensemble, d'un seul coup, pour autant que la bande passante le permette. Les GPU sont des processeurs calcul parallle. En effet, on leur demande d'effectuer peu de traitements quantitatifs mais sur une masse norme de donnes. De plus, ils ont des restrictions budgtaires, qui ont fait qu'ils ne peuvent pas intgrer des processeurs rapides (c'est--dire cadencs plusieurs gigahertz, le premier ayant t atteint il y a peu). Les ingnieurs ont donc d trouver un moyen de traiter autant de donnes en trs peu de temps. La solution retenue a t beaucoup d'units de calculs faible frquence, qui fonctionnent en parallle. lien : Qu'est-ce que le calcul sriel ?

Qu'est-ce que sont les donnes parallles ?


Auteurs : Thibaut Cuvelier , Des donnes sont parallles si elles peuvent tre traites sparment, et en parallle. Par exemple, des phnomnes physiques indpendants (agissant sur des objets diffrents). Des donnes parallles peuvent aussi arriver paralllement au processeur pour traitement. Ce concept de donnes parallles doit tre compris avec celui de calcul parallle. L'un ne peut aller sans l'autre : dans le cas de calcul sriel, pas besoin de donnes parallles. Seules les donnes parallles permettent de pleinement utiliser la capacit d'un processeur calcul parallle. Ce genre de processeur peut en effet traiter des flux de donnes, sans cesse augments. lien : lien : Qu'est-ce que le calcul parallle ? Qu'est-ce que le calcul parallle ?

Qu'est-ce que l'hte ?


Auteurs : Thibaut Cuvelier , L'hte est le processeur qui ordonne l'autre (un GPU) d'effectuer des calculs prcis sur un ensemble de donnes donn. Pour le moment, l'hte est le CPU. Le processeur de l'hte effectue du calcul sriel, toujours, pour le moment.

-7Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

L'hte est charg de fournir le travail, de l'ordonner, d'en rcuprer les rsultats, mais aussi de grer les diffrentes erreurs qui pourraient advenir. lien : Qu'est-ce que le calcul parallle ?

Qu'est-ce que le priphrique ?


Auteurs : Thibaut Cuvelier , Le priphrique est celui qui effectue les calculs demands par l'hte. Pour le moment, il s'agit du GPU. Le processeur du priphrique effectue du calcul parallle, toujours, pour le moment. Le priphrique est charg de recevoir le travail, de l'excuter, d'crire le rsultat sur la mmoire du GPU, de retourner les erreurs ventuelles. lien : Qu'est-ce que le calcul parallle ?

Qu'est-ce qu'un kernel ?


Auteurs : Thibaut Cuvelier , Un kernel est une fonction qui sera excute, sur le CPU, sur le GPU ou n'importe o. Un kernel a, pour vocation, d'tre souvent instanci, pour respecter le principe de la paralllisation des donnes. Un kernel doit commencer par choisir ses donnes, ensuite il effectue sa tche sur ces donnes uniquement et retourne le rsultat dans la mmoire du GPU. Les kernels sont limits en longueur : sous CUDA, ils sont limits 2.000.000 d'instructions PTX, ce qui est fort long. lien : lien : Qu'est-ce que sont les donnes parallles ? Qu'est-ce que PTX ?

Qu'est-ce qu'un appel (a)synchrone de kernel ?


Auteurs : Thibaut Cuvelier , Si un kernel est appele de manire synchrone, il ne retournera que quand les calculs auront t effectus. Si un kernel est appele de manire asynchrone, il retournera avant que les calculs soient effectus. Les fonctions d'accs la mmoire (lecture et criture sur le GPU depuis le CPU) sont synchrones : elles attendent que tous les threads aient fini de travailler avant d'effectuer leur opration. lien : Qu'est-ce que sont les donnes parallles ?

-8Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > GPGPU > Matriel Qu'est-ce qu'un cluster d'units de traitement des textures (TPC) ?
Auteurs : Thibaut Cuvelier , En anglais, TPC (Texture Processor Cluster). Il s'agit, en fait, d'un processeur de shaders.

Cette unit de calcul est constitue d'une unit de traitement des textures (en abrg : TEX, pour l'anglais Texture) et de deux multiprocesseurs de flux (en abrg : SM, pour l'anglais Streaming Multiprocessor), pour les units principales. Elle contient aussi un contrleur de multiprocesseurs de flux (en abrg : SMC, pour l'anglais Streaming Multiprocessor Controller), un contrleur de gomtrie, un cache de niveau 1 pour les textures qui seront utilises par les kernels et un cache de niveau 2 pour les instructions et les constantes. lien : lien : Qu'est-ce qu'une unit de traitement des textures (TEX) ? Qu'est-ce qu'un multiprocesseur de flux (SM) ?

Qu'est-ce qu'une unit de traitement des textures (TEX) ?


Auteurs : Thibaut Cuvelier , En anglais, TEX (Texture Processing Unit). Un TEX est disponible dans chaque TPC, et est accompagn de 2 SM. Elle contient aussi 4 gnrateurs d'adresses de texture (en abrg : TA, pour l'anglais Texture Adress Generator) et 8 units de filtrage de texture (en abrg : TF, pour l'anglais Texture Filter Unit). Les TA servent donner des adresses aux textures, en fonction de leur taille, pour qu'elles ne se pitinent jamais. Les TF servent effectuer les filtrages des textures. Lors de l'accs un lment d'une texture, quand les coordonnes sont normalises (entre 0.0 et 1.0), il arrive qu'un lment n'existe pas. Il existe deux modes de filtrage : un premier renvoie l'lment le plus proche, un autre, une interpolation des lments alentours. lien : lien : Qu'est-ce qu'un cluster d'units de traitement des textures (TPC) ? Qu'est-ce qu'un multiprocesseur de flux (SM) ?

Qu'est-ce qu'un multiprocesseur de flux (SM) ?


Auteurs : Thibaut Cuvelier , En anglais, SM (Streaming Multiprocessor). Deux SM sont disponibles dans chaque TPC. Cette unit de calcul est constitue d'une unit de traitement des textures (en abrg : TEX, pour l'anglais Texture) et de deux multiprocesseurs de flux (en abrg : SM, pour l'anglais Streaming Multiprocessor), pour les units principales. Aussi, chaque SM dispose d'un cache de niveau 1 pour les constantes et d'un autre cache de niveau 1 pour les instructions, remplis par le cache de niveau 2 du TPC.

-9Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Chaque SM est accompagn d'un fichier de registres (en abrg : RF, pour Register File), qui contient 8192 registres de 32 bits. C'est aussi ce niveau qu'est situe la mmoire partage de 16 ko. Un SM peut excuter un bloc la fois, un bloc ne sera pas divis dans plusieurs multiprocesseurs. lien : lien : lien : lien : Qu'est-ce qu'un cluster d'units de traitement des textures (TPC) ? Qu'est-ce qu'un processeur de flux (SP) ? Qu'est-ce qu'une unit superfonctionnelle (SFU) ? Qu'est-ce qu'un bloc ?

Qu'est-ce qu'un processeur de flux (SP) ?


Auteurs : Thibaut Cuvelier , En anglais, SP (Streaming Processor). Les SP vont toujours par 2 dans un SM. Chacun des SP est accompagn d'un RF, de 1024 registres de 32 bits. 4 SP sont associs un SFU. Un SP peut excuter une instruction par cycle. Ces instructions sont du type MAD : addition et multiplication, ou bien des conversions. Parmi tous les lments des TPC, seuls les SP et les SFU effectuent rellement des calculs. Tous les autres ne font que rassembler sous une appellation des composants. lien : lien : lien : Qu'est-ce qu'un cluster d'units de traitement des textures (TPC) ? Qu'est-ce qu'un multiprocesseur de flux (SM) ? Qu'est-ce qu'une unit superfonctionnelle (SFU) ?

Qu'est-ce qu'une unit superfonctionnelle (SFU) ?


Auteurs : Thibaut Cuvelier , En anglais, SFU (Super Function Unit). Un SFU est associ 4 SP. Un SFU effectue une opration sur 4 cycles. Ces oprations peuvent tre des oprations trigonomtriques (sinus, cosinus), logarithmiques (en base 2)... Parmi tous les lments des TPC, seuls les SP et les SFU effectuent rellement des calculs. Tous les autres ne font que rassembler sous une appellation des composants. lien : lien : lien : Qu'est-ce qu'un cluster d'units de traitement des textures (TPC) ? Qu'est-ce qu'un multiprocesseur de flux (SM) ? Qu'est-ce qu'un processeur de flux (SP) ?

- 10 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > CUDA

- 11 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > CUDA > Gnralits Qu'est-ce que NVIDIA CUDA ?


Auteurs : Thibaut Cuvelier , C'est une architecture de calcul parallle, qui utilise la capacit de calcul parallle des GPU NVIDIA. CUDA permet le dveloppement d'applications dans un langage de haut niveau, comme le C), et supportera bientt les API standard comme DirectX et OpenCL. C for CUDA est le nom du langage utilis, driv du C, permettant d'employer toutes les spcificits de CUDA. En gnral, ce langage est abrvi en CUDA. Il s'agit d'extensions propres NVIDIA pour le C. Ce langage est compil grce nvcc, un compilateur drivant d'Open64. CUDA a t introduit sur le march le 15 fvrier 2007, originellement pour les GPU de la famille GeForce 8800, disponible ds le 8 novembre 2006. Le support de toutes les cartes graphiques plus rcentes est disponible. CUDA est disponible ds l'origine sous Windows, le support de Mac OS X et de Linux a t ajout plus tard. Actuellement, plus de 100.000.000 de GPU compatibles CUDA ont t vendus. lien : lien : Quels sont les GPU compatibles ? Quels sont les systmes d'exploitation supports ?

Quels sont les GPU compatibles ?


Auteurs : Thibaut Cuvelier , Toutes les NVIDIA GeForce des gnrations 8 et suprieures, le NVIDIA ION, les NVIDIA Tesla sries 8 et suprieures, et toutes les NVIDIA Quadro. NVIDIA s'est d'ailleurs engage ce que les futures cartes restent compatibles avec CUDA. Voici la liste des GPU compatibles l'heure actuelle. GeForce GeForce GTX 295 GeForce GTX 285 GeForce GTX 280 GeForce GTX 275 GeForce GTX 260 GeForce GTS 250 GeForce 9800 GX2 GeForce 9800 GTX+ GeForce 9800 GTX GeForce 9800 GT GeForce 9600 GSO GeForce 9600 GT GeForce 9500 GT GeForce 9400 GT GeForce 9400 mGPU

- 12 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

GeForce 9300 mGPU GeForce 8800 Ultra GeForce 8800 GTX GeForce 8800 GTS GeForce 8800 GT GeForce 8800 GS GeForce 8600 GTS GeForce 8600 GT GeForce 8600 mGT GeForce 8500 GT GeForce 8400 GS GeForce 8300 mGPU GeForce 8200 mGPU GeForce 8100 mGPU

GeForce Mobile GeForce 9800M GTX GeForce 9800M GTS GeForce 9800M GT GeForce 9700M GTS GeForce 9700M GT GeForce GT 130M GeForce 9650M GT GeForce 9650M GS GeForce 9600M GT GeForce 9600M GS GeForce 9500M GS GeForce 9500M G GeForce 9400M G GeForce 9300M GS GeForce 9300M G GeForce 9200M GS GeForce 9100M G GeForce 8800M GTS GeForce 8700M GT GeForce 8600M GT GeForce 8600M GS GeForce 8400M GT GeForce 8400M GS GeForce 8400M G GeForce 8200M G

Quadro Quadro FX 5800 Quadro FX 5600 Quadro FX 4800 Quadro FX 4700 X2 Quadro FX 4600 Quadro FX 3700 Quadro FX 1700 Quadro FX 570 Quadro FX 370

- 13 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Quadro NVS 290 Quadro FX 3600M Quadro FX 1600M Quadro FX 770M Quadro FX 570M Quadro FX 370M Quadro Plex 1000 Model IV Quadro Plex 1000 Model S4

Quadro Mobile Tesla Tesla S1070 Tesla C1060 Tesla C870 Tesla D870 Tesla S870 Quadro NVS 360M Quadro NVS 140M Quadro NVS 135M Quadro NVS 130M

Quels sont les langages supports par CUDA ?


Auteurs : Thibaut Cuvelier , Officiellement, le C, le C++ et le Fortran sont supports. La communaut fournit dj des bindings pour d'autres langages : Python : PyCUDA Java : jCUDA, JCublas, JCufft, JCudpp .NET : CUDA.NET

Cependant, le support du C++ est limit aux fonctions qui s'excutent sur l'hte. Les fonctions pour les priphriques doivent se limiter au C. Nanmoins, quelques fonctionnalits du C++ fonctionnent sur le priphrique (templates, surcharge d'oprateurs), mais ne sont pas du tout supportes.

lien : lien : lien :

PyCuda jCuda, JCublas, JCufft, JCudpp CUDA.NET

Quels sont les systmes d'exploitation supports ?


Auteurs : Thibaut Cuvelier , Windows XP (32 bits) ds CUDA 1.0 Windows XP (64 bits) ds CUDA 1.1 Windows Vista (32 bits) ds CUDA 2.0 (1.0 en beta, mme version que pour XP 32 bits)

- 14 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Windows Vista (64 bits) ds CUDA 2.0 (1.1 en beta, mme version que pour XP 64 bits) Windows 7 (32 bits) ds CUDA 2.2 Windows 7 (64 bits) ds CUDA 2.2 Linux (32 bits) ds CUDA 1.1 Linux (64 bits) ds CUDA 1.1 MacOS X 10.5.2 et suprieurs (64 bits) ds CUDA 2.0 (1.1 en beta) MacOS X 10.5.6 et suprieurs (64 bits) ds CUDA 2.3 (1.1 en beta)

Actuellement, seules ces distributions Linux sont officiellement supportes. Red Hat Enterprise Linux 3.x (uniquement CUDA 1.1) Red Hat Enterprise Linux 4.x (ds CUDA 1.1) Red Hat Enterprise Linux 5.x (ds CUDA 1.1) SUSE Linux Enterprise Desktop 10.0 (ds CUDA 1.1) SUSE Linux Enterprise Desktop 11.0 (ds CUDA 2.1) OpenSUSE Linux 10.1 (seulement CUDA 1.1) OpenSUSE Linux 10.2 (CUDA 1.1 et 2.0) OpenSUSE Linux 10.3 (CUDA 2.0 et 2.1) OpenSUSE Linux 11.0 (CUDA 2.1 et 2.2) OpenSUSE Linux 11.1 (ds CUDA 2.2) Fedora 7 (uniquement CUDA 1.1) Fedora 8 (CUDA 2.0 et 2.1) Fedora 9 (CUDA 2.1 et 2.2) Fedora 10 (ds CUDA 2.2) Ubuntu 7.04 (CUDA 1.1 et 2.0) Ubuntu 7.10 (CUDA 2.0 et 2.1) Ubuntu 8.04 (CUDA 2.1 et 2.2) Ubuntu 8.10 (CUDA 2.2 et 2.3) Ubuntu 9.04 (ds CUDA 2.3)

DOS n'est pas support en mode rel, vu que le pilote d'affichage, qui gre les accs la carte graphique, et donc CUDA, n'est pas charg. Sous Windows, seuls Visual Studio 2005 et 2008 sont supports en tant que compilateur.

Quels sont les avantages de CUDA par rapport aux solutions de GPGPU proposes par les API graphiques ?
Auteurs : Thibaut Cuvelier , CUDA est prvu pour des calculs efficaces de tout type sur GPU. Les dveloppeurs peuvent compiler du C pour CUDA pour viter de rcrire leurs algorithmes pour se plier aux concepts des API graphiques. CUDA expose quelques fonctionnalits du matriel qui ne sont pas disponibles par ces API. La plus importante est la mmoire partage. Ceci permet de mettre en caches les donnes souvent utilises, ce qui peut acclrer l'accs la mmoire. Combine une synchronisation des threads, ceci permet le calcul parallle coopratif de donnes prsentes sur le processeur, ce qui rduit fortement le cot du transfert des donnes de nombreux algorithmes parallles. Ces API forcent les dveloppeurs stocker leurs donnes dans des textures, ce qui requiert de les stocker dans des tableaux deux dimensions, en complexifiant la situation, dj non triviale.

- 15 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

CUDA offre aussi des transferts de donnes optimiss depuis et vers le GPU.

Qu'est-ce que PTX ?


Auteurs : Thibaut Cuvelier , Parallel Thread eXecution. Il s'agit de l'assembleur, gnr par nvcc, excut sur le GPU compatible avec CUDA. Avant CUDA 2.2, il tait aussi possible de compiler cet assembleur pour pouvoir l'utiliser sur CPU, ou sur toute autre plateforme. Ce langage est parfaitement dfini : sa documentation est fournie avec CUDA. Les fichiers PTX sont compils l'aide de ptxas, utilitaire fourni avec CUDA. Avec ce langage, il est possible d'utiliser certains caches qui ne sont pas disponibles travers le runtime ou le pilote.

- 16 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > CUDA > Vocabulaire Qu'est-ce qu'un thread ?


Auteurs : Thibaut Cuvelier , Un thread est une instance d'un kernel. Les threads selon CUDA sont prvus pour tre beaucoup plus nombreux que dans d'autres environnements. En effet, un thread GPU effectue des calculs plus prcis qu'un CPU, et toujours en parallle (un thread est prvu pour tre excut un grand nombre de fois en parallle, dans une grille). La conception des threads drive de celle de la paralllisation des donnes. En effet, un thread est une portion de code qui s'occupe d'une partie des donnes, tous les threads ensemble s'occupent de toutes les donnes parallles. lien : lien : lien : Qu'est-ce qu'un kernel ? Qu'est-ce qu'une grille ? Qu'est-ce que sont les donnes parallles ?

Qu'est-ce qu'une grille ?


Auteurs : Thibaut Cuvelier , Une grille est un ensemble bidimensionnel de threads. La grille est aussi un principe dcoulant de la paralllisation des donnes : il s'agit d'une subdivision de la tche totale effectuer. Pour CUDA, une grille ressemble une image : chaque thread de la grille quivaut un pixel de l'image, un point dans le repre cartsien du plan form par l'image. Cette subdivision est la plus gnrale admise par CUDA. Cette notion peut tre utilise pour drouler deux boucles imbriques : au lieu de faire varier deux variables, comme i et j, on fait varier la position dans la grille. lien : Qu'est-ce qu'un thread ?

Qu'est-ce qu'un bloc ?


Auteurs : Thibaut Cuvelier , Un bloc est un ensemble tridimensionnel de grilles. Un bloc peut tre compar une image en 3 dimensions, o chaque point reprsente une grille, un ensemble de calculs effectuer. Il s'agit d'une subdivision dcoulant du principe de paralllisation des donnes. On peut utiliser cette notion pour drouler trois boucles imbriques : au lieu de faire varier trois variables, comme i, j et k, on fait varier la position dans le bloc.

- 17 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Un bloc sera excut toujours sur le mme multiprocesseur. Ce n'est pas pour autant que tous les threads d'un bloc peuvent communiquer sans problme ! Il faut encore qu'ils soient dans le mme warp. Ainsi, ils seront excuts en mme temps. lien : lien : Qu'est-ce qu'une grille ? Qu'est-ce qu'un multiprocesseur de flux (SM) ?

Qu'est-ce qu'un warp ?


Auteurs : Thibaut Cuvelier , Un warp est un groupe de 32 threads, qui seront de manire certaine excuts en deux groupes de 16 threads subsquents, ces demi-warps tant excuts en mme temps. Ceci fait que, tant que les accs mmoires de ces demi-warps ne se font pas dans les mmes banques mmoire, il n'y aura pas de conflit. Deux demi-warps n'entreront jamais en conflit de mmoire, ni deux warps. lien : lien : Qu'est-ce qu'un thread ? Qu'est-ce qu'une banque mmoire ?

Qu'est-ce qu'une banque mmoire ?


Auteurs : Thibaut Cuvelier , Une banque mmoire est une subdivision de la mmoire globale. Chaque banque a une taille d'un mot (32 bits), et une bande passante de 32 bits : chaque banque peut tre lue en un seul cycle. Une mme banque ne peut tre accde qu'en un seul endroit en un cycle. Si plusieurs threads essayent d'accder la mme adresse mmoire, il n'y aura pas de conflit. Si plusieurs threads lisent des adresses diffrentes tombant dans la mme banque, il y aura conflit, et les threads seront excuts dans des cycles diffrents, d'o une perte, parfois norme, de performances.

- 18 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > CUDA > Pourquoi choisir CUDA Puis-je effectuer des calculs sur une machine distante ?
Auteurs : Thibaut Cuvelier , Sous Linux, cela est possible, par login distant, et mme support. Sous Windows, cela n'est pas support, mais possible grce VNC.

Est-ce que CUDA supporte plusieurs GPU ?


Auteurs : Thibaut Cuvelier , Oui, sans problme, vous pouvez mme en utiliser plusieurs en mme temps. L'application cependant est totalement matresse de cette situation. Il existe un jeu de fonctions qui vous permet de choisir le GPU qui excutera les calculs. Cependant, chaque thread du ct CPU ne peut grer qu'un seul et unique GPU. Pour pouvoir pleinement utiliser la puissance d'un systme multiples GPU, il vous faudra crer plusieurs threads CPU, chose relativement aise avec les bibliothques existantes.

lien :

Gestion des GPU

Quels sont les avantages et les inconvnients de CUDA ?


Auteurs : Thibaut Cuvelier , CUDA fournit une couche d'abstraction aussi loigne du matriel que souhaitable. Mme si, pour obtenir le meilleur de ce matriel, il est ncessaire de programmer spcifiquement pour le matriel utilis. Vous pouvez cependant dj obtenir d'normes acclrations sans devoir descendre ce niveau. CUDA est un norme pas en avant pour le GPGPU. En effet, les choix poss par l'quipe CUDA formeront le futur du GPGPU, et des langages de programmation htrognes en gnral. Il est plus amusant, en gnral, de se dire que son bout de code sera excut, par exemple, 16 millions de fois, au lieu d'une seule et unique par traitement dans d'autres environnements. CUDA cache un norme potentiel. En ouvrant le GPGPU tous, NVIDIA permet au mme public de se former CUDA et de fournir des ressources de plus en plus nombreuses, en facilitant son enseignement. Cependant, CUDA a aussi quelques inconvnients. Par exemple, la rcursion, si dcrie par certain, permet de simplifier les algorithmes. Pourtant, CUDA ne peut la prendre en charge : un kernel GPU ne peut appeler un kernel GPU. Il n'est pas encore possible de savoir si ce problme est inhrent CUDA ou l'architecture mme des GPU. Au vu de son architecture radicalement diffrente, CUDA va rveiller en vous tout ce qui vous a t interdit patiemment pendant les cours. Par exemple, les structures ne sont pas autorises : au lieu de passer deux ou trois variables un kernel, ce seront dsormais des dizaines de variables aux noms parfois impossibles donner qui seront passes.

- 19 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

En plus, vous vous verrez souvent enfreindre le DRY (Don't Repeat Yourself, ne pas rpter). Ce qui n'aidera pas la maintenance de votre code. Ni la lisibilit.

- 20 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > CUDA > Matriel Qu'est-ce que NVIDIA Tesla ?


Auteurs : Thibaut Cuvelier , Il s'agit de GPU prvus pour le calcul trs intensif, sans pouvoir afficher d'images (pas de prise VGA ou DVI), pouvant dvelopper des GFlops de puissance. Leur nom leur vient de Nikola Tesla, inventeur et ingnieur dans l'lectricit, serbe expatri aux USA. Ils sont disponibles en tant que GPU intgrer dans une machine, ou bien en tant que racks.

lien :

NVIDIA Tesla

Qu'est-ce que NVIDIA GeForce ?


Auteurs : Thibaut Cuvelier , Il s'agit de GPU prvus pour le rendu 3D (jeux vido...), qui peuvent tre utiliss avec CUDA depuis la srie 8. Ils sont destins tous les publics et toutes les bourses. Il s'agit de la famille de GPU la plus rpandue : plusieurs centaines de milliers d'exemplaires de cartes compatibles CUDA ont dj t vendues. CUDA est dj massivement utilis avec ces GPU : depuis le rachat de PhysX par NVIDIA, les GeForce 8000 et suprieures peuvent tre utilises comme PPU (Physic Processing Unit), si elles disposent d'au moins 256 Mo de VRAM.

lien :

NVIDIA GeForce

Qu'est-ce que NVIDIA ION ?


Auteurs : Thibaut Cuvelier , Il s'agit d'un modle de carte-mre qui inclut un GPU NVIDIA (GeForce 9400M), et un processeur peu gourmand en nerge (Intel Atom), d'un trs petit format (Pico-ITXe), prvue pour les ultraportables, les netbooks, les tlvisions, les ordinateurs hyper compacts... Ce genre de carte est prvu pour les PC compacts ou de faible puissance, avec en gnral un processeur Intel Atom. Elle permet, par exemple, des notebooks de profiter de toutes les acclrations graphiques de Compiz ou d'Aero. Ceci tant, ces cartes supportent DirectX 10, en plus d'avoir une connectivit suprieure la moyenne (DVI, VGA, HDMI), et permettent de l'encodage vido et audio grande vitesse (pour peu qu'il utilise CUDA).

lien :

NVIDIA ION

Qu'est-ce que NVIDIA Quadro ?


Auteurs : Thibaut Cuvelier , Il s'agit de cartes graphiques ddies aux professionnels, dont le support est limit OpenGL. En effet, elles sont souvent utilises pour le CAD (dessin par ordinateur), et ces logiciels sont prvus pour OpenGL.

- 21 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Elles existent en de nombreuses dclinaisons, du tout public au hors de prix, avec des performances, une quantit de mmoire variables selon le prix. Une telle carte peut avoir jusqu' 4 Go de mmoire avec un bus de 512 bits, ce qui lui confre une bande passante de 102 Go/s.

lien :

NVIDIA Quadro

Qu'est-ce que NVIDIA Quadro Plex ?


Auteurs : Thibaut Cuvelier , Il s'agit de cartes graphiques externes prvues pour de larges rendus 3D, montes en rack (1U ou 3U) ou en botiers par 2 ou par 4. Ces cartes sont relies un autre ordinateur qui va les piloter. La liaison est effectue par deux cbles VHDCI, connects sur une carte PCI-Express de l'hte. Ces ensembles sont de vritables monstres de puissance, qui peuvent monter jusqu' 16 Go de mmoire, rpartis sur les deux ou quatre GPU, des Quadro FX 5800. Les NVIDIA Quadro Plex peuvent dlivrer des images au format 4K, c'est--dire de 4096 sur 2160 pixels. Cette dfinition est utilise notamment par le cinma numrique. Mais ils peuvent aussi dlivrer des images sur 4 crans, grce aux 4 cartes (sur deux crans avec 2 cartes), et ce, sans perdre en puissance (un driv du SLI est utilis).

lien :

NVIDIA Quadro Plex

- 22 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > CUDA > Installation de CUDA Comment installer CUDA sous Windows ?
Auteurs : Thibaut Cuvelier , Rendez-vous dans la partie tlchargements du site de CUDA. Choisissez, dans le menu droulant, votre version de Windows. Tlchargez un des pilotes mis votre disposition (le pilote pour portables ou le pilote gnrique), et installez-le. Tlchargez la bote d'outils, et installez-la. Si vous dsirez avoir les exemples, tlchargez le SDK et installez-le.

lien :

NVIDIA CUDA

Comment installer CUDA sous Mandriva (et Fedora) ?


Auteurs : Thibaut Cuvelier , Rendez-vous dans la partie tlchargements du site de CUDA. Choisissez, dans le menu droulant, la bonne dition de Linux (32 ou 64 bits). Choisissez la bonne version de Fedora en fonction de votre version de Mandriva, si vous l'utilisez ; ou votre version de Fedora. Mandriva 2008.0 2008.1 2009.0 Vrifiez que les paquets gcc et gcc-c++ Tlchargez le pilote, et installez-le depuis un mode texte en tant que root. Tlchargez la bote outils, et installez-la, en tant que root, dans /usr/local/cuda. Si vous dsirez les exemples, tlchargez le SDK et installez-le, o vous dsirez. Pour pouvoir utiliser CUDA, dans votre fichier /etc/profile, ajoutez cette ligne. /etc/profile
PATH=$PATH:/usr/local/cuda/bin

Fedora 8 9 10

Et, dans /etc/ld.so.conf, ajoutez cette ligne. /etc/ld.so.conf


/usr/local/cuda/lib

Finalement, en tant que root, lancez cette commande

- 23 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Fin de l'installation
ldconfig

lien :

NVIDIA CUDA

Comment installer CUDA sous Mac OS X ?


Auteurs : Thibaut Cuvelier , Rendez-vous dans la partie tlchargements du site de CUDA. Choisissez, dans le menu droulant, Mac OS X. Tlchargez la bote d'outils, et installez-la, grce au package fourni. Si vous dsirez avoir le profiler, tlchargez-le et installez-le. Si vous dsirez avoir les exemples, tlchargez le SDK et installez-le. Vous devrez ensuite les compiler. Pour ce faire, dans un Terminal, tapez ces quelques lignes. Compilation des exemples
cd /Developer/CUDA make

lien :

NVIDIA CUDA

Comment utiliser CUDA pour gnrer un projet sous Linux ou Mac OS X ?


Auteurs : Thibaut Cuvelier , Vous pouvez utiliser un Makefile, c'est d'ailleurs une des solutions les plus simples. Voici un modle de Makefile, qui fait appel un fichier externe, fourni en lien.
################################################################################ # Build script for project ################################################################################ EXECUTABLE CUFILES := example += matrixMult.cu

CCFILES := xxx.cpp yyy.cpp CCFILES += zzz.cpp CFILES CFILES := ppp.c qqq.c rrr.c += sss.c ttt.c uuu.c vvv.c www.c xxx.c \ yyy.c zzz.c := := := := := := := 1 1 0 1 1 0 1

USEGLLIB USECUFFT USECUBLAS USECUTIL USEGLUT USEPARAMGL USERENDERCHECKGL #0 -> Runtime #1 -> Driver USEDRVAPI

:= 0

- 24 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

################################################################################ # Rules and Targets include cuda-common.mk

Cette solution est aussi possible sous Windows avec tous les compilateurs. Il est plus facile d'utiliser une intgration un IDE, mais ce n'est actuellement possible qu'avec Visual Studio.

lien :

cuda-common.mk

Comment utiliser CUDA pour gnrer un projet sous Visual Studio ?


Auteurs : Thibaut Cuvelier , Le plus simple est d'utiliser des rgles automatiques de compilation, vu qu'elles sont disponibles et faciles d'emploi. Pour les tlcharger, rendez-vous sur le site web du projet. Choisissez l'archive qui correspond votre systme. Dans cette archive, vous trouverez un installateur. Ds que vous relancerez Visual Studio, vous verrez un nouveau type de projet.

- 25 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

lien :

CUDA VS Wizard

- 26 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les d'auteurs. syntaxique Copyright 2009 droits Studio rservs Developpez LLC. Aucune Comment utiliser ladroits coloration deDeveloppez CUDA LLC. dansTout Visual ? reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon:vous encourez selon la loi Auteurs Thibaut Cuvelier , jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Premirement, il faut que Visual Studio sache quels fichiers il doit appliquer cette coloration. Pour les versions 7.0 et 7.1, utilisez le fichier C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\doc \syntax_highlighting\visual_studio_7\install_cuda_highlighting_vs7.reg. Pour les autres versions, Outils > Options > diteur de texte > Extension de fichier, ajoutez les extensions cu et cuh, avec l'diteur Visual C++ Ensuite, il doit connatre les mots mettre en vidence. Cependant, cela ne vous apportera pas la coloration syntaxique du code. Pour ce faire, ouvrez le fichier C:\Program Files \Microsoft Visual Studio 9.0\Common7\IDE\usertype.dat (chemin modifier selon votre installation). S'il n'existe pas, crez-le. Ajoutez-y le contenu de C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\doc\syntax_highlighting \visual_studio_8\usertype.dat. Il s'agit de l'ensemble des mots-cls, des types, des variables prdfinies, et des fonctions mathmatiques de base de CUDA. Ce fichier convient aux versions 7.0, 7.1, 8.0 et 9.0 de Visual Studio.

- 27 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

Sommaire > CUDA > Spcificits de la programmation Quelle est la structure des calculs de CUDA ?
Auteurs : Thibaut Cuvelier , CUDA suit, peu prs, le modle de la paralllisation des donnes. Chaque thread excute donc la mme opration sur divers lments des donnes en parallle. Les donnes sont divises dans une grille une ou deux dimensions de blocs. Les threads d'un mme bloc peuvent communiquer grce la mmoire partage. Chaque bloc peut avoir une, deux ou trois dimensions, et contenir jusqu' 512 threads, sur le matriel actuel. Les blocs de threads sont excutes comme des petits groupes de threads, appels warps. La taille d'un warp est de 32 threads, et tous les threads d'un warp sont excuts simultanment.

Comment retourner le rsultat d'un kernel ?


Auteurs : Thibaut Cuvelier , En gnral, lors de l'appel un kernel, on lui prcise les emplacements des donnes traiter et les emplacements des donnes une fois traites. Ds que les calculs sont effectus, l'hte rcupre les donnes traites de ce second emplacement mmoire par une fonction de copie.

Est-il possible d'crire les donnes de retour d'un kernel dans une texture ?
Auteurs : Thibaut Cuvelier , Pas encore. Il est cependant possible de copier les rsultats de la mmoire globale vers la texture (les transferts de donnes sur le priphrique sont trs rapides).

Qu'est-ce qu'un qualificateur de kernel ? Quels sont-ils ? Quelle est leur fonction ?
Auteurs : Thibaut Cuvelier , Un qualificateur de kernel permet de spcifier l'endroit o il sera excut (sur le GPU ou sur le CPU). Il en existe trois : __global__, __device__ et __host__.

- 28 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/

__global__ Excut sur le priphrique Appelable de l'hte Pas de rcursion Pas de variables statiques Pas de liste de paramtres variable Ne peut rien retourner Appel asynchrone

__device__ Excut sur le priphrique Appelable du priphrique Pas de rcursion Pas de variables statiques Pas de liste de paramtres variable Ne peut rien retourner Appel synchrone

__host__ Excut sur l'hte Appelable de l'hte Rcursion possible Variables statiques possibles Liste de paramtres variable possible Peut retourner une valeur Appel synchrone

lien : Qu'est-ce qu'un appel (a)synchrone de kernel ?

Quelles sont les limites des textures ?


Auteurs : Thibaut Cuvelier , Les textures une dimension sont limites 8000 lments. Les textures deux dimensions sont limites 64.000 lments sur 32.000 lments. Les textures trois dimensions sont limites la dimension de 2048 x 2048 x 2048. videmment, ces limites sont tronques pour respecter les limites de la mmoire du GPU.

- 29 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jeux.developpez.com/faq/gpgpu/