GPGPU programazioa                                  Txartel grafikoa erabiliz programatu                                   ...
Edukiak Sarrera: GPUak GPGPU Plataforma desberdinak    OpenMP & OpenACC    CUDA    OpenCL Non erabiltzen da?              ...
<sarrera>            3
zer da txartel grafikoa?                          4
“oinarrizko plakako zirrikituetako batean   konektatzen den barruko osagaia da. Bere   helburu nagusia monitoreari azaldu ...
zer da GPUa?               6
“a specialized electronic circuit designed to   rapidly manipulate and alter memory to accelerate the building of images i...
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  ...
Jatorrizkoaren egiletza: CC-BY-SA 3.0 OpenStreetMap & Euskalmapa.com                                                      ...
Jatorrizkoaren egiletza: CC-BY-SA 3.0 OpenStreetMap, Euskalmapa.com & Amazon Web Services                                 ...
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                                                 ...
(2)      25
Jatorrizkoaren egiletza: CC-BY-SA 3.0 Janine Arriaga, Angelica Castillo & Chris Covarrubias                               ...
(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                                      ...
(1)      30
Moore-ren legea                  31
“bi urterik behin, zirkuitu integratuetakotransistore kopurua bikoiztu egiten da”                                         ...
Jatorrizkoaren egiletza: CC-BY-SA 3.0 Wgsimon@Wikimedia Commons                                                           ...
eta erlojuaren maiztasuna?                             34
Jatorrizkoaren egiletza: CPU DB. http://cpudb.stanford.edu/visualize/clock frequency                                      ...
36
zergatik?            37
Jatorrizkoaren egiletza: CC-BY-SA 3.0 RRZEicons@Wikimedia Commons & PD Clker.com                                          ...
(2) & (3)            39
40
Jatorrizkoaren egiletza: CC-BY 3.0 NVIDIA CUDA Programming Guide version 3.0                                              ...
bakoitza bere lanerako egokia                                42
GPGPU hau baliatzen duenprogramazio 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
begiztetanzentratuaJatorrizkoaren egiletza: CC-BY 2.5 Val Kerry (art makes me smile@Flickr)                               ...
<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 ] bete5     ...
OpenMP         58
int main ( int argc , char * argv []) { 2       const int N = 500;         int i , a [ N ]; 4       // a [ N ] bete 6     ...
OpenACC          61
1   int main ( int argc , char * argv []) {         const int N = 500; 3       int i , a [ N ];         // a [ N ] bete 5 ...
zer paralelizatu nahi den     adierazten da                            64
nola egiten den jakin beharrik            gabe                                 65
migrazioa errazagoa                      66
OpenMP oso erabiliaOpenACC ez hainbeste                       67
</OpenMP & OpenACC>                      68
(2)      69
harietan                                                                           zentratuaJatorrizkoaren egiletza: CC-BY...
<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     ...
Jatorrizkoaren egiletza: CC-BY 3.0 Tor proiektua                                                   84
Jatorrizkoaren egiletza: CC-BY-SA 3.0 Ricardas.marozas@Wikimedia Commons                                                  ...
</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
hariakblokeak          93
hariakJatorrizkoaren egiletza: CC-BY 3.0 Jorge Barrios (jorgebarrios@Wikimedia Commons)                                   ...
3D array bat  (dim3)               95
hardware-ak mugatzen du        kopurua                          96
threadIdx(threadIdx.x, threadIdx.y, threadIdx.z)                                          97
blokeak          98
hari taldeakJatorrizkoaren egiletza: CC-BY 2.5 Novita Estiti (verypurpleperson@Flickr)                                    ...
3D array bat  (dim3)               100
blockIdx(blockIdx.x, blockIdx.y, blockIdx.z)                                       101
Jatorrizkoaren egiletza: CC-BY 2.5 Dennis Brekke (dbrekke@Flickr)                                                         ...
Jatorrizkoaren egiletza: CC-BY 3.0 NVIDIA CUDA Programming Guide version 3.0                                              ...
kernela<<<hariak, blokeak>>>(f param)                                        104
(3)eta harien artekokoordinazioa?                    105
memoria          106
Jatorrizkoaren egiletza: CC-BY 3.0 NVIDIA CUDA Programming Guide version 3.0                                              ...
synchthreads()                 108
adibidea           109
1   int main ( int argc , char * argv []) {        const int N = 500;3       int i , a [ N ] , b [ N ] , c [ N ];        /...
int main ( int argc , char * argv []) { 2       const int N = 500;         int a [ N ] , b [ N ] , C [ N ]; 4       // a e...
__global__ kernel ( int * d_a , int * d_b , int * d_c ) {2       int indizea = ( threadIdx . x + 25 * threadIdx . y ) * ( ...
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                        ...
segurtasunaren esparruan...                              136
WPA, hash... “ikuskaritza”                             137
</non? zelan? zertarako?>                            138
eskerrik asko.                 139
lizentzia: CC-BY 3.0http://creativecommons.org/licenses/by/3.0/deed.eu(kontrakoa adierazita duten irudiena izan ezik.)   L...
Upcoming SlideShare
Loading in...5
×

GPGPU programazioa: Txartel grafikoa erabiliz programatu

1,612

Published on

GPGPUa zer den eta eredu hori baliatzen duten hainbat plataforma azaltzen dituen aurkezpena.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,612
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

GPGPU programazioa: Txartel grafikoa erabiliz programatu

  1. 1. GPGPU programazioa Txartel grafikoa erabiliz programatu Mikel Iturbe Urretxa UniEncounter, 2013ko Martxoak 21Irudiaren egiletza: CC-BY 2.5 Christian Prade (cprade@Flickr)
  2. 2. Edukiak Sarrera: GPUak GPGPU Plataforma desberdinak OpenMP & OpenACC CUDA OpenCL Non erabiltzen da? 2
  3. 3. <sarrera> 3
  4. 4. zer da txartel grafikoa? 4
  5. 5. “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
  6. 6. zer da GPUa? 6
  7. 7. “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
  8. 8. zerekin lotzen ditugu? 8
  9. 9. eboluzio handia 9
  10. 10. Jatorrizkoaren egiletza: GPLv3 Gang Garrison 2 10
  11. 11. Jatorrizkoaren egiletza: GPLv2 Xonotic 11
  12. 12. grafikoak + fisika 12
  13. 13. paraleloan aritzeko egokiak 13
  14. 14. </sarrera> 14
  15. 15. <gpgpu?> 15
  16. 16. denok ezagutzen dugun adibidea 16
  17. 17. 17
  18. 18. Jatorrizkoaren egiletza: CC-BY-ND Pavol Davorsk´ (˜PAulie-SVK@devianART) y 18
  19. 19. Jatorrizkoaren egiletza: CC-BY-SA 3.0 OpenStreetMap & Euskalmapa.com 19
  20. 20. Jatorrizkoaren egiletza: CC-BY-SA 3.0 OpenStreetMap, Euskalmapa.com & Amazon Web Services 20
  21. 21. Jatorrizkoaren egiletza: CC-BY-SA 3.0 Janine Arriaga 21
  22. 22. (3) 22
  23. 23. (1) 23
  24. 24. Jatorrizkoaen egiletza: CC-BY-SA 3.0 Janine Arriaga & Guudmorning!@Flickr 24
  25. 25. (2) 25
  26. 26. Jatorrizkoaren egiletza: CC-BY-SA 3.0 Janine Arriaga, Angelica Castillo & Chris Covarrubias 26
  27. 27. (3) 27
  28. 28. Jatorrizkoaren egiletza: CC-BY-SA 3.0 Nikki Ibanez 28
  29. 29. Jatorrizkoaren egiletza: CC-BY-SA 3.0 Christophe Dang Ngoc Chan & PD Charles B. King 29
  30. 30. (1) 30
  31. 31. Moore-ren legea 31
  32. 32. “bi urterik behin, zirkuitu integratuetakotransistore kopurua bikoiztu egiten da” 32
  33. 33. Jatorrizkoaren egiletza: CC-BY-SA 3.0 Wgsimon@Wikimedia Commons 33
  34. 34. eta erlojuaren maiztasuna? 34
  35. 35. Jatorrizkoaren egiletza: CPU DB. http://cpudb.stanford.edu/visualize/clock frequency 35
  36. 36. 36
  37. 37. zergatik? 37
  38. 38. Jatorrizkoaren egiletza: CC-BY-SA 3.0 RRZEicons@Wikimedia Commons & PD Clker.com 38
  39. 39. (2) & (3) 39
  40. 40. 40
  41. 41. Jatorrizkoaren egiletza: CC-BY 3.0 NVIDIA CUDA Programming Guide version 3.0 41
  42. 42. bakoitza bere lanerako egokia 42
  43. 43. GPGPU hau baliatzen duenprogramazio eredua 43
  44. 44. general-purpose computing on graphics processing units 44
  45. 45. orotariko konputazioa grafikoak prozesatzeko unitateetan 45
  46. 46. 46
  47. 47. </gpgpu?> 47
  48. 48. <arkitekturak> 48
  49. 49. (2) 49
  50. 50. (1) 50
  51. 51. begiztetanzentratuaJatorrizkoaren egiletza: CC-BY 2.5 Val Kerry (art makes me smile@Flickr) 51
  52. 52. <OpenMP & OpenACC> 52
  53. 53. industri-estandarrak 53
  54. 54. 54
  55. 55. adibidea 55
  56. 56. 1 int main ( int argc , char * argv []) { const int N = 500;3 int i , a [ N ]; // a [ N ] bete5 for ( i = 0; i < N ; i ++)7 a[i] = 2 * i;9 return 0; } 57
  57. 57. OpenMP 58
  58. 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
  59. 59. OpenACC 61
  60. 60. 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
  61. 61. zer paralelizatu nahi den adierazten da 64
  62. 62. nola egiten den jakin beharrik gabe 65
  63. 63. migrazioa errazagoa 66
  64. 64. OpenMP oso erabiliaOpenACC ez hainbeste 67
  65. 65. </OpenMP & OpenACC> 68
  66. 66. (2) 69
  67. 67. harietan zentratuaJatorrizkoaren egiletza: CC-BY 2.5 Val Kerry (art makes me smile@Flickr) 70
  68. 68. <CUDA> 71
  69. 69. sakonago 72
  70. 70. gpgpu produktu helduena 73
  71. 71. NVIDIAk garatua 74
  72. 72. eta propietarioa... :-( 75
  73. 73. <CUDAren egitura> 76
  74. 74. Jatorrizkoaren egiletza: CC-BY 3.0 Tosaka@Wikimedia Commons 77
  75. 75. kernelak 78
  76. 76. paraleloan exekutatuko diren funtzioak 79
  77. 77. ezin dute baliorik bueltatu 80
  78. 78. global 81
  79. 79. CUDA C 82
  80. 80. e ´Jatorrizkoaren egiletza: PD Clker.com & S´amas O Br´g´in o a 83
  81. 81. Jatorrizkoaren egiletza: CC-BY 3.0 Tor proiektua 84
  82. 82. Jatorrizkoaren egiletza: CC-BY-SA 3.0 Ricardas.marozas@Wikimedia Commons 85
  83. 83. </CUDAren egitura> 86
  84. 84. eta kernelak exekutatzeko? 87
  85. 85. (1)zeren gainean egingo du lan? 88
  86. 86. 89
  87. 87. cudaMalloc() cudaFree()cudaMemcpy() 90
  88. 88. (2)nola exekutatuko da? 91
  89. 89. kernela<<<exek param>>>(f param) 92
  90. 90. hariakblokeak 93
  91. 91. hariakJatorrizkoaren egiletza: CC-BY 3.0 Jorge Barrios (jorgebarrios@Wikimedia Commons) 94
  92. 92. 3D array bat (dim3) 95
  93. 93. hardware-ak mugatzen du kopurua 96
  94. 94. threadIdx(threadIdx.x, threadIdx.y, threadIdx.z) 97
  95. 95. blokeak 98
  96. 96. hari taldeakJatorrizkoaren egiletza: CC-BY 2.5 Novita Estiti (verypurpleperson@Flickr) 99
  97. 97. 3D array bat (dim3) 100
  98. 98. blockIdx(blockIdx.x, blockIdx.y, blockIdx.z) 101
  99. 99. Jatorrizkoaren egiletza: CC-BY 2.5 Dennis Brekke (dbrekke@Flickr) 102
  100. 100. Jatorrizkoaren egiletza: CC-BY 3.0 NVIDIA CUDA Programming Guide version 3.0 103
  101. 101. kernela<<<hariak, blokeak>>>(f param) 104
  102. 102. (3)eta harien artekokoordinazioa? 105
  103. 103. memoria 106
  104. 104. Jatorrizkoaren egiletza: CC-BY 3.0 NVIDIA CUDA Programming Guide version 3.0 107
  105. 105. synchthreads() 108
  106. 106. adibidea 109
  107. 107. 1 int main ( int argc , char * argv []) { const int N = 500;3 int i , a [ N ] , b [ N ] , c [ N ]; // a eta b edukiz bete5 for ( i = 0; i < N ; i ++)7 c [ i ] = a [ i ]+ b [ i ];9 return 0; } 111
  108. 108. 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
  109. 109. __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
  110. 110. tresnak 116
  111. 111. nvcc 117
  112. 112. CUDA-GDB 118
  113. 113. </CUDA> 119
  114. 114. <OpenCL> 120
  115. 115. GPGPUrako estandar irekia 121
  116. 116. kodea hainbat gailutan exekutatu daiteke 122
  117. 117. C99 123
  118. 118. CUDArekin antzekotasunak eta desberdintasunak 124
  119. 119. maila baxuagokoa 125
  120. 120. oraindik ez CUDA bezain osoa baina... 126
  121. 121. etorkizuna izango da 127
  122. 122. </OpenCL> 128
  123. 123. </arkitekturak> 129
  124. 124. <non? zelan? zertarako?> 130
  125. 125. Jatorrizkoaren egiletza: c NVIDIA 131
  126. 126. Jatorrizkoaren egiletza: CC-BY 2.5 ChrisDag@Flickr 132
  127. 127. Jatorrizkoaren egiletza: PD AEBko energia departamendua 133
  128. 128. baita gailu txikiagotan ere 134
  129. 129. Jatorrizkoaren egiletza: CC-BY 2.5 Android Open Source Project, CC-BY 2.0 Robert Nelson & c NVIDIA 135
  130. 130. segurtasunaren esparruan... 136
  131. 131. WPA, hash... “ikuskaritza” 137
  132. 132. </non? zelan? zertarako?> 138
  133. 133. eskerrik asko. 139
  134. 134. lizentzia: CC-BY 3.0http://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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×