SlideShare une entreprise Scribd logo
1  sur  23
Programmation parallèle sur GPU avec CUDA par   Maxime Fromentin Consultant In Fine Consulting le  26/04/2011
SOMMAIRE ,[object Object],[object Object],[object Object]
PARTIE I : Introduction aux GPUS et CUDA
GPU |  DÉFINITION Déf: 1)  Hardware spécialisé dans le rendu graphique 2) Microprocesseur présent sur les cartes graphiques au sein d’un ordinateur ou d’une console de jeux vidéo ,[object Object],[object Object],[object Object],[object Object],[object Object]
GPU | ÉVOLUTION DES PERFORMANCES  ,[object Object],[object Object],[object Object],Floating-Point Operations per Second entre GPU et CPU
GPU | COMPARAISON DES ARCHITECTURES G80 GT200 Fermi Transistors 681 millions 1,4 milliards 3,0 milliards CUDA cores 128 240 512 Double précision (par cycle) - 30 FMA 256 FMA Simple précision (par cycle) 128 MAD 240 MAD 512 FMA Special Function Units (par SM) 2 2 4 Warp scheduler (par SM) 1 1 2 Shared memory (par SM) 16 Ko 16 Ko 48 Ko ou 16 Ko Cache L1 (par SM) - - 48 Ko ou 16 Ko Cache L2 - - 768 Ko Mémoire ECC Non Non Oui Kernels concurrents Non Non jusqu’à 16 Adresses 32 bits 32 bits 64 bits
CUDA | DÉFINITION  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CUDA Application Source file: C/C++ (.cpp) Source file: CUDA (.cu) Compiling: Visual C++ Compiling: nvcc Linking: Visual C++ Executable
CUDA | DÉFINITION  ,[object Object],Des performances entre 5X et 100X supérieures aux CPUs !
CUDA ET FINANCE  Plus à voir sur :  http://www.nvidia.fr/object/cuda_app_tesla_fr.html ,[object Object],[object Object]
PARTIE II : CUDA more in-depth Exemple
CUDA | ORGANISATION DES THREADS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
CUDA | ORGANISATION DES THREADS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
CUDA | EXÉCUTION DES THREADS ,[object Object],[object Object],[object Object],[object Object],[object Object]
CUDA | MODÈLE D’EXÉCUTION
CUDA | STRUCTURE D’UN PROGRAMME ,[object Object],[object Object],[object Object],[object Object],[object Object],   Limiter les interactions entres CPU et GPU pour augmenter les performances
CUDA | STRUCTURE D’UN PROGRAMME // allocation de la mémoire sur le device cudaMalloc((void**)a_d, size); … // transfert des données du CPU vers le device (GPU) cudaMemcpy(a_d, a, size, cudaMemcpyHostToDevice); … // appel du kernel (programme qui tourne sur le GPU) addVectors<<< xxx, xxx>>>(n, a_d, b_d, c_d); // récupération du résultat cudaMemcpy(c, c_d, size, cudaMemcpyDeviceToHost);
CUDA | EXEMPLE : MULTIPLICATION DE MATRICES ,[object Object],[object Object],Code séquentiel en c++ void matmul(int n, float* a, float*b, float* c) { for (int i=0; i<n, i++) { for (int j=0; j<n; j++) { float s = 0; for (int k=0; k<n; k++) s += a[i*n+k] * b[i*k+j]; c[i*n+j] = s; } } }
CUDA | EXEMPLE : MULTIPLICATION DE MATRICES
CUDA | EXEMPLE : MULTIPLICATION DE MATRICES …  cudaMemcpy(xd, x, size, cudaMemcpyHostToDevice); cudaMemcpy(yd, y, size, cudaMemcpyHostToDevice); const int threadsPerBlock = 16; int nblocks = (n + threadsPerBlock - 1) / (threadsPerBlock);  dim3 dimGrid(nblocks,nblocks,1); dim3 dimBlock(threadsPerBlock,threadsPerBlock,1); multMatKernel<<<dimGrid, dimBlock>>>(n, xd, yd, zd); cudaMemcpy(z, zd, size, cudaMemcpyDeviceToHost); //std::cout << x[0] << &quot; + &quot; << y[0] << &quot; = &quot; << z[0] << std::endl; cudaFree(xd); cudaFree(yd); cudaFree(zd);
CUDA | EXEMPLE : MULTIPLICATION DE MATRICES __global__ void multMatKernel(int n, float *x, float *y, float *z) { int xx= blockIdx.x * blockDim.x + threadIdx.x; int yy= blockIdx.y * blockDim.y + threadIdx.y; if(xx<n && yy <n) { float res =0.0f; for(int i=0;i<n;i++) res+=x[yy+n*i]*y[xx*n+i]; z[xx*n+yy] =res; } }    Des optimisations encore possibles en utilisant la mémoire locale
CONCLUSION ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
BIBLIOGRAPHIE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
QUESTIONS?

