SlideShare una empresa de Scribd logo
1 de 134
Descargar para leer sin conexión
GPGPU programazioa
                                  Txartel grafikoa erabiliz programatu


                                              Mikel Iturbe Urretxa


                                  UniEncounter, 2013ko Martxoak 21




Irudiaren egiletza: CC-BY 2.5 Christian Prade (cprade@Flickr)
Edukiak

 Sarrera: GPUak

 GPGPU

 Plataforma desberdinak
    OpenMP & OpenACC
    CUDA
    OpenCL

 Non erabiltzen da?



                          2
<sarrera>




            3
zer da txartel grafikoa?




                          4
“oinarrizko plakako zirrikituetako batean
   konektatzen den barruko osagaia da. Bere
   helburu nagusia monitoreari azaldu behar
       diren datuak zuzen bidaltzea da.”

Iturria: CC-BY-SA 3.0 Euskarazko Wikipedia. http://eu.wikipedia.org/wiki/Txartel grafiko




                                                                                           5
zer da GPUa?




               6
“a specialized electronic circuit designed to
   rapidly manipulate and alter memory to
 accelerate the building of images in a frame
   buffer intended for output to a display”

Iturria: CC-BY-SA 3.0 Ingelesezko Wikipedia. http://en.wikipedia.org/wiki/Graphics processing unit




                                                                                                     7
zerekin lotzen ditugu?




                         8
eboluzio handia




                  9
Jatorrizkoaren egiletza: GPLv3 Gang Garrison 2
                                                 10
Jatorrizkoaren egiletza: GPLv2 Xonotic
                                         11
grafikoak
   +
  fisika



           12
paraleloan aritzeko egokiak




                              13
</sarrera>




             14
<gpgpu?>




           15
denok ezagutzen dugun
       adibidea



                        16
17
Jatorrizkoaren egiletza: CC-BY-ND Pavol Davorsk´ (˜PAulie-SVK@devianART)
                                               y
                                                                           18
Jatorrizkoaren egiletza: CC-BY-SA 3.0 OpenStreetMap & Euskalmapa.com




                                                                       19
Jatorrizkoaren egiletza: CC-BY-SA 3.0 OpenStreetMap, Euskalmapa.com & Amazon Web Services




                                                                                            20
Jatorrizkoaren egiletza: CC-BY-SA 3.0 Janine Arriaga




                                                       21
(3)




      22
(1)




      23
Jatorrizkoaen egiletza: CC-BY-SA 3.0 Janine Arriaga & Guudmorning!@Flickr




                                                                            24
(2)




      25
Jatorrizkoaren egiletza: CC-BY-SA 3.0 Janine Arriaga, Angelica Castillo & Chris Covarrubias

                                                                                              26
(3)




      27
Jatorrizkoaren egiletza: CC-BY-SA 3.0 Nikki Ibanez




                                                     28
Jatorrizkoaren egiletza: CC-BY-SA 3.0 Christophe Dang Ngoc Chan & PD Charles B. King

                                                                                       29
(1)




      30
Moore-ren legea




                  31
“bi urterik behin, zirkuitu integratuetako
transistore kopurua bikoiztu egiten da”




                                             32
Jatorrizkoaren egiletza: CC-BY-SA 3.0 Wgsimon@Wikimedia Commons


                                                                  33
eta erlojuaren maiztasuna?




                             34
Jatorrizkoaren egiletza: CPU DB. http://cpudb.stanford.edu/visualize/clock frequency



                                                                                       35
36
zergatik?




            37
Jatorrizkoaren egiletza: CC-BY-SA 3.0 RRZEicons@Wikimedia Commons & PD Clker.com




                                                                                   38
(2) & (3)




            39
40
Jatorrizkoaren egiletza: CC-BY 3.0 NVIDIA CUDA Programming Guide version 3.0




                                                                               41
bakoitza bere lanerako egokia




                                42
GPGPU
 hau baliatzen duen
programazio eredua


                      43
general-purpose computing on
  graphics processing units



                               44
orotariko konputazioa grafikoak
   prozesatzeko unitateetan



                                 45
46
</gpgpu?>




            47
<arkitekturak>




                 48
(2)




      49
(1)




      50
begiztetan
zentratua



Jatorrizkoaren egiletza: CC-BY 2.5 Val Kerry (art makes me smile@Flickr)



                                                                           51
<OpenMP & OpenACC>




                     52
industri-estandarrak




                       53
54
adibidea




           55
1   int main ( int argc , char * argv []) {
        const int N = 500;
3       int i , a [ N ];
        // a [ N ] bete
5
        for ( i = 0; i < N ; i ++)
7           a[i] = 2 * i;

9       return 0;
    }




                                              57
OpenMP




         58
int main ( int argc , char * argv []) {
 2       const int N = 500;
         int i , a [ N ];
 4       // a [ N ] bete

 6       # pragma omp parallel for
         for ( i = 0; i < N ; i ++)
 8            a[i] = 2 * i;

10       return 0;
     }




                                               60
OpenACC




          61
1   int main ( int argc , char * argv []) {
         const int N = 500;
 3       int i , a [ N ];
         // a [ N ] bete
 5
         # pragma acc parallel kernels
 7       for ( i = 0; i < N ; i ++)
              a[i] = 2 * i;
 9
         return 0;
11   }




                                               63
zer paralelizatu nahi den
     adierazten da



                            64
nola egiten den jakin beharrik
            gabe



                                 65
migrazioa errazagoa




                      66
OpenMP oso erabilia
OpenACC ez hainbeste



                       67
</OpenMP & OpenACC>




                      68
(2)




      69
harietan
                                                                           zentratua



Jatorrizkoaren egiletza: CC-BY 2.5 Val Kerry (art makes me smile@Flickr)

                                                                                       70
<CUDA>




         71
sakonago




           72
gpgpu produktu helduena




                          73
NVIDIAk garatua




                  74
eta propietarioa... :-(




                          75
<CUDAren egitura>




                    76
Jatorrizkoaren egiletza: CC-BY 3.0 Tosaka@Wikimedia Commons




                                                              77
kernelak




           78
paraleloan exekutatuko diren
         funtzioak



                               79
ezin dute baliorik bueltatu




                              80
global




         81
CUDA C




         82
e     ´
Jatorrizkoaren egiletza: PD Clker.com & S´amas O Br´g´in
                                                   o a

                                                           83
Jatorrizkoaren egiletza: CC-BY 3.0 Tor proiektua




                                                   84
Jatorrizkoaren egiletza: CC-BY-SA 3.0 Ricardas.marozas@Wikimedia Commons




                                                                           85
</CUDAren egitura>




                     86
eta kernelak exekutatzeko?




                             87
(1)
zeren gainean egingo du lan?



                               88
89
cudaMalloc()
 cudaFree()
cudaMemcpy()



               90
(2)
nola exekutatuko da?



                       91
kernela<<<exek param>>>(f param)




                                   92
hariak
blokeak



          93
hariak



Jatorrizkoaren egiletza: CC-BY 3.0 Jorge Barrios (jorgebarrios@Wikimedia Commons)




                                                                                    94
3D array bat
  (dim3)



               95
hardware-ak mugatzen du
        kopurua



                          96
threadIdx
(threadIdx.x, threadIdx.y, threadIdx.z)




                                          97
blokeak




          98
hari taldeak

Jatorrizkoaren egiletza: CC-BY 2.5 Novita Estiti (verypurpleperson@Flickr)
                                                                             99
3D array bat
  (dim3)



               100
blockIdx
(blockIdx.x, blockIdx.y, blockIdx.z)




                                       101
Jatorrizkoaren egiletza: CC-BY 2.5 Dennis Brekke (dbrekke@Flickr)
                                                                    102
Jatorrizkoaren egiletza: CC-BY 3.0 NVIDIA CUDA Programming Guide version 3.0




                                                                               103
kernela<<<hariak, blokeak>>>(f param)




                                        104
(3)
eta harien arteko
koordinazioa?



                    105
memoria




          106
Jatorrizkoaren egiletza: CC-BY 3.0 NVIDIA CUDA Programming Guide version 3.0



                                                                               107
synchthreads()




                 108
adibidea




           109
1   int main ( int argc , char * argv []) {
        const int N = 500;
3       int i , a [ N ] , b [ N ] , c [ N ];
        // a eta b edukiz bete
5
        for ( i = 0; i < N ; i ++)
7           c [ i ] = a [ i ]+ b [ i ];

9       return 0;
    }




                                               111
int main ( int argc , char * argv []) {
 2       const int N = 500;
         int a [ N ] , b [ N ] , C [ N ];
 4       // a eta b edukiz bete

 6         cudaMalloc (( void **) & d_a , N * sizeof ( int ) ) ;
           cudaMalloc (( void **) & d_b , N * sizeof ( int ) ) ;
 8         cudaMalloc (( void **) & d_c , N * sizeof ( int ) ) ;

10         cudaMemcpy ( d_a , a , N * sizeof ( int ) , c u d a M e m c p y H o s t T o D e v i c e ) ;
           cudaMemcpy ( d_b , b , N * sizeof ( int ) , c u d a M e m c p y H o s t T o D e v i c e ) ;
12
           dim3 hariak (25 , 10 , 1) ;
14         dim3 blokeak (2 , 1 , 1) ;
           kernel < < < blokeak , hariak > > >(* d_a ,* d_b ,* d_c ) ;
16
           cudaMemcpy (c , d_c , N * sizeof ( int ) , c u d a M e m c p y D e v i c e T o H o s t ) ;
18
           cudaFree ( d_a ) ;
20         cudaFree ( d_b ) ;
           cudaFree ( d_c ) ;
22
         return 0;
24   }


                                                                                                         113
__global__ kernel ( int * d_a , int * d_b , int * d_c ) {
2       int indizea = ( threadIdx . x + 25 * threadIdx . y ) * (
              blockIdx . x + 1) ;
        d_c [ indizea ] = d_a [ indizea ] + d_b [ indizea ];
4   }




                                                                   115
tresnak




          116
nvcc




       117
CUDA-GDB




           118
</CUDA>




          119
<OpenCL>




           120
GPGPUrako estandar irekia




                            121
kodea hainbat gailutan
  exekutatu daiteke



                         122
C99




      123
CUDArekin antzekotasunak eta
    desberdintasunak



                               124
maila baxuagokoa




                   125
oraindik ez CUDA bezain osoa
           baina...



                               126
etorkizuna izango da




                       127
</OpenCL>




            128
</arkitekturak>




                  129
<non? zelan? zertarako?>




                           130
Jatorrizkoaren egiletza: c NVIDIA
                                    131
Jatorrizkoaren egiletza: CC-BY 2.5 ChrisDag@Flickr
                                                     132
Jatorrizkoaren egiletza: PD AEBko energia departamendua




                                                          133
baita gailu txikiagotan ere




                              134
Jatorrizkoaren egiletza: CC-BY 2.5 Android Open Source Project, CC-BY 2.0 Robert Nelson & c NVIDIA




                                                                                                     135
segurtasunaren esparruan...




                              136
WPA, hash... “ikuskaritza”




                             137
</non? zelan? zertarako?>




                            138
eskerrik asko.




                 139
lizentzia: CC-BY 3.0
http://creativecommons.org/licenses/by/3.0/deed.eu


(kontrakoa adierazita duten irudiena izan ezik.)
   LTEXeko Beamer klase librearekin eginiko aurkezpena
   A




       http://slideshare.net/janfri
           http://hamahiru.org
             mikel@hamahiru.org
                   pgp gakoa: 0x8141DED2

                  @azken tximinoa



                                                         140

Más contenido relacionado

Destacado

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Destacado (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

GPGPU programazioa: Txartel grafikoa erabiliz programatu