wissenschaftliches rechnen auf grafikkarten achim grolms buyu xiao guanhua bai betreuer: dipl.-ing....
TRANSCRIPT
![Page 1: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/1.jpg)
Wissenschaftliches Rechnen auf Grafikkarten
Achim Grolms Buyu Xiao
Guanhua Bai
Betreuer: Dipl.-Ing. Bastian Bandlow
![Page 2: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/2.jpg)
2 Univ. Paderborn, FG Theoretische Elektrotechnik 2
Übersicht
Motivation und Zielsetzung
Einleitung CUDA
Sparse Matrix
IDR(s) Integration
Zusammenfassung und Ausblick
![Page 3: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/3.jpg)
3 Univ. Paderborn, FG Theoretische Elektrotechnik 3
Aufgabenstellung
Motivation:
• Was ist CUDA?
• Anwendung von CUDA.
• Unterschied zwischen GPU und CPU.
Zielsetzung:
• Einarbeiten in CUDA und Matlab
• Festlegen, welche mathematischen Teilaufgaben im
IDR-Algorithmus erledigt werden müssen
• Gleichungssystemlöser implementieren
Wissenschaftliches Rechnen auf Grafikkarten
![Page 4: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/4.jpg)
4 Univ. Paderborn, FG Theoretische Elektrotechnik 4
Übersicht
Motivation und Zielsetzung
Einleitung CUDA
Sparse Matrix
IDR(s) Integration
Zusammenfassung und Ausblick
![Page 5: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/5.jpg)
5 Univ. Paderborn, FG Theoretische Elektrotechnik 5
Was ist CUDA• CUDA: Compute Unified Device Architecture • Entwickelt von NVIDIA• Standard-C-Entwicklungsumgebung• Ermöglicht die Benutzung des Grafikprozessors zur
Beschleunigung und Visualisierung wissenschaftlicher und technischer Berechnungen
• Anwendungsbeispiele:• Numerik• Grafik• Signalverarbeitung• Wissenschaft
Quelle: http://www.nvidia.de
![Page 6: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/6.jpg)
6 Univ. Paderborn, FG Theoretische Elektrotechnik 6
GPU vs. CPU
Vergleich Gflops von GPU und CPUQuelle: http://theinf2.informatik.uni-jena.de
![Page 7: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/7.jpg)
7 Univ. Paderborn, FG Theoretische Elektrotechnik 7
GPU vs. CPU
DRAM
Cache
ALUControl
ALU
ALU
ALU
DRAM
Unterschiedliche Architektur Design zwischen GPU und CPU
GPU CPUgeeignet für
allgemeine Anwendungen
gut geeignet für
spezielle Anwendungen
Quelle: http://www.nvidia.de
![Page 8: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/8.jpg)
8 Univ. Paderborn, FG Theoretische Elektrotechnik 8
Maximale Größe von x- y- and z-Dimension aus einem thread block sind 512, 512 und 64
CUDA Programmier-Modell GPU Prozessor mit vielen
parallel ausführten Threads Anwendung zum Kernel auf die GPU
• Der Kernel wird parallel von mehreren Threads auf unterschiedlichen Daten ausgeführt
Maximale Anzahl von threads per block ist 512
Maximale Größe von jeder Dimension aus einem Grid des thread blocks ist 65535
Quelle: http://www.nvidia.de
![Page 9: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/9.jpg)
9 Univ. Paderborn, FG Theoretische Elektrotechnik 9
CUDA GPU-Modell
Hardware-Modell
Quelle: NVIDIA CUDA Programming Guide
![Page 10: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/10.jpg)
10 Univ. Paderborn, FG Theoretische Elektrotechnik 10
IDR‘s(Induced dimension Reduction)function [x,resvec,iter]=idrs(A,b,s,tol,maxit,x0)% see paper in this directory%--------------- Creating start residual: ----------N = length(b);x = x0;r = b - A*x; normr = norm(r);%tolr = tol * norm(b); % tol: relative toleranceresvec=[normr];if (normr <= tolr) % Initial guess is a good enough solution
iter=0; return;
end;%----------------- Shadow space: --------------------rand('state', 0); %for reproducibility reasons.P = rand(N,s);P(:,1) = r; % Only for comparison with Bi-CGSTABP = orth(P)'; % transpose for efficiency reasons.%---------------- Produce start vectors: ------------dR = zeros(N,s); dX = zeros(N,s);for k = 1:s
v = A*r; om = dot(v,r)/dot(v,v); dX(:,k) = om*r; dR(:,k) = -om*v; x = x + dX(:,k); r = r + dR(:,k); normr = norm(r); resvec = [resvec;normr]; M(:,k) = P*dR(:,k);
end
r = b - A*xM(:,k) = P*dR(:,k);
normr = norm(r);
tolr = tol * norm(b);
Norm
Matrix*Vector
Skalarproduktom = dot(v,r)/dot(v,v);
![Page 11: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/11.jpg)
11 Univ. Paderborn, FG Theoretische Elektrotechnik 11
IDR‘s(Induced dimension Reduction)%----------------- Main iteration loop, build G-spaces: ----------------iter = s;oldest = 1;m = P*r; while ( normr > tolr ) & ( iter < maxit )
for k = 0:s c = M\m; q = -dR*c; % s-1 updates + 1 scaling v = r + q; % simple addition if ( k == 0 ) % 1 time:
t = A*v; % 1 matmulom = dot(t,v)/dot(t,t); % 2 inner productsdR(:,oldest) = q - om*t; % 1 update dX(:,oldest) = -dX*c + om*v; % s updates + 1 scaling
else % dX(:,oldest) = -dX*c + om*v; % s updates + 1 scalingdR(:,oldest) = -A*dX(:,oldest); % 1 matmul
end r = r + dR(:,oldest); % simple addition x = x + dX(:,oldest); % simple addition iter = iter + 1; normr=norm(r); % 1 inner product (not counted)resvec = [resvec;normr]; dm = P*dR(:,oldest); % s inner productsM(:,oldest) = dm; m = m + dm; % cycling s+1 times through matrices with s columns: oldest = oldest + 1; if ( oldest > s )
oldest = 1; end
end; % k = 0:send; %whilereturn
Matrix*Vectorm = P*r;
t = A*v;
dX(:,oldest) = -dX*c + om*v;
dX(:,oldest) = -dX*c + om*v;
dR(:,oldest) = -A*dX(:,oldest);
Skalarproduktom = dot(t,v)/dot(t,t);
normr=norm(r);Norm
![Page 12: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/12.jpg)
12 Univ. Paderborn, FG Theoretische Elektrotechnik 12
Parallele Operationen in IDR(s)Norm
dotMul
Matrix*Vector
222
21 ... nxxxXnorm
1 1 2 2 ... n nSkalarprodukt X Y x y x y x y
1 1
2 2matrixMul A..... .....
T T
T T
T Tn n
a a x
x a x a x
a a x
![Page 13: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/13.jpg)
13 Univ. Paderborn, FG Theoretische Elektrotechnik 13
Übersicht
Motivation und Zielsetzung
Einleitung CUDA
Sparse Matrix
IDR(s) Integration
Zusammenfassung und Ausblick
![Page 14: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/14.jpg)
14 Univ. Paderborn, FG Theoretische Elektrotechnik 14
Sparse Matrix
mnANmax (Anzahl der nonzero Elemente)
Nmax<<m*n
Größe = m*n
Was ist Sparse Matrix?
mnA Sparse Matrix
![Page 15: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/15.jpg)
15 Univ. Paderborn, FG Theoretische Elektrotechnik 15
Sparse Matrix
1 0 0 62 0 0 73 0 4 00 0 5 00 0 0 0
1 0 02 1 03 2 04 2 25 3 26 0 37 1 3
pr ir jc1 0 02 1 33 2 34 2 55 3 76 07 1
pr ir jc
0
2
3
4
5
6
Beispiel
0
1
2
3
4
5
6
0 1 2 30
1
2
3
4
![Page 16: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/16.jpg)
16 Univ. Paderborn, FG Theoretische Elektrotechnik 16
Sparse Matrix Multiplikation
1 0TA A
![Page 17: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/17.jpg)
17 Univ. Paderborn, FG Theoretische Elektrotechnik 17
BLOCK1
Sparse Matrix Multiplikation
12345
Nmax
1302
Nmax
023
N+1
0 1 2 3 4
IrPr
Jc
BA
C
1
2
1
3
7
BLOCK2
3 0
0
0
1
2
3
4
![Page 18: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/18.jpg)
18 Univ. Paderborn, FG Theoretische Elektrotechnik 18
SparseMatrixMultiplikationBlkY\BlkX 1 16 32 64 128 256 512
1 2.41 2.714 3.77 6.98 14.56 39.76
16 0.3 0.93 2.45 32 0.3 1.33 64 0.36
128 0.65 256 0.67 512 0.71
Matrix:
100000x100000
1 Diagonale
GPU:GTX260
Grid size:1024
(ms)
![Page 19: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/19.jpg)
19 Univ. Paderborn, FG Theoretische Elektrotechnik 19
SparseMatrixMultiplikationBlkY\BlkX 1 16 32 64 128 256 512
1 4.013 2.7824 3.8195 6.96 14.572 39.8216 7.0009 1.52 2.56 32 7.19 2.11 64 8.3125
128 10.354 256 9.97 512 9.54
Matrix:
100000x100000
32 Diagonale
GPU:GTX260
Grid size:1024
(ms)
![Page 20: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/20.jpg)
20 Univ. Paderborn, FG Theoretische Elektrotechnik 20
SparseMatrixMultiplikation
Diagonale 1 3 16 32 64 128
matlab 0.219 0.241 0.878 1.129 2.898 4
CPU 0.0355 0.059 0.2789 0.5348 1.126 2.399
GPU 0.0917 0.091 0.0932 0.1191 0.1739 0.2805
Matrix:5000x5000
Quad CPU: [email protected]
RAM:3.25GB
GPU:GTX260
Grid size:1024
Block size: 16x16
Matlab version: 2009b (ms)
![Page 21: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/21.jpg)
21 Univ. Paderborn, FG Theoretische Elektrotechnik 21
Optimierung
Mögliche Strategie:
Dreiecks-Summierung
(Summierung in Parallel)
Shared Memory
(geringere Latenz als globales Memory)
Minimierung leer laufender Threads
(32 Threads pro Warp)
![Page 22: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/22.jpg)
22 Univ. Paderborn, FG Theoretische Elektrotechnik 22
Block 1
Optimierung
AA(1,1)
A(2,1)
A(3,1)
A(4,1)
A(n,1)
A(1,2) A(1,n)
b(1)b(2)
b(n)shareb(1)
c11
c21
c12
c22
c1n
c2n
A(1,1)A(2,1)
b(n)
A(1,n)A(2,n)
C2
C1
![Page 23: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/23.jpg)
23 Univ. Paderborn, FG Theoretische Elektrotechnik 23
Optimierung
M x N1000
x50
100000
x50
500000
x50
1000
x1000
5000
x5000
CPU 1.56 15.94 80 3.44 87.19
Old GPU 2.669 26.059 130.038 0.564 11.216
GPU 0.207 1.056 4.963 0.176 2.998
Quad CPU:
RAM:3.25GB
GPU:GTX260
Grid size:1024
Block size: 8x64
![Page 24: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/24.jpg)
24 Univ. Paderborn, FG Theoretische Elektrotechnik 24
Übersicht
Motivation und Zielsetzung
Einleitung CUDA
Sparse Matrix
IDR(s) Integration
Zusammenfassung und Ausblick
![Page 25: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/25.jpg)
25 Univ. Paderborn, FG Theoretische Elektrotechnik 25
IDR(s) verteilt über die Hardware
RAM
PCI-Bus
Device
Host
CPU
Device Memory
GPUCore Core
Core Core
CudaMemCopy
![Page 26: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/26.jpg)
26 Univ. Paderborn, FG Theoretische Elektrotechnik 26
Testproblem
2 0 11 2 1 0
1 2 1 00
. .. .
. .0
1 2 1 01 2 1 0
0 2 1
x
![Page 27: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/27.jpg)
27 Univ. Paderborn, FG Theoretische Elektrotechnik 27
Grobe Übersicht Kontrollflußfor (1...s) op; op;end;
while( norm(r) < tolr ) for (1...s) op;
Löse(s,s); op; x = x + delta; r = rest(A,x,b); end op;end;
![Page 28: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/28.jpg)
28 Univ. Paderborn, FG Theoretische Elektrotechnik 28
Convergence HistoryIDR(4)Matlab-double, N=1000, tol = 1e-16
![Page 29: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/29.jpg)
29 Univ. Paderborn, FG Theoretische Elektrotechnik 29
Lösung xIDR(4)Matlab-double, N=1000, tol = 1e-16
![Page 30: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/30.jpg)
30 Univ. Paderborn, FG Theoretische Elektrotechnik 30
Zum Test verwendete Systeme
Hardware OS
GTX 260 Windows XP
Tesla Linux
![Page 31: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/31.jpg)
31 Univ. Paderborn, FG Theoretische Elektrotechnik 31
Convergence HistoryIDR(4)CUDAfloat, N=300, tol = 0.00001
![Page 32: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/32.jpg)
32 Univ. Paderborn, FG Theoretische Elektrotechnik 32
Lösung xIDR(4)CUDAfloat, N=300, tol = 0.00001
![Page 33: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/33.jpg)
33 Univ. Paderborn, FG Theoretische Elektrotechnik 33
Convergence HistoryIDRS(4)CUDAfloat, N=5000, tol = 0.0001
![Page 34: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/34.jpg)
34 Univ. Paderborn, FG Theoretische Elektrotechnik 34
(keine) Lösung xIDR(4)CUDAfloat, N=5000, tol = 0.0001
![Page 35: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/35.jpg)
35 Univ. Paderborn, FG Theoretische Elektrotechnik 35
IEEE 754 (single)
(Bildquelle: http://pics.computerbase.de/lexikon/180741/576px-IEEE-754-single.svg.png)
![Page 36: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/36.jpg)
36 Univ. Paderborn, FG Theoretische Elektrotechnik 36
typedef double t_ve;
0
4
15
0
4
8
15
t_ve* t_ve*
![Page 37: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/37.jpg)
37 Univ. Paderborn, FG Theoretische Elektrotechnik 37
Grobe Übersicht Kontrollflußfor (1...s) op; op;end;while( norm(r) < tolr ) for (1...s) op; Löse(s,s); op;
x = x + delta; r = rest(A,x,b); end op;end;
![Page 38: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/38.jpg)
38 Univ. Paderborn, FG Theoretische Elektrotechnik 38
Zeitverhalten• Im Bereich N < 5000 im Sekundenbereich (0s bis 2s)
(langsamer als Matlab)
• Im Bereich 5000 < N < 1500000 läuft IDR(s)_cuda, aber ohne hinreichende precision (double) momentan nicht sinnvoll meßbar.
![Page 39: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/39.jpg)
39 Univ. Paderborn, FG Theoretische Elektrotechnik 39
Herausforderung Testbarkeit
RAM
PCI-Bus
Device
Host
CPU
Device Memory
GPUCore Core
Core Core
CudaMemCopy()
![Page 40: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/40.jpg)
40 Univ. Paderborn, FG Theoretische Elektrotechnik 40
Kontrollfluss im Selbstest-Modusfor (1...s) op; op->selbsttest(); op; op->selbsttest();end;while( norm(r) < tolr ) for (1...s) op; op->selbsttest(); Löse(s,s); op; op->selbsttest(); x = x + delta; r = rest(A,x,b); end op; op->selbsttest();end;
![Page 41: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/41.jpg)
41 Univ. Paderborn, FG Theoretische Elektrotechnik 41
Struktur für die Testbarkeit
Codeteil Designpattern
IDR(s) „Template“
Operationen „Command“
![Page 42: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/42.jpg)
42 Univ. Paderborn, FG Theoretische Elektrotechnik 42
Testbarkeit im IDR(s)-Durchlauf
dotmul_Kernel
dotmul_cu
Matmul_Kernel
matmul_CPU
IDR(s)-Kontrollfluß
operation()selbsttest()
operation()selbsttest()
![Page 43: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/43.jpg)
43 Univ. Paderborn, FG Theoretische Elektrotechnik 43
idrs.h// function [x,resvec,iter]=idrs(A,b,s,tol,maxit,x0)
extern "C" void idrs(
t_SparseMatrix A_in, /* A Matrix in buyu-sparse-format */
t_ve* b_in, /* b as in A * b = x */
t_mindex s,
t_ve tol,
t_mindex maxit,
t_ve* x0_in,
t_mindex N,
t_ve* x_out,
t_ve* resvec_out,
unsigned int* piter
);
![Page 44: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/44.jpg)
44 Univ. Paderborn, FG Theoretische Elektrotechnik 44
idrs.lib
Nor
m(
) Add
() Mat
mul
()
idrs.lib
idrs.h
Matlab idrs.exeidrs_mex.cpp
![Page 45: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/45.jpg)
45 Univ. Paderborn, FG Theoretische Elektrotechnik 45
OP-Ergebnisse sind „nur“ Vektoren
S
N
A c
bN
1
S
c A b
![Page 46: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/46.jpg)
46 Univ. Paderborn, FG Theoretische Elektrotechnik 46
Spaltenweise Speicherung
1 2 310 20 30100 200 300
C_n
0 1 2 3 4 5 6 7 8
1 10 100 2 20 200 3 30 300
N
t_ve*C;
t_ve C_n=&C[n*N];
n= 1
C_n = C(:,n)
![Page 47: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/47.jpg)
47 Univ. Paderborn, FG Theoretische Elektrotechnik 47
Übersicht
Motivation und Zielsetzung
Einleitung CUDA
Sparse Matrix
IDR(s) Integration
Zusammenfassung und Ausblick
![Page 48: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/48.jpg)
48 Univ. Paderborn, FG Theoretische Elektrotechnik 48
Zusammenfassung und Ausblick
Bislang in float gemessen,
double Fehler wurde heute mittag gefunden.
Performanceverbesserungen
durch adaptive Kernelwahl möglich,
aber noch nicht eingebaut.
Problemgrößen für N < 2.000.000 handhabbar.
![Page 49: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/49.jpg)
49 Univ. Paderborn, FG Theoretische Elektrotechnik 49
Subversion-Repository
http://projektarbeitcuda.googlecode.com/svn/
Zum Nachmessen:
(Code, Bauanleitung README.txt, changelog,…)
![Page 50: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/50.jpg)
50 Univ. Paderborn, FG Theoretische Elektrotechnik 50
Vielen Dank für Ihre Aufmerksamkeit
![Page 51: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/51.jpg)
51 Univ. Paderborn, FG Theoretische Elektrotechnik 51
Matrizenmultiplikationb
a1a2a3a4a5a6a7a8
AC
BLOCKBLOCK 1
a1 b
c1BLOCK 2
a2b c2
BLOCK 3a3 b
c3
BLOCK n
an b
c4c5c6c7c8
![Page 52: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/52.jpg)
52 Univ. Paderborn, FG Theoretische Elektrotechnik 52
Dreieckförmige Summation
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
Itera
tions
schr
itte
![Page 53: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/53.jpg)
53 Univ. Paderborn, FG Theoretische Elektrotechnik 53
Dreiecksummation#define BLOCK_EXP 9#define DEF_BLOCKSIZE 1 << BLOCK_EXP
short offset = 1;for ( short i = 1; i < BLOCK_EXP ; i++ ) { short old = offset; offset <<= 1; if ( threadIdx.x % offset == 0 ) { Vs[threadIdx.x] += Vs[ threadIdx.x + old ]; } __syncthreads();}if ( threadIdx.x == 0 ) { out[0] = Vs[0] + Vs[offset];}
![Page 54: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/54.jpg)
54 Univ. Paderborn, FG Theoretische Elektrotechnik 54
Dreiecksummation
• Erwartetes Ergebnis,bei einer Reduktion von 512 Iterationen auf 8 Iterationen Erwartung: Beschleunigung um ca. Faktor 50 ...
• Gemessenes Ergebnis: Beschleunigung „ nur“ um Faktor 5 (in Bezug auf rein iterative Summierung auf der GPU)
![Page 55: Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow](https://reader036.vdocuments.pub/reader036/viewer/2022062502/570491c91a28ab14218dcf7b/html5/thumbnails/55.jpg)
55 Univ. Paderborn, FG Theoretische Elektrotechnik 55
Literatur1. NVIDIA CUDA BestPracticesGuide 2.32. NVIDIA CUDA PrommingGuide 2.33. CudaReferenceManual.pdf4. White Paper “Accelerateing MATLAB with CUDA Using MEX Files”5. Gaußsches Eliminationsverfahren
http://de.wikipedia.org/wiki/Gau%C3%9Fsches_Eliminationsverfahren6. Peter sonneveld, Martin B. Van Gijzen, “IDR(s):A Family of simple and fast
algorithms for solving large nosysmmetric systems of linear equations”7. Robert Sedgewick,” Algorithmen in C .”, Pearson Studium , ISBN-10: 3827371821 8. Donald E. Knuth, The Art of Computer Programming 1-3, Addison-Wesley
Longman, ISBN-10: 02014854179. David A. Patterson, John L. Hennessy, Computer Organization & Design: The
Hardware/Sofware Interface; Morgan Kaufmann; ISBN-10: 155860491X10. Brian W. Kernighan, Dennis Ritchie; The C Programming Language; Prentice Hall
International; ISBN-10:0131103628