Contenu connexe

Tendances

RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITLina Meddeb
 
Gestion des Projets des Fin d'etudes ( Version Alpha )
Gestion des Projets des Fin d'etudes ( Version Alpha )Gestion des Projets des Fin d'etudes ( Version Alpha )
Gestion des Projets des Fin d'etudes ( Version Alpha )Ayed CHOKRI
 
Chapitre 2 le recuit simulé
Chapitre 2 le recuit simuléChapitre 2 le recuit simulé
Chapitre 2 le recuit simuléAchraf Manaa
 
Rapport de projet de fin d'année
Rapport de projet de fin d'année Rapport de projet de fin d'année
Rapport de projet de fin d'année kaies Labiedh
 
Rapport de stage de fin d'études ISI 2015
Rapport de stage de fin d'études ISI 2015Rapport de stage de fin d'études ISI 2015
Rapport de stage de fin d'études ISI 2015Anouar Kacem
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de javaAmir Souissi
 
Conception et réalisation d'une application mobile cross-platform "Taki Academy"
Conception et réalisation d'une application mobile cross-platform "Taki Academy"Conception et réalisation d'une application mobile cross-platform "Taki Academy"
Conception et réalisation d'une application mobile cross-platform "Taki Academy"Ibtihel El Bache
 
Mise en place d’une application mobile de géolocalisation
Mise en place d’une application mobile de géolocalisationMise en place d’une application mobile de géolocalisation
Mise en place d’une application mobile de géolocalisationCléa Aurianne Leencé BAWE
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...MOHAMMED MOURADI
 
Vincent T'KINDT - Aide à la décision multicritère
Vincent T'KINDT - Aide à la décision multicritèreVincent T'KINDT - Aide à la décision multicritère
Vincent T'KINDT - Aide à la décision multicritèreGroupe ARTICQUE
 
Apprentissage supervisé.pdf
Apprentissage supervisé.pdfApprentissage supervisé.pdf
Apprentissage supervisé.pdfhanamettali
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Nawres Farhat
 
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCRappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCGhodbane Heni
 

Tendances (20)

L'algorithme du Recuit simule
L'algorithme du Recuit simuleL'algorithme du Recuit simule
L'algorithme du Recuit simule
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
 
Gestion des Projets des Fin d'etudes ( Version Alpha )
Gestion des Projets des Fin d'etudes ( Version Alpha )Gestion des Projets des Fin d'etudes ( Version Alpha )
Gestion des Projets des Fin d'etudes ( Version Alpha )
 
Chapitre 2 le recuit simulé
Chapitre 2 le recuit simuléChapitre 2 le recuit simulé
Chapitre 2 le recuit simulé
 
Présentation pfe
Présentation pfePrésentation pfe
Présentation pfe
 
Rapport de projet de fin d'année
Rapport de projet de fin d'année Rapport de projet de fin d'année
Rapport de projet de fin d'année
 
Rapport de stage de fin d'études ISI 2015
Rapport de stage de fin d'études ISI 2015Rapport de stage de fin d'études ISI 2015
Rapport de stage de fin d'études ISI 2015
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 
Conception et réalisation d'une application mobile cross-platform "Taki Academy"
Conception et réalisation d'une application mobile cross-platform "Taki Academy"Conception et réalisation d'une application mobile cross-platform "Taki Academy"
Conception et réalisation d'une application mobile cross-platform "Taki Academy"
 
Rapport PFE
Rapport PFERapport PFE
Rapport PFE
 
Mise en place d’une application mobile de géolocalisation
Mise en place d’une application mobile de géolocalisationMise en place d’une application mobile de géolocalisation
Mise en place d’une application mobile de géolocalisation
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
Vincent T'KINDT - Aide à la décision multicritère
Vincent T'KINDT - Aide à la décision multicritèreVincent T'KINDT - Aide à la décision multicritère
Vincent T'KINDT - Aide à la décision multicritère
 
Guide puissance
Guide puissanceGuide puissance
Guide puissance
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
 
Tp5 - WINDEV
Tp5 - WINDEVTp5 - WINDEV
Tp5 - WINDEV
 
Apprentissage supervisé.pdf
Apprentissage supervisé.pdfApprentissage supervisé.pdf
Apprentissage supervisé.pdf
 
2 TUP
2 TUP2 TUP
2 TUP
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
 
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCRappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
 

En vedette

Personal branding, créer sa marque personnelle, surveiller on e-reputation.
Personal branding, créer sa marque personnelle, surveiller on e-reputation.Personal branding, créer sa marque personnelle, surveiller on e-reputation.
Personal branding, créer sa marque personnelle, surveiller on e-reputation.Amelie Nollet
 
Conférence estime de soi, Gilles Payet, 17 janvier 2017
Conférence estime de soi, Gilles Payet, 17 janvier 2017Conférence estime de soi, Gilles Payet, 17 janvier 2017
Conférence estime de soi, Gilles Payet, 17 janvier 2017Transmission RH
 
Les Jeunes et le Vin, un désamour, vraiment ? Une étude Verallia
Les Jeunes et le Vin, un désamour, vraiment ? Une étude VeralliaLes Jeunes et le Vin, un désamour, vraiment ? Une étude Verallia
Les Jeunes et le Vin, un désamour, vraiment ? Une étude VeralliaAmelie Nollet
 
Optimiser votre profil LinkedIn
Optimiser votre profil LinkedInOptimiser votre profil LinkedIn
Optimiser votre profil LinkedInAmelie Nollet
 
Atelier sur l'utilisation efficace de linkedin et viadeo, gilles payet pour s...
Atelier sur l'utilisation efficace de linkedin et viadeo, gilles payet pour s...Atelier sur l'utilisation efficace de linkedin et viadeo, gilles payet pour s...
Atelier sur l'utilisation efficace de linkedin et viadeo, gilles payet pour s...Transmission RH
 
Personnal branding et profil LinkedIn
Personnal branding et profil LinkedInPersonnal branding et profil LinkedIn
Personnal branding et profil LinkedInLinkedIn
 
Qu'est-ce que LinkedIn ? Comment l'utiliser ?
Qu'est-ce que LinkedIn ? Comment l'utiliser ?Qu'est-ce que LinkedIn ? Comment l'utiliser ?
Qu'est-ce que LinkedIn ? Comment l'utiliser ?Samuel Robert
 
Linkedin tutoriel utilisation
Linkedin tutoriel utilisationLinkedin tutoriel utilisation
Linkedin tutoriel utilisationRégis Vansnick
 
Introduction à LinkedIn
Introduction à LinkedInIntroduction à LinkedIn
Introduction à LinkedInAmelie Nollet
 
+Conférence décrocher un job en 2016 : 7 secrets pour sortir du lot
+Conférence décrocher un job en 2016 : 7 secrets pour sortir du lot+Conférence décrocher un job en 2016 : 7 secrets pour sortir du lot
+Conférence décrocher un job en 2016 : 7 secrets pour sortir du lotTransmission RH
 
Utiliser efficacement linkedin et viadeo pour décrocher des entretiens
Utiliser efficacement linkedin et viadeo pour décrocher des entretiensUtiliser efficacement linkedin et viadeo pour décrocher des entretiens
Utiliser efficacement linkedin et viadeo pour décrocher des entretiensTransmission RH
 
Candidatures seniors, 10 idées fortes pour donner du sens à vos actions
Candidatures seniors, 10 idées fortes pour donner du sens à vos actionsCandidatures seniors, 10 idées fortes pour donner du sens à vos actions
Candidatures seniors, 10 idées fortes pour donner du sens à vos actionsTransmission RH
 
Projet professionnel : rebondir avec un projet qui explore toutes les pistes
Projet professionnel : rebondir avec un projet qui explore toutes les pistesProjet professionnel : rebondir avec un projet qui explore toutes les pistes
Projet professionnel : rebondir avec un projet qui explore toutes les pistesTransmission RH
 
Résilience comment développer sa capacité à surmonter les epreuves et les ec...
Résilience  comment développer sa capacité à surmonter les epreuves et les ec...Résilience  comment développer sa capacité à surmonter les epreuves et les ec...
Résilience comment développer sa capacité à surmonter les epreuves et les ec...Transmission RH
 
Conférence émotions et trac avant un entretien, clés et exercices pratiques
Conférence émotions et trac avant un entretien, clés et exercices pratiquesConférence émotions et trac avant un entretien, clés et exercices pratiques
Conférence émotions et trac avant un entretien, clés et exercices pratiquesTransmission RH
 
Utiliser son réseau pour décrocher un emploi
Utiliser son réseau pour décrocher un emploiUtiliser son réseau pour décrocher un emploi
Utiliser son réseau pour décrocher un emploiTransmission RH
 
Utiliser Facebook pour votre business
Utiliser Facebook pour votre businessUtiliser Facebook pour votre business
Utiliser Facebook pour votre businessAmelie Nollet
 

En vedette (19)

Personal branding, créer sa marque personnelle, surveiller on e-reputation.
Personal branding, créer sa marque personnelle, surveiller on e-reputation.Personal branding, créer sa marque personnelle, surveiller on e-reputation.
Personal branding, créer sa marque personnelle, surveiller on e-reputation.
 
Conférence estime de soi, Gilles Payet, 17 janvier 2017
Conférence estime de soi, Gilles Payet, 17 janvier 2017Conférence estime de soi, Gilles Payet, 17 janvier 2017
Conférence estime de soi, Gilles Payet, 17 janvier 2017
 
Les Jeunes et le Vin, un désamour, vraiment ? Une étude Verallia
Les Jeunes et le Vin, un désamour, vraiment ? Une étude VeralliaLes Jeunes et le Vin, un désamour, vraiment ? Une étude Verallia
Les Jeunes et le Vin, un désamour, vraiment ? Une étude Verallia
 
Optimiser votre profil LinkedIn
Optimiser votre profil LinkedInOptimiser votre profil LinkedIn
Optimiser votre profil LinkedIn
 
Atelier sur l'utilisation efficace de linkedin et viadeo, gilles payet pour s...
Atelier sur l'utilisation efficace de linkedin et viadeo, gilles payet pour s...Atelier sur l'utilisation efficace de linkedin et viadeo, gilles payet pour s...
Atelier sur l'utilisation efficace de linkedin et viadeo, gilles payet pour s...
 
Personnal branding et profil LinkedIn
Personnal branding et profil LinkedInPersonnal branding et profil LinkedIn
Personnal branding et profil LinkedIn
 
Qu'est-ce que LinkedIn ? Comment l'utiliser ?
Qu'est-ce que LinkedIn ? Comment l'utiliser ?Qu'est-ce que LinkedIn ? Comment l'utiliser ?
Qu'est-ce que LinkedIn ? Comment l'utiliser ?
 
Linkedin tutoriel utilisation
Linkedin tutoriel utilisationLinkedin tutoriel utilisation
Linkedin tutoriel utilisation
 
LinkedIn 101
LinkedIn 101LinkedIn 101
LinkedIn 101
 
Introduction à LinkedIn
Introduction à LinkedInIntroduction à LinkedIn
Introduction à LinkedIn
 
Formation Linkedin 2017
Formation Linkedin 2017Formation Linkedin 2017
Formation Linkedin 2017
 
+Conférence décrocher un job en 2016 : 7 secrets pour sortir du lot
+Conférence décrocher un job en 2016 : 7 secrets pour sortir du lot+Conférence décrocher un job en 2016 : 7 secrets pour sortir du lot
+Conférence décrocher un job en 2016 : 7 secrets pour sortir du lot
 
Utiliser efficacement linkedin et viadeo pour décrocher des entretiens
Utiliser efficacement linkedin et viadeo pour décrocher des entretiensUtiliser efficacement linkedin et viadeo pour décrocher des entretiens
Utiliser efficacement linkedin et viadeo pour décrocher des entretiens
 
Candidatures seniors, 10 idées fortes pour donner du sens à vos actions
Candidatures seniors, 10 idées fortes pour donner du sens à vos actionsCandidatures seniors, 10 idées fortes pour donner du sens à vos actions
Candidatures seniors, 10 idées fortes pour donner du sens à vos actions
 
Projet professionnel : rebondir avec un projet qui explore toutes les pistes
Projet professionnel : rebondir avec un projet qui explore toutes les pistesProjet professionnel : rebondir avec un projet qui explore toutes les pistes
Projet professionnel : rebondir avec un projet qui explore toutes les pistes
 
Résilience comment développer sa capacité à surmonter les epreuves et les ec...
Résilience  comment développer sa capacité à surmonter les epreuves et les ec...Résilience  comment développer sa capacité à surmonter les epreuves et les ec...
Résilience comment développer sa capacité à surmonter les epreuves et les ec...
 
Conférence émotions et trac avant un entretien, clés et exercices pratiques
Conférence émotions et trac avant un entretien, clés et exercices pratiquesConférence émotions et trac avant un entretien, clés et exercices pratiques
Conférence émotions et trac avant un entretien, clés et exercices pratiques
 
Utiliser son réseau pour décrocher un emploi
Utiliser son réseau pour décrocher un emploiUtiliser son réseau pour décrocher un emploi
Utiliser son réseau pour décrocher un emploi
 
Utiliser Facebook pour votre business
Utiliser Facebook pour votre businessUtiliser Facebook pour votre business
Utiliser Facebook pour votre business
 

Similaire à Programmation sur GPU avec CUDA

OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...Paris Open Source Summit
 
Graphics card as computation engine
Graphics card as computation engineGraphics card as computation engine
Graphics card as computation enginevalery brasseur
 
Presentaion fpga µc µp quelles est la solution
Presentaion  fpga µc µp quelles est la solutionPresentaion  fpga µc µp quelles est la solution
Presentaion fpga µc µp quelles est la solutionCynapsys It Hotspot
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Softshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèleSoftshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèleOCTO Technology
 
Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013Henri Tremblay
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendreMariamHafsa
 
20190520 - IBM Cloud Paris-Saclay Meetup - Hardis Group
20190520  - IBM Cloud Paris-Saclay Meetup - Hardis Group20190520  - IBM Cloud Paris-Saclay Meetup - Hardis Group
20190520 - IBM Cloud Paris-Saclay Meetup - Hardis GroupIBM France Lab
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...Pôle Systematic Paris-Region
 
Net duino et le .net micro framework
Net duino et le .net micro frameworkNet duino et le .net micro framework
Net duino et le .net micro frameworkVincent Hubert
 
Architecture des ordinateurs
Architecture des ordinateursArchitecture des ordinateurs
Architecture des ordinateursRMwebsite
 
Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsPhilippeBrogi
 
Isbs slides 2010
Isbs slides 2010Isbs slides 2010
Isbs slides 2010RMwebsite
 
GPGPU facile avec JavaCL, et trivial avec ScalaCL !
GPGPU facile avec JavaCL, et trivial avec ScalaCL !GPGPU facile avec JavaCL, et trivial avec ScalaCL !
GPGPU facile avec JavaCL, et trivial avec ScalaCL !ochafik
 
ALT.Net Montréal: NETMF et Gadgeteer
ALT.Net Montréal: NETMF et GadgeteerALT.Net Montréal: NETMF et Gadgeteer
ALT.Net Montréal: NETMF et GadgeteerGabriel Mongeon
 
Hacking your Home @bdx.io
Hacking your Home @bdx.ioHacking your Home @bdx.io
Hacking your Home @bdx.iolaurenthuet
 
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...Cédrick Lunven
 
cours-syst (1).pdf
cours-syst (1).pdfcours-syst (1).pdf
cours-syst (1).pdfolfaharrabi2
 

Similaire à Programmation sur GPU avec CUDA (20)

OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
 
Graphics card as computation engine
Graphics card as computation engineGraphics card as computation engine
Graphics card as computation engine
 
Presentaion fpga µc µp quelles est la solution
Presentaion  fpga µc µp quelles est la solutionPresentaion  fpga µc µp quelles est la solution
Presentaion fpga µc µp quelles est la solution
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Softshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèleSoftshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèle
 
Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
 
20190520 - IBM Cloud Paris-Saclay Meetup - Hardis Group
20190520  - IBM Cloud Paris-Saclay Meetup - Hardis Group20190520  - IBM Cloud Paris-Saclay Meetup - Hardis Group
20190520 - IBM Cloud Paris-Saclay Meetup - Hardis Group
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
Net duino et le .net micro framework
Net duino et le .net micro frameworkNet duino et le .net micro framework
Net duino et le .net micro framework
 
Architecture des ordinateurs
Architecture des ordinateursArchitecture des ordinateurs
Architecture des ordinateurs
 
Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloads
 
Paug renderscript-mars-2013
Paug renderscript-mars-2013Paug renderscript-mars-2013
Paug renderscript-mars-2013
 
Isbs slides 2010
Isbs slides 2010Isbs slides 2010
Isbs slides 2010
 
GPGPU facile avec JavaCL, et trivial avec ScalaCL !
GPGPU facile avec JavaCL, et trivial avec ScalaCL !GPGPU facile avec JavaCL, et trivial avec ScalaCL !
GPGPU facile avec JavaCL, et trivial avec ScalaCL !
 
ALT.Net Montréal: NETMF et Gadgeteer
ALT.Net Montréal: NETMF et GadgeteerALT.Net Montréal: NETMF et Gadgeteer
ALT.Net Montréal: NETMF et Gadgeteer
 
Hacking your Home @bdx.io
Hacking your Home @bdx.ioHacking your Home @bdx.io
Hacking your Home @bdx.io
 
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
 
cours-syst (1).pdf
cours-syst (1).pdfcours-syst (1).pdf
cours-syst (1).pdf
 

Programmation sur GPU avec CUDA

  • 1. Programmation parallèle sur GPU avec CUDA par Maxime Fromentin Consultant In Fine Consulting le 26/04/2011
  • 2.
  • 3. PARTIE I : Introduction aux GPUS et CUDA
  • 4.
  • 5.
  • 6. GPU | COMPARAISON DES ARCHITECTURES G80 GT200 Fermi Transistors 681 millions 1,4 milliards 3,0 milliards CUDA cores 128 240 512 Double précision (par cycle) - 30 FMA 256 FMA Simple précision (par cycle) 128 MAD 240 MAD 512 FMA Special Function Units (par SM) 2 2 4 Warp scheduler (par SM) 1 1 2 Shared memory (par SM) 16 Ko 16 Ko 48 Ko ou 16 Ko Cache L1 (par SM) - - 48 Ko ou 16 Ko Cache L2 - - 768 Ko Mémoire ECC Non Non Oui Kernels concurrents Non Non jusqu’à 16 Adresses 32 bits 32 bits 64 bits
  • 7.
  • 8.
  • 9.
  • 10. PARTIE II : CUDA more in-depth Exemple
  • 11.
  • 12.
  • 13.
  • 14. CUDA | MODÈLE D’EXÉCUTION
  • 15.
  • 16. CUDA | STRUCTURE D’UN PROGRAMME // allocation de la mémoire sur le device cudaMalloc((void**)a_d, size); … // transfert des données du CPU vers le device (GPU) cudaMemcpy(a_d, a, size, cudaMemcpyHostToDevice); … // appel du kernel (programme qui tourne sur le GPU) addVectors<<< xxx, xxx>>>(n, a_d, b_d, c_d); // récupération du résultat cudaMemcpy(c, c_d, size, cudaMemcpyDeviceToHost);
  • 17.
  • 18. CUDA | EXEMPLE : MULTIPLICATION DE MATRICES
  • 19. CUDA | EXEMPLE : MULTIPLICATION DE MATRICES … cudaMemcpy(xd, x, size, cudaMemcpyHostToDevice); cudaMemcpy(yd, y, size, cudaMemcpyHostToDevice); const int threadsPerBlock = 16; int nblocks = (n + threadsPerBlock - 1) / (threadsPerBlock); dim3 dimGrid(nblocks,nblocks,1); dim3 dimBlock(threadsPerBlock,threadsPerBlock,1); multMatKernel<<<dimGrid, dimBlock>>>(n, xd, yd, zd); cudaMemcpy(z, zd, size, cudaMemcpyDeviceToHost); //std::cout << x[0] << &quot; + &quot; << y[0] << &quot; = &quot; << z[0] << std::endl; cudaFree(xd); cudaFree(yd); cudaFree(zd);
  • 20. CUDA | EXEMPLE : MULTIPLICATION DE MATRICES __global__ void multMatKernel(int n, float *x, float *y, float *z) { int xx= blockIdx.x * blockDim.x + threadIdx.x; int yy= blockIdx.y * blockDim.y + threadIdx.y; if(xx<n && yy <n) { float res =0.0f; for(int i=0;i<n;i++) res+=x[yy+n*i]*y[xx*n+i]; z[xx*n+yy] =res; } }  Des optimisations encore possibles en utilisant la mémoire locale
  • 21.
  • 22.