SlideShare una empresa de Scribd logo
1 de 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?

Más contenido relacionado

La actualidad más candente

Debugging with EMUX - RIngzer0 BACK2WORKSHOPS
Debugging with EMUX - RIngzer0 BACK2WORKSHOPSDebugging with EMUX - RIngzer0 BACK2WORKSHOPS
Debugging with EMUX - RIngzer0 BACK2WORKSHOPSSaumil Shah
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopLilia Sfaxi
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQLLilia Sfaxi
 
Conception et développement d'une application de gestion de production et de ...
Conception et développement d'une application de gestion de production et de ...Conception et développement d'une application de gestion de production et de ...
Conception et développement d'une application de gestion de production et de ...Mohamed Aziz Chetoui
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduceAmal Abid
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheMohamed Heny SELMI
 
Projet réalisé par ameny Khedhira & Arij Mekki
Projet réalisé par  ameny Khedhira & Arij MekkiProjet réalisé par  ameny Khedhira & Arij Mekki
Projet réalisé par ameny Khedhira & Arij MekkiAmeny Khedhira
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratiqueAbdelouahed Abdou
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceLilia Sfaxi
 
Mesure de température et humidité avec le capteur DHT11 et la Raspberry Pi 3
Mesure de température et humidité  avec le capteur DHT11 et la Raspberry Pi 3Mesure de température et humidité  avec le capteur DHT11 et la Raspberry Pi 3
Mesure de température et humidité avec le capteur DHT11 et la Raspberry Pi 3Chiheb Ameur ABID
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
Embarqués temps réel
Embarqués temps réelEmbarqués temps réel
Embarqués temps réelmikhailether
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcminfcom
 

La actualidad más candente (20)

Debugging with EMUX - RIngzer0 BACK2WORKSHOPS
Debugging with EMUX - RIngzer0 BACK2WORKSHOPSDebugging with EMUX - RIngzer0 BACK2WORKSHOPS
Debugging with EMUX - RIngzer0 BACK2WORKSHOPS
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
 
NVIDIA CUDA
NVIDIA CUDANVIDIA CUDA
NVIDIA CUDA
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Conception et développement d'une application de gestion de production et de ...
Conception et développement d'une application de gestion de production et de ...Conception et développement d'une application de gestion de production et de ...
Conception et développement d'une application de gestion de production et de ...
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduce
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
MEMOIRE DE STAGE
MEMOIRE DE STAGEMEMOIRE DE STAGE
MEMOIRE DE STAGE
 
Systeme embarque
Systeme embarqueSysteme embarque
Systeme embarque
 
Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de recherche
 
Projet réalisé par ameny Khedhira & Arij Mekki
Projet réalisé par  ameny Khedhira & Arij MekkiProjet réalisé par  ameny Khedhira & Arij Mekki
Projet réalisé par ameny Khedhira & Arij Mekki
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratique
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
 
Mesure de température et humidité avec le capteur DHT11 et la Raspberry Pi 3
Mesure de température et humidité  avec le capteur DHT11 et la Raspberry Pi 3Mesure de température et humidité  avec le capteur DHT11 et la Raspberry Pi 3
Mesure de température et humidité avec le capteur DHT11 et la Raspberry Pi 3
 
Presentation,PFE
Presentation,PFEPresentation,PFE
Presentation,PFE
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
Embarqués temps réel
Embarqués temps réelEmbarqués temps réel
Embarqués temps réel
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcm
 

Destacado

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
 

Destacado (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
 

Similar a 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
 

Similar a 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.