gpgpu programazioa: txartel grafikoa erabiliz programatu
Post on 05-Dec-2014
1.005 Views
Preview:
DESCRIPTION
TRANSCRIPT
GPGPU programazioaTxartel 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 desberdinakOpenMP & OpenACCCUDAOpenCL
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 dugunadibidea
16
17
Jatorrizkoaren egiletza: CC-BY-ND Pavol Davorsky (˜PAulie-SVK@devianART)
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 duenprogramazio eredua
43
general-purpose computing ongraphics processing units
44
orotariko konputazioa grafikoakprozesatzeko unitateetan
45
46
</gpgpu?>
47
<arkitekturak>
48
(2)
49
(1)
50
begiztetanzentratua
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 denadierazten da
64
nola egiten den jakin beharrikgabe
65
migrazioa errazagoa
66
OpenMP oso erabiliaOpenACC ez hainbeste
67
</OpenMP & OpenACC>
68
(2)
69
harietanzentratua
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 direnfuntzioak
79
ezin dute baliorik bueltatu
80
global
81
CUDA C
82
Jatorrizkoaren egiletza: PD Clker.com & Seamas O Brogain
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 dukopurua
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 artekokoordinazioa?
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), cudaMemcpyHostToDevice);
cudaMemcpy(d_b , b, N*sizeof(int), cudaMemcpyHostToDevice);
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), cudaMemcpyDeviceToHost);
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 gailutanexekutatu daiteke
122
C99
123
CUDArekin antzekotasunak etadesberdintasunak
124
maila baxuagokoa
125
oraindik ez CUDA bezain osoabaina...
126
etorkizuna izango da
127
</OpenCL>
128
</arkitekturak>
129
<non? zelan? zertarako?>
130
Jatorrizkoaren egiletza: c© NVIDIA131
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.0http://creativecommons.org/licenses/by/3.0/deed.eu
(kontrakoa adierazita duten irudiena izan ezik.)
LATEXeko Beamer klase librearekin eginiko aurkezpena
http://slideshare.net/janfri
http://hamahiru.org
mikel@hamahiru.orgpgp gakoa: 0x8141DED2
@azken tximinoa
140
top related