scieee Science in your language
[de] (orig)

Effiziente parallele Implementierung eines expliziten Euler-Verfahrens für Grafikprozessoren durch Diamant-Tiling

Read accessible full text

Effiziente parallele Implementierung eines expliziten Euler-Verfahrens für Grafikprozessoren durch Diamant-Tiling

Author: Kulbe, Julien
Year: 2012
Source: https://epub.uni-bayreuth.de/id/eprint/255/1/master_thesis_kulbe_2012.pdf
E izien e pa allele Implemen ie ung eines
explizi en Eule -Ve ah ens ü G a ikp ozesso en
du ch Diaman -Tiling
Julien Kulbe
Bay eu h Repo s on Pa allel and Dis ibu ed Sys ems
No. 3, Ma ch 2012
Uni e si y o Bay eu h
Depa men o Ma hema ics, Physics and Compu e Science
Applied Compu e Science 2 – Pa allel and Dis ibu ed Sys ems
95440 Bay eu h
Ge many
Phone: +49 921 55 7701
Fax: +49 921 55 7702
E-Mail: b p[email p o ec ed]y eu h.de
Ezien e pa allele Implemen ie ung
eines explizi en Eule -Ve ah ens ü
G akp ozesso en du ch
Diaman -Tiling
Mas e a bei
Uni e si ä Bay eu h
Leh s uhl ü Angwand e In o ma ik 2
Be eue : P o . D . Th. Raube ,
D . M. Ko ch und D . C. Schol es
Julien Kulbe
20. Mä z 2012
Ich e klä e hie mi ,
•
dass ich die o liegende A bei ohne emde Hil e und ohne Ve wendung
ande e als de angegebenen Hil smi el e ass habe,
•
dass ich säm liche e wende en Quellen e wähn und gemäÿ gängigen wis-
senscha lichen Zi ie egeln ko ek zi ie habe.

Inhal s e zeichnis
1 Ein üh ung 1
1.1 Mo i a ion................................ 1
1.2 Ziele................................... 1
1.3 Au baude A bei ........................... 2
2 OpenCL 3
2.1 Au bau eines OpenCL P og amms . . . . . . . . . . . . . . . . . . 4
2.2 Op imie ung eines OpenCL P og amms . . . . . . . . . . . . . . . 6
2.2.1 LoopUn olling......................... 6
2.2.2 Vek o isie ung ......................... 7
2.2.3 Anzahl de Wo ki ems und Wo kg oups . . . . . . . . . . . 7
2.2.4 Lese- und Sch eibzug ie au den globalen Speiche . . . . . 8
2.2.5 Lokale Speiche . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.6 Ba ie s............................. 9
3 ODE-Sys eme und Lösungs e ah en 11
3.1 Deni ion on ODE-Sys emen . . . . . . . . . . . . . . . . . . . . . 11
3.2 Explizi es Eule -Ve ah en . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Ausgewähl e P oblems ellungen . . . . . . . . . . . . . . . . . . . . 14
4 CPU Implemen ie ung des explizi en Eule -Ve ah ens 17
4.1 Sequen ielle Ve sion . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 P h eads pa allelisie e Ve sion . . . . . . . . . . . . . . . . . . . . 17
5 Linea e OpenCL Ve sionen 21
5.1 Unop imie e linea e OpenCL-Ve sion . . . . . . . . . . . . . . . . 21
5.2 Ve besse ung des Speiche zug ismus e s . . . . . . . . . . . . . . . 25
5.3 Vek o isie ung de P oblem unk ion . . . . . . . . . . . . . . . . . . 29
5.4 P obleme und E kenn nisse bezüglich des linea en OpenCL-Ve ah ens 30
6 Diaman -Tiling 31
6.1 Mo i a ion................................ 31
6.2 Synch onisa ion............................. 31
6.3 Speiche e ah en............................ 32
6.4 Bes immung de Diaman g öÿe . . . . . . . . . . . . . . . . . . . . 33
i
Inhal s e zeichnis
7 Zeilenweises Diaman -Tiling 35
7.1 Implemen ie ung des Hos codes . . . . . . . . . . . . . . . . . . . . 36
7.1.1 Ve g öÿe ung de Anzahl de Diaman en . . . . . . . . . . . 37
7.2 Implemen ie ung des Ke nels . . . . . . . . . . . . . . . . . . . . . 42
7.3 Lau zei und Speedup des zeilenweisen Diaman -Tilings . . . . . . 45
7.4 P obleme und E kenn nisse des Diaman -Tilings . . . . . . . . . . 51
8 Spal enweises Diaman -Tiling 53
8.1 Implemen ie ung des Hos codes . . . . . . . . . . . . . . . . . . . . 53
8.2 Implemen ie ung des Ke nels . . . . . . . . . . . . . . . . . . . . . 54
8.3 Lau zei des spal enweisen Diaman -Tilings . . . . . . . . . . . . . 58
8.4 P obleme und E kenn nisse des spal enbasie en Diaman -Tilings . 58
9 Waben-Tiling 61
9.1 Mo i a ion................................ 61
9.2 Au baude Waben........................... 61
9.3 E mi eln de op imalen Wabeng öÿe . . . . . . . . . . . . . . . . . 63
9.4 Lau zei und Speedup des Waben-Tilings . . . . . . . . . . . . . . . 66
9.5 P obleme und E kenn nisse des Waben-Tilings . . . . . . . . . . . 66
10 E aluie ung 69
10.1 E aluie ung zum Einsa z on G akp ozesso en . . . . . . . . . . . 69
10.2 E aluie ung zum Op imie en on Algo i hmen un e G akp ozes-
so en................................... 70
11 Zusammen assung 73
ii
1 Ein üh ung
1.1 Mo i a ion
Viele na u wissenscha liche P oblems ellungen lassen sich au ma hema ische Be-
sch eibungen du ch Die en ialgleichungssys eme zu ück üh en. Das Lösen diese
Au gaben is eine de Schwe punk e de nume ischen Ma hema ik. Da diese Sys-
eme seh g oÿ sein können und das Lösen seh lange Zei in Ansp uch nimm ,
is das Pa allelisie en und Op imie en on Algo i hmen zum Lösen on Die en-
ialgleichungssys emen ein in e essan es Thema. Die heu igen G akp ozesso en
bie en du ch eine Vielzahl an Mul ip ozesso en einen wesen lich höhe en G ad
an Pa alleli ä als CPUs. Aus diesem G und s ell ge ade das Pa allelisie en au
mode nen G akka ena chi ek u en eine He aus o de ung da . G akp ozesso en
bie en un e schiedliche G anula i ä ss u en zum Pa allelisie en. Sie bes ehen meis
aus meh e en Mul ip ozesso en und diese wiede um aus meh e en Ke nen. Jede
G anula i ä ss u e besi z dabei Eigenscha en und Besonde hei en, die beach e
und analysie we den müssen, um ih Po en ial olls ändig auszuschöp en.
1.2 Ziele
Das Ziel de A bei is es, einen ezien en Algo i hmus zum Lösen on Die-
en ialgleichungen ü G akka en zu en wickeln. Dazu wi d das Eule -Ve ah en
e wende , da es on de S uk u seh ein ach is und iele Möglichkei en zum
Op imie en bie e . Abe auch ande e Ve ah en lassen sich ü die GPU po ie en.
Dabei muss imme abgewäg we den, welche Op imie ungen ü das Ve ah en an-
gewende we den können.
Zue s soll eine Implemen ie ung en wickel we den, die sich am Algo i hmus
des Eule -Ve ah ens ü CPU o ien ie . Da sich in diese Ve sion de Algo i hmus
am bes ehenden Code o ien ie , we den hie nu einige wich ige Op imie ungen
ü G akp ozesso en angewende . Au wendige Op imie ungen, wie zum Beispiel
un e schiedliche Speiche hie a chien we den in diese Ve sion nich be ach e , da
da ü g oÿe Ände ungen am bes ehenden Code no wendig sind. Diese e s e Ve sion,
linea e OpenCL-Ve sion
genann , dien als G undlage ü alle wei e en Ve sionen.
Das Ziel diese Implemen ie ung is es, zu zeigen, dass bes ehende CPU Code mi
wenigen Ände ungen ezien au G akka en po ie we den kann. Dabei wi d
die Lau zei de GPU-Ve sion au e schiedenen Ha dwa e A chi ek u en e mi el
und mi de Lau zei de bes ehenden CPU-Ve sion e glichen.
Das nächs e Ziel is es, einen Algo i hmus zu en wickeln, de möglichs iele Ei-
1
KAPITEL 2. OPENCL
sein, wie die Anzahl de Recheneinhei en. Is die Anzahl de Wo kg oups jedoch
g öÿe als die de Recheneinhei en, muss au eine gleichmäÿige Ve eilung de A -
bei au die un e schiedlichen Recheneinhei en geach e we den. Es soll e also die
Anzahl de Recheneinhei en de G akka e abge ag we den, um dann die Anzahl
de Wo kg oups au die Anzahl de Recheneinhei en zu se zen, beziehungsweise au
ein ganzzahliges Viel aches da on, sowei dies möglich is .
Die Anzahl de Wo ki ems eine Wo kg oup soll e mindes ens so g oÿ sein, wie
on eine Recheneinhei pa allel bea bei en we den kann. Au AMD GPUs wi d
diese G öÿe als
wa e on
und bei NVIDIA als
wa psize
bezeichne . Au heu igen
G akka en be äg sie 32 ode 64 Wo ki ems. Jede Recheneinhei besi z eine
beg enz e Anzahl an Regis e n, die au die einzelnen Wo ki ems e eil wi d. Je
g öÿe die Anzahl de Regis e p o Wo ki em is , des o ge inge is die maximal
mögliche Anzahl an Wo ki ems p o Wo kg oup. Die maximale Anzahl de Wo i-
ems p o Wo kg oup kann du ch clGe Ke nelWo kG oupIn o abge ag we den.
2.2.4 Lese- und Sch eibzug ie au den globalen Speiche
Zum Aus ausch on Da en zwischen Hos und De ice kann de Hos au den glo-
balen Speiche des De ices zug ei en. De globale Speiche is alle dings de lang-
sams e Speiche des De ices und aus diesem G und soll e e such we den die Lese-
und Sch eibzug ie au den globalen Speiche zu minimie en.
Beim Zug i au den globalen Speiche soll e da au geach e we den, welches
Zug ismus e am bes en om De ice un e s ü z wi d. Die G akka e is op i-
mie ü 128-Bi We e (= ie oa -We e). Es is also a sam, jeweils 128 Bi am
S ück zu lesen ode zu sch eiben. Des Wei e en soll e anges eb we den, dass alle
Wo ki ems gleichzei ig benachba e Blöcke de G öÿe 128-Bi laden. Das ideale
Zug ismus e (nach [8, S. 583]) lieg o , wenn jedes Wo ki em bei seinem Wo -
ki emindex beginn oa 4 (ode in 4) We e zu lesen. Diese An angswe wi d in
den olgenden I e a ionen um die Gesam zahl de Wo ki ems e höh bis alle Da en
aus dem Globalen Speiche gelesen wu den. Dies üh dazu, dass alle Wo ki ems
gleichzei ig einen g oÿen Block on jeweils 128-bi We en lesen (siehe Abbildung
2.2).
uin
id = globale Wo ki em Id
uin
ids = Anzahl globale Wo ki ems
o
( idx = id ; idx < il e Wid h ; idx += ids ) {
4
. . .
}
2.2.5 Lokale Speiche
Um die Anzahl de Lese- und Sch eibzug ie des globalen Speiche s zu op imie-
en, is es sinn oll, häug benu z e Da en zue s in den lokalen Speiche zu laden
und e s am Ende de Be echnung wiede in den globalen Speiche zu speiche n.
Jede Recheneinhei e üg übe einen lokalen Speiche . Diese is ypische weise
8

2.2. OPTIMIERUNG EINES OPENCL PROGRAMMS
id=0 id=1 id=2 id=3
1. I e a ion 2. I e a ion
id=0 id=1 id=2 id=3
ids
3. I e a ion
id=0 id=1 id=2 id=3
Abbildung 2.2: Zug ismus e des globalen Speiche s
wesen lich schnelle als de globale Speiche . Es können jedoch nu die Wo ki ems
eine Wo kg oup au den lokalen Speiche de Recheneinhei zug ei en, au de sie
abgea bei e we den. Das s ell ü Da en, die on meh e en Wo kg oups geb auch
we den, ein P oblem da . Um Da en zwischen e schiedenen lokalen Speiche n aus-
zu auschen, müssen sie übe den globalen Speiche ausge ausch we den. Dazu is
abe eine Synch onisie ung de Wo ki ems no wendig.
2.2.6 Ba ie s
Ba ie s dienen zu Synch onisie ung on Wo ki ems. OpenCL bie e Ba ie s abe
nu p o Wo kg oup an. Eine globale Ba ie ü alle Wo ki ems is du ch die Ve -
eilung de Wo kg oups au e schiedene Recheneinhei en nich p ak ikabel. Eine
globale Ba ie läss sich ealisie en, indem ein Ke nel beende wi d und sich so-
mi auch alle Wo ki ems beenden. De Hos kann nun einen neuen Ke nel s a en
und synch onisie somi alle Wo ki ems. Da dies ela i lange daue , soll e e -
such we den, die Anzahl de globalen Ba ie s zu minimie en und Sie du ch lokale
Ba ie s zu e se zen.
9
3 ODE-Sys eme und
Lösungs e ah en
3.1 Deni ion on ODE-Sys emen
Viele na u wissenscha liche P obleme lassen sich au gewöhnliche Die en ialglei-
chungen (
ODE
, o dina y die en ial equa ion) mi gegebenem An angswe (IV,
ini ial alue) zu ück üh en. Solche P obleme we den als IVPs (ini ial alue p o-
blems) bezeichne . Ein IVP bes eh zum einen aus Gleichungen, die das zei liche
Ve hal en des Sys ems besch eiben (Gleichung 3.1) und zum ande en aus dem
An angswe , de das Sys em zum Zei punk
0
besch eib (Gleichung 3.2). Die
Lösung des P oblems bes eh in de Bes immung des Zus ands des Sys ems zu
einem bes imm en Zei punk
e> 0
(aus üh liche e In o ma ionen nden sich in
[3] und [13]).
Abbildung 3.1 zeig ein exempla isches ODE-P oblem. Die du chgezogene Ku -
e zeig den physikalisch exak en Ve lau , de jedoch bis au den An angswe bei
y0
unbekann is . Die ges ichel e Ku e zeig den be echne en Ve lau eines Lö-
sungs e ah ens ü das gegebene ODE-P oblem mi den be echne en Punk en
yi
zu den Zei punk en
i
.
y0( ) = ( , y( ))
(3.1)
y( 0) = y0
(3.2)
De Ausgangswe wi d als n-s ellige Vek o modellie . Aus diesem Ausgangs-
we we den i e a i mi eine gegebenen Sch i wei e
h
neue Vek o en mi We en
be echne , die den Zus and des Sys em zum Zei punk
i
ep äsen ie en. Das
expli-
zi e Eule -Ve ah en
is eine Me hode zu Lösung diese Sys eme. Dieses Ve ah en
is eine ein aches Ve ah en, um IVPs zu lösen. Es wi d da ü eine es o gegebene
Sch i wei e
h > 0
gewähl . Mi diese Sch i wei e we den dann die Zus ände des
Sys ems zu den Zei punk en
i= 0+i·h, i ∈N
(3.3)
be echne .
11
KAPITEL 3. ODE-SYSTEME UND LÖSUNGSVERFAHREN
y
0 1 2 e
Physikalisch exak e Ve lau
Nume isch be echne e Ve lau
Abbildung 3.1: Be echne es und exak es Ve hal en eines IVPs
3.2 Explizi es Eule -Ve ah en
Lis ing 3.2 zeig den Pseudocode des explizi en Eule -Ve ah ens. H besch eib
dabei die Zei die enz zwischen
0
und
e
. In jedem Zei sch i we den aus dem
n-s elligen Vek o
y
_
cu
ü
die neuen We e
y
_
new
ü den Zei punk
+h
be-
echne . Die nächs e I e a ion e wende dann
y
_
new
als Ausgangswe e ü den
Zei sch i
+h
. In de Implemen ie ung wi d dies dadu ch gelös , dass
y
_
cu
und
y
_
new
e ausch we den. Die Funk ion ode_e al_comp besch eib das spezi-
sche P oblem, welches gelös we den soll. Sie be echne ü eine gegebene Kompo-
nen e j des Vek o s aus den ak uellen We en die S eigung de We e zum Zei punk
. Diese Ände ung, wi d mi de Sch i wei e h gewich e , au den ak uellen We
addie :
yj, +h=yj, +h·ode
_
e al
_
comp(j, , y )
(3.4)
Da aus e gib sich de neue We de Komponen e j.
Die Me hode be echne genau den Ein ag mi Index
j
de ech en Sei e des
ODE-Sys ems aus Gleichung 3.1. Diese neu be echne en We e besi zen keine ge-
gensei igen Abhängigkei en und können dahe auch pa allel zueinande be echne
we den. Die Be echnung de Lösung ü ein spezisches P oblem kann einen hohen
Beda an Rechenau wand da s ellen, da zum einen die Anzahl de Komponen en
seh g oÿ sein kann und zum ande en die Auswe ung de Me hode ode_e al_comp
seh komplex sein kann. Au g und des hohen Rechenau wands und des hohen G a-
des an Pa alleli ä bie e es sich an, ODEs au GPUs zu be echnen.
Abbildung 3.3 zeig das p inzipielle Vo gehen da ü , wie aus den
n
Ausgangs-
we en i e a i die nächs en
n
We e bis zum Endzei punk
e
be echne we den.
Die scha ie en We e s ellen dabei Ein äge des Vek o s da , welche schon be-
12
3.2. EXPLIZITES EULER-VERFAHREN
y_cu = Ausgangswe e_des_ODE_Sys ems ;
o
( i = 0; i < H / h ; i++) {
= _0 + i
∗
h;
o
( j = 0; j < n; j++) {
5
y_new[ j ] = y_cu [ j ] + h
∗
ode_e al_comp( j , , y_cu ) ;
swap(y_new, y_cu ) ;
}
}
p in y_cu
Abbildung 3.2: Pseudocode explizi es Eule e ah en
echne wu den. Die weiÿen Ein äge kennzeichnen dagegen noch nich be echne e
We e. Zu Be echnung jedes Elemen s
y
_
new[j]
, j je 1,...,n ü den Zei punk
i+1
we den bis zu
2·k+ 1
Ausgangswe e om Zei punk
i
benö ig . Im allgemeinen
Fall könn en alle We e om Zei sch i
i
geb auch we den zu Be echnung on
y
_
new[j]
. Bei ielen na u wissenscha lichen P oblemen läss sich abe ein
k
be-
s immen welches wesen lich kleine als die Sys emdimension
n
is . Die G öÿe
k
,
die das Speiche zug ismus e und die Lokali ä de Funk ion
cha ak e isie ,
is die Zug isdis anz. Die Zug isdis anz gib an, wie g oÿ de Abs and om zu
be echnenden We mi Index
j
zum Index
j+k
des benö ig en We es maximal
is .
i
i+1
e
k
n
0
1
y_cu
y_new
k
Abbildung 3.3: p inzipielles Vo gehen zu Be echnung
13

KAPITEL 3. ODE-SYSTEME UND LÖSUNGSVERFAHREN
3.3 Ausgewähl e P oblems ellungen
Als Beispiele ü simulie ende Sys eme wu den de B üssela o (B uss2d-P oblem)
und ein Modell ü das Schwingen eine Sai e (S ing-P oblem) e wende . De
B üssela o is ein Modell zu Besch eibung chemische Oszilla o en.
In Abbildung 3.4 is das B üssela o -P oblem da ges ell . Das Sys em bes eh
aus zwei e schiedenen S oen mi den Konzen a ionen A und B in einem zweidi-
mensionalen Gi e . Das zweidimensionale Gi e bes eh aus
m∗m
Gi e punk en.
De n-s ellige Vek o des esul ie enden Sys ems ep äsen ie die Konzen a ionen
de beiden S oe in den
m2
Gi e punk en. Jedes Käs chen on S o A und B s eh
dabei ü eine Konzen a ion, die in dem n-s elligen Vek o abgespeiche wi d. Um
die We e des zweidimensionalen Gi e s des B üssela o s im Speiche abzubilden,
we den die We e zeilenweise jeweils abwechselnd ü die Konzen a ion ü S o
A und B im Speiche abgeleg . Zu Be echnung de neuen Konzen a ion on S o
A mi Punk P = 22, we den die We e de Konzen a ion on A on allen an-
g enzenden Gi e punk en on P und on P selbs , sowie die Konzen a ion on
S o B im Punk P benö ig . Beim B üssela o mi einem
m∗m
Gi e dessen
We e zeilenweise abgeleg sind, en sp ich die Zug isdis anz eine olls ändigen
Zeile des Gi e s. Sie be äg 2m, da jeweils die We e on S o A und B p o Zeile
abgeleg sind. Die Zug isdis anz wächs demnach mi de Sys emg öÿe.
4,4
5,3
5,4
5,5
6,4
m
20 56
56
51
57
63
52
64
58
S o B
20 21
5,3
28
23 24
m
S o A
24 63 645,4 5,44,4 6,45251 5,3
16
5,5
2 * m 2 * m
4,2
21 2316 2858
57
59
22
Zug i sdis anz
59
22
Abbildung 3.4: Abbildung des B üssela o s im Speiche
Das S ing-P oblem ([3, S. 27]) besch eib das Sys em eine schwingenden Sai e,
die an beiden Enden es eingespann is . Die Sai e wi d du ch äquidis an e Abs än-
de in Massepunk e un e eil . De n-s ellige Vek o ep äsen ie die Auslenkun-
gen sowie die Geschwindigkei en in den e schiedenen Massepunk en. Um die neue
14
3.3. AUSGEWÄHLTE PROBLEMSTELLUNGEN
Auslenkung on Punk P zu be echnen, wi d die Geschwindigkei on P selbs , de
o he gehenden Punk P-1 und de nach olgenden Punk P+1 geb auch . Die Zu-
g isdis anz be äg dabei 3. Die Zug isdis anz is also hie unabhängig on de
G öÿe des Sys ems (siehe Abbildung 5.7).
00 1 2 3 4 5
678 9 10
5 5'4'43'3
3
Abbildung 3.5: S ing P oblem
15
4 CPU Implemen ie ung des
explizi en Eule -Ve ah ens
4.1 Sequen ielle Ve sion
Als Ausgangspunk de Op imie ung s eh eine Implemen ie ung des explizi en
Eule -Ve ah ens on D . M. Ko ch [7] zu Ve ügung. Lis ing 4.1 zeig den zen-
alen Teil de Be echnung. Die Pa ame e de Funk ion sind: die S a zei zu de
die Be echnung beginnen soll (
0
), die An angswe e (
y0
) zum S a zei punk , die
Zei spanne (
H
= e− 0
) übe die be echne we den soll, ein Zeige au das Feld, in
dem de Lösungs ek o (
y
) einge agen we den soll und die Sch i wei e (
h
). Die
Sys emg öÿe n wi d du ch das zu lösende ODE-P oblem o gegeben (
ode_size
).
Die Felde y0 und y besi zen jeweils
n
Ein äge ü die
n
An angswe e beziehungs-
weise Endwe e des Sys ems. Im Algo i hmus wi d zue s ein Feld
Y
allokie , in
dem die Zwischenwe e de Be echnung gespeiche we den. Dieses Feld is
2∗n
g oÿ, da es genügend Speiche pla z ü die ak uellen We e, sowie ü die neu be-
echne en We e des Sys ems bie en muss. Die Anzahl de Be echnungssch i e
(
s eps
) wi d du ch
s eps
=
Zei spanne übe die be echne wi d
(H)
Sch i wei e
(h)
(4.1)
e echne . Danach we den die Ausgangswe e on y0 in das Feld Y kopie , um
die Be echnung zu ini ialisie en. In den einzelnen Be echnungssch i en wi d je-
weils das ak uelle (
Y_cu
) und das neue Feld (
Y_new
) al e nie end bes imm .
Anschlieÿend we den ü jeden einzelnen We des ODE-Sys ems die neuen We e
aus den ak uellen We en gemäÿ de Fo mel 3.4 be echne .
4.2 P h eads pa allelisie e Ve sion
Es we den in de P h eads Ve sion zwei Da ens uk u en e wende , die übe A -
gumen e e ügba sind. Einmal eine Da ens uk u die sich alle Th eads eilen und
eine ü jeden Th ead p i a . In de gemeinsamen Da ens uk u s ehen die Anzahl
de Th eads, die S a zei , die Felde mi den An angs-, End- und Zwischenwe en
und eine globale P h eads-Ba ie . Jede Th ead besi z da übe hinaus noch eine
p i a e Da ens uk u ü die Th eadnumme und den S a - bzw. Endindex de
Komponen en, die e in jedem Zei sch i be echnen soll. In de Be echnungs unk-
ion we den zue s die Da en ü die gemeinsamen und p i a en Da ens uk u en
17
KAPITEL 5. LINEARE OPENCL VERSIONEN
einen e gleichba en We zu e hal en (P h eads-Ve sion mi 4 Th eads, OpenCL-
Ve sion mi 512 lokalen Wo ki ems und 30 Wo kg oups). Au de x-Achse is die
Sys emg öÿe au ge agen und au de y-Achse die en sp echende Lau zei in Se-
kunden. Es wu den e schiedene Lau zei en gemessen. Die Gesam lau zei is die
komple e Lau zei des Lösungs e ah ens mi Be echnung und Ini ialisie ung. Die
Ke nellau zei is dagegen die Lau zei , die ü die Be echnung geb auch wu de.
Es is zu sehen, dass bei de P h eads-Ve sion die Gesam - und Ke nellau zei na-
hezu iden isch sind, da die Ini ialisie ung bei P h eads, die E s ellung de Th eads,
nich lange daue . Bei de OpenCL-Ve sion is dagegen die Ini ialisie ungszei we-
sen lich höhe . Bei OpenCL muss zue s die G akka e ge unden und ini ialisie
we den, de Ke nel muss geladen und kompilie we den und die Da en müssen zwi-
schen Hos und De ice ans e ie we den. Diese O e head zu Ini ialisie ung is
ü e schiedene Sys emg öÿen nahezu kons an und deshalb nu bei seh kleinen
Sys emen ü die Gesam lau zei signikan .
Die P h eads-Ve sion is ü kleine Sys eme schnelle als die OpenCL-Ve sion, da
die Ini ialisie ungszei bei OpenCL haup sächlich ü die Lau zei e an wo lich
is . Fü g oÿe Sys eme, bei de die Ini ialisie ungszei keinen wesen lichen Bei ag
zu Lau zei meh beis eue , is die OpenCL-Ve sion doppel so schnell wie die
P h eads-Ve sion. Es wi d deu lich, dass schon diese ein ache unop imie e Ke nel
au eine GPU zu eine Ve besse ung de Lau zei gegenübe eine CPU-Ve sion
üh .
0.01
0.1
1
10
100
10000 100000 1e+06 1e+07
Lau zei en in Sekunden
Sys emg oesse n
lin. OpenCL Gesam lau zei
lin. OpenCL Ke nelzei
P h eads Gesam lau zei
P h eads Ke nelzei
Abbildung 5.1: Lau zei de linea en OpenCL-Ve sion und de P h eads-Ve sion
24

5.2. VERBESSERUNG DES SPEICHERZUGRIFFSMUSTERS
5.2 Ve besse ung des Speiche zug ismus e s
Zu Ve besse ung des OpenCL-Ke nels wu de zue s das Zug ismus e au den
globalen Speiche e ände (siehe dazu Punk 2.2.4). Bishe wu de ü jedes Wo k-
i em beziehungsweise ü jeden Th ead ein An angs- und Endindex be echne .
Dieses Ve hal en is jedoch ü heu ige CPU-A chi ek u en op imie , die nich
einzelne We e laden, sonde n ganze Cachezeilen. Die meis en GPUs besi zen abe
keine Caches und laden ypische weise 128-bi Blöcke. In Lis ing 5.3 is de Ke -
nel mi e besse em Zug ismus e da ges ell . Jedes Wo ki em be echne dabei
imme ie oa -We e / 128-bi Blöcke. De An angsindex jedes Wo ki ems is
dabei seine globale Wo ki em Id * 4. Somi we den in de e s en I e a ion de
Schlei e die e s en
4∗Wo ki emanzahl
We e on y be echne . Fü die nächs e
I e a ion wi d de An angsindex um genau diese Anzahl on
4∗Wo ki emanzahl
wei e gezähl . Dies üh dann zu dem in Kapi el 2.2.4 besch iebenen op imalen
Speiche zug ismus e on GPUs.
In jede I e a ion we den dann ie ak uelle We e gelesen und ie neue We e
gesch ieben. Dies üh implizi zu einem Loop Un olling ( gl. Kapi el 2.2.1).
o
(
in
i = 4
∗
id ; i <= ode size
−
4; i+= 4
∗
ids ) {
2
y_new[ i ] = y_cu [ i ] + h
∗
ode_e al_comp( i , , y_cu )
y_new[ i +1] = y_cu [ i +1] + h
∗
ode_e al_comp( i +1, ,
y_cu )
y_new[ i +2] = y_cu [ i +2] + h
∗
ode_e al_comp( i +2, ,
y_cu )
y_new[ i +3] = y_cu [ i +3] + h
∗
ode_e al_comp( i +3, ,
y_cu )
}
Lis ing 5.3: op imie es Speiche zug ismus e des linea en OpenCL-Ve ah ens
In G ak 5.2 is die Ke nellau zei de unop imie en und de op imie en linea-
en OpenCL-Ve sion da ges ell . Es wi d deu lich, dass bei kleinen Sys emg öÿen
du ch die Op imie ung keine Ve besse ung de Lau zei en zu messen is . Alle dings
üh das Speiche zug ismus e schon bei mi le en Sys emg öÿen zu eine e heb-
lichen Ve besse ung de Lau zei . Bei de g öÿ en gemessenen Sys emg öÿe üh
die Op imie ung zu einem Speedup on 3,6 im Ve gleich zu nich op imie en
Ve sion.
In G ak 5.3 sind ü das S ing-P oblem die Gesam lau zei en de beiden li-
nea en OpenCL-Ve sionen de P h eads-Ve sion gegenübe ges ell . Es is wiede
zu sehen, dass die OpenCL-Ve sionen bei kleinen Sys emg öÿen du ch die Ini iali-
sie ung schlech e e Lau zei en haben als die CPU-Ve sion. Bei g öÿe en Sys emen
sind jedoch die GPU-Ve sionen wesen lich schnelle , die op imie e Ve sion e eich
dabei eine Beschleunigung bis zum 7,4- achen de CPU-Ve sion.
Um die Lau zei en mi einande e gleichen zu können, is es no wendig, die
op imale Anzahl an lokalen und globalen Wo ki ems ü jeden Ke nel zu bes im-
25
KAPITEL 5. LINEARE OPENCL VERSIONEN
men. Die lokalen Wo ki ems, also die Wo ki ems p o Wo kg oup, we den du ch
die NVIDIA GTX 280 au maximal 512 beg enz . In G ak 5.4 is de Speedup
de Ke nellau zei en gegenübe den lokalen Wo ki ems au ge agen. Es wu de da-
bei bei jede Ku e eine es e Anzahl an Wo kg oups einges ell und die lokalen
Wo ki ems on eins bis 512 a iie . Fes e Anzahl p o Wo kg oup bedeu e , dass
die Anzahl de globalen Wo ki ems sich aus:
globale
_
Wo ki ems =lokale
_
Wo ki ems ∗Wo kg oups
(5.1)
be echne .
De Speedup jede Ku e wu de dabei jeweils au die Lau zei mi einem glo-
balen Wo ki em bezogen. Bei eine Wo kg oup is zu Beginn ein linea e Ans ieg
des Speedups zu beobach en, de spä e dann imme wei e abach . Das Maxi-
mum on 250 wi d bei 512 Wo ki ems, also de maximalen Anzahl, e eich . Die
op imale Anzahl an Wo ki ems p o Wo kg oup is hie die maximale Anzahl an
Wo ki ems p o Wo kg oup ü die en sp echende GPU. Es s ell sich also die F age
wa um dies so is , wenn nu 8 Ke ne p o Recheneinhei exis ie en. Eine Besonde -
hei dieses Ke nels sind die ielen Speiche zug ie au den globalen Speiche . Je
meh Wo ki ems zu Ve ügung s ehen, des o besse kann die GPU die La enzen
de Speiche zug ie e s ecken. Ande s sieh es bei 30 Wo kg oups aus, also eine
ollen Auslas ung de GPU. Hie gib es nu bis ca. 64 Wo ki ems p o Wo kg oup
einen s a ken Ans ieg des Speedups bis au das 1100- ache (en sp ich e wa einem
Speedup om 35- achen p o Wo kg oup). Danach bleib de Speedup kons an .
Dies lieg da an, dass bei 30 Wo kg oups iel meh globale Wo ki ems ak i sind
und au den Speiche zug ei en. Bei e wa 30 Wo kg oups mi jeweils 64 Wo ki ems,
also 1920 globalen Wo ki ems, is die Bandb ei e des globalen Speiche s ausgelas e
und es komm zu keinem wei e en Speedup meh .
In G ak 5.5 wu den die Wo ki ems p o Wo kg oup kons an gehal en und die
Anzahl de Wo kg oups a iie . Bei allen Ku en is an angs wiede ein linea e
Ans ieg des Speedups zu sehen, de dann abach und sich eine Obe g enze nähe .
Wenn die Ku e abach , is wiede die maximale Bandb ei e e eich . Je g öÿe
die Anzahl de lokalen Wo ki ems is , des o wenige Wo kg oups we den benö ig ,
um diesen maximalen Speedup zu e eichen.
Fü diesen Ke nel soll e die Anzahl an lokalen und globalen Wo ki ems möglichs
hoch gewähl we den um den maximalen Speedup zu e hal en (zum Beispiel lokale
Wo ki ems: 512, Wo kg oups: 30 au de GTX 280).
26
5.2. VERBESSERUNG DES SPEICHERZUGRIFFSMUSTERS
0.01
0.1
1
10
100
10000 100000 1e+06 1e+07
Lau zei
Sys emg oesse n
S ing - lin. OpenCL
S ing - op . Speiche zug
B uss2d - lin. OpenCL
B uss2d - op . Speiche zug i
Abbildung 5.2: Lau zei en de linea en OpenCL Implemen ie ungen
0.1
1
10
100
10000 100000 1e+06 1e+07
Lau zei
Sys emg oesse n
lin. OpenCL
lin. OpenCL (op . Speiche zug i )
P h eads
Abbildung 5.3: Lau zei en de Implemen ie ungen
27
KAPITEL 5. LINEARE OPENCL VERSIONEN
0
200
400
600
800
1000
1200
0 100 200 300 400 500 600
Speedup
lokale Wo ki ems
Wo kg oup=1
Wo kg oup=30
Abbildung 5.4: Speedup de Wo kg oups
100
200
300
400
500
600
700
800
900
1000
1100
0 10 20 30 40 50 60
Speedup
Wo kg oup
128 lokale Wo ki ems
256 lokale Wo ki ems
512 lokale Wo ki ems
Abbildung 5.5: Speedup de lokalen Wo ki ems
28
5.3. VEKTORISIERUNG DER PROBLEMFUNKTION
5.3 Vek o isie ung de P oblem unk ion
Da sich die ie Be echnungszeilen in Ke nel 5.3 seh ähnlich sehen, lieg es nahe,
diese zu ek o isie en ( gl. Kapi el 2.2.2). Die Schlei e sieh dann so aus:
o
(
in
i = id ; i < ODE_SIZE / 4; i += ids ) {
y_new[ i ] = y_cu [ i ] + h
∗
ode_e al_comp4( i , , y_cu ) ;
}
Die no male P oblem unk ion be echne ü einen gegebenen Index genau einen
Rückgabewe . Wi d die Schlei e ek o isie , muss auch die P oblem unk ion an-
gepass we den, sodass ü einen gegebenen Index ie Rückgabewe e be echne
we den. In Lis ing 5.6 und 5.7 sind die o iginale und die ek o ise e P oblem unk-
ion ü das S ing-P oblem abgebilde . Da an is e sich lich, dass das Umsch eiben
nich i ial is , da alle Feldzug ie au die ek o isie en We e angepass we den
müssen. Bei komplexe en Funk ionen soll e dahe abgewäg we den, ob sich de
Au wand ü das Umsch eiben de Funk ion im Ve gleich zum Geschwindigkei s-
gewinn lohn .
loa
ode_e al_comp (..)
2
{
i
( i % 2 == 0)
e u n
y [ i +1];
e u n
STRING_mod_K
∗
STRING_mod_K
∗
7
(y [ i
−
3]
−
2
∗
y [ i
−
1] + y [ i +1]) ;
}
Abbildung 5.6: o iginal S ing-P oblem
loa 4
ode_e al_comp4 ( . . )
2
{
loa 4
es ;
es . x = y [ i ] . y ;
es . z = y [ i ] .w;
7
es . y = STRING_mod_K
∗
STRING_mod_K
∗
(y [ i
−
1].z
−
2
∗
y [ i ] . x + y [ i ] . z) ;
es .w = STRING_mod_K
∗
STRING_mod_K
∗
(y [ i ] . x
−
2
∗
y [ i ] . z + y [ i +1].x) ;
12
e u n
es ;
}
Abbildung 5.7: ek o isie es S ing-P oblem
In G ak 5.8 wi d die Ke nellau zei de ek o isie en Ve sion des S ing-P o-
blems mi de bishe igen Ve sion e glichen. Es is zu sehen, dass das Vek o isie-
29

KAPITEL 5. LINEARE OPENCL VERSIONEN
en de P oblem unk ion einen Speedup um das 2,5- ache zu nich ek o isie en
Funk ion geb ach ha . Bei de Be echnung g öÿe e Sys eme is es sinn oll, die
P oblem unk ion umzusch eiben.
0.01
0.1
1
10
100
10000 100000 1e+06 1e+07
Ke nellau zei
Sys emg oesse n
lin. OpenCL
lin. OpenCL (op . Speiche zug i )
lin. OpenCL ( ek. P oblem .)
P h eads
Abbildung 5.8: Lau zei de ek o isie en P oblem unk ion
5.4 P obleme und E kenn nisse bezüglich des linea en
OpenCL-Ve ah ens
Du ch das Loop-Un olling, das Ve ände n de Zug iss uk u au den globalen
Speiche und das Anpassen de P oblem unk ion konn en Lau zei e besse ungen
e ziel we den. Um abe wei e e Op imie ungssch i e anzugehen, beda es eine
genaue en Analyse des Algo i hmus, ü wei e e Lau zei e besse ungen. Ein P o-
blem is , dass in jedem Ke nelau u nu ein Zei sch i be echne wi d. Dies üh
dazu, dass das Synch onisie en des Hos s iel Zei benö ig . Wie in Kapi el 2.2.6
besch ieben, soll e e such we den ein G oÿ eil diese globalen Ba ie s du ch lo-
kale zu e se zen.
Wei e hin lau en bishe alle Speiche ope a ionen übe den globalen Speiche ,
welche de langsams e Speiche is . Es soll e also e such we den, einen G oÿ eil
de Be echnungsda en om globalen Speiche in den lokalen Speiche zu e legen,
um eu e I/O-Speiche zug ie zu spa en.
30
6 Diaman -Tiling
6.1 Mo i a ion
Viele An angswe p obleme de ODE-Sys eme besi zen eine besch änk e Zug is-
dis anz. Das heiÿ , die Zug isdis anz is wesen lich kleine als die P oblemg öÿe
n
. Fü die olgenden Algo i hmen wi d da on ausgegangen, dass das P oblem ei-
ne besch änk e Zug isdis anz au weis , ande en alls muss eine de o he igen
Algo i hmen benu z we den.
Das P inzip des Diaman -Tilings wu de in [12] benu z , um Fini e-Die enzen-
Me hoden (FDTD, ni e-die ence ime-domain) au Meh ke np ozesso en zu be-
echnen. Du ch den Einsa z on Diaman -Tiling wu de die Speiche wiede e wen-
dung e öh und es konn en dadu ch Lau zei e besse ungen e ziel we den. Es wu -
den dabei auch un e schiedliche Tile o men un e such . Dabei s ell e sich he aus,
dass die Diaman -Tiles die bes e Pe o mance ü Da anabhängigkei en bei FDTD
bie en.
In de o liegenden A bei wi d da au au gebau und das Diaman -Tiling in e -
schiedenen Implemen ie ungen e glichen. In Kapi el 9 wi d auch eine al e na i e
Tile o m un e such .
6.2 Synch onisa ion
Basie end au de Zug isdis anz
acc
_
dis
kann de n-s ellige Vek o in
Blöcke
gleiche G öÿe mi jeweils
block
_
size
(
≥
Zug isdis anz
acc
_
dis
) We en un e -
eil we den. Dies ha den Vo eil, dass die We e in Block
j
zum Zei sch i
i
nu ih en eigenen Block
j
, den o he gehenden Block
j−1
und den nach olgenden
Block
j+ 1
benö igen (siehe Abbildung 6.1). Dami kann das P oblem behoben
we den, dass p o Ke nelau u nu ein Zei sch i be echne wi d. Die Idee is , jede
Recheneinhei eine bes imm e Anzahl (=
dia_blocks
) an Blöcken zuzu eilen. Aus
diesen
dia
_
blocks
Blöcken zum Zei punk
i
können
dia
_
blocks −2
neue Blöcke
ü den Zei sch i
i+1
be echne we den. Es we den p o be echne em Zei sch i
zwei Blöcke wenige , da die äuÿe s en Blöcke nich mi be echne we den können,
weil sie Abhängigkei en zu Blöcken ande e Wo kg oups haben. De Vo eil dabei
is , dass nach einem Zei sch i die Wo ki ems de Wo kg oup übe eine lokale
Ba ie synch onisie we den können. E s wenn die Anzahl de Blöcke nu noch
2
be äg und keine wei e en Blöcke meh be echne we den können, muss de Ke -
nel beende we den und es wi d global synch onisie . Aus diesem Mus e e gib
sich die un e e Häl e eines
Diaman en
( gl. Abbildung 6.1).
31
KAPITEL 6. DIAMANT-TILING
Die Diaman en we den au die Wo kg oups / Recheneinhei en e eil . Dabei
wi d ein ähnliches Mus e benu z wie in Kapi el 2.2.4. Jede Wo kg oup beginn
mi dem Diaman en ih e Wo kg oup Id (Anm: eindeu ige Index jede Wo k-
g oup), ü jeden wei e en Diaman en wi d de I e a ionszähle um die Anzahl
de Wo kg oups wei e gezähl , bis alle Diaman en de I e a ion be echne wu -
den (in Abbildung 6.2 wu den die Diaman en au zwei Wo kg oups e eil ). Die
Be echnungen eine Wo kg oup sind unabhängig on denen ande e Wo kg oups
und we den pa allel zu diesen ausge üh . Das Be echnen on meh e en Diaman en
eine Wo kg oup e olg sequen iell. E s wenn alle Wo kg oups ih e Diaman en
be echne haben, kann die nächs e I e a ion ges a e we den. Nachdem alle un e-
en Häl en be echne wu den, wi d deshalb eine globale Ba ie benö ig , um die
Konsis enz de be echne en Da en siche zus ellen.
dia_blocks
block_size
Abbildung 6.1: Au bau eines Diaman en
6.3 Speiche e ah en
Da die Be echnung jedes Diaman en nu au eine Recheneinhei e olg , können
die Da en ü den Diaman im lokalen Speiche de en sp echenden Wo kg oup
abgeleg we den. Aus den Abbildungen 6.1 und 6.2 is e sich lich, dass die nächs en
Diaman en die zwei äuÿe s en Blöcke (sch ae e Blöcke) jedes Zei sch i es de
un e en Häl e ü ih e Be echnung de obe en Häl e des Diaman en benö igen. In
jedem Zei sch i de un e en Häl e müssen also die zwei äuÿe s en Blöcke wiede
in den globalen Speiche gesch ieben we den.
In Abbildung 6.3 is zu sehen, dass es du ch das Ve auschen on y_new und
y_cu in jedem Zei sch i möglich is , alle Blöcke des Diaman en zu speiche n,
ohne noch benö ig e We e zu übe sch eiben. In de Abbildung we den alle ge aden
32
6.4. BESTIMMUNG DER DIAMANTGRÖßE
Zei sch i e (g ob sch ae ) in dem o de en Teil des
2n
We e g oÿen Vek o s y
gesch ieben und die unge aden Zei sch i e ( ein sch ae ) im hin e en Teil des
Vek o s.
Bei de Be echnung de obe en Häl e des Diaman en müssen die zwei äuÿe s-
en Blöcke, die on den o he gehenden Diaman en be echne wu den, geladen
we den. Die Da en we den dabei om globalen Speiche in den lokalen Speiche
kopie . Die Be echnungen de Zei sch i e inne halb des Diaman en e olg nu
noch au Da en im lokalen Speiche . Die Be echnungszei inne halb des Diaman-
en e kü z sich, da die Zug iszei en au den lokalen Speiche ge inge sind als
au den globalen Speiche und nu noch au Da en im lokalen Speiche zugeg ien
wi d. Es en s eh abe auch ein Meh au wand, da die Da en e s zwischen den
e schiedenen Speiche n kopie we den müssen.
1212
2
12
12
1 2
1 2
1 2
1 2
1 2
1
1
1 2
1 2
1 2
1 2
Abbildung 6.2: Volls ändiges Diaman -Schema, Au eilung de Diaman en au (2
Wo kg oups)
6.4 Bes immung de Diaman g öÿe
Eine ideale Au eilung wä e es, die
n
We e in so iele Diaman en wie es Rechenein-
hei en gib zu un e eilen, dami jede Wo kg oup einen Diaman be echne . Dami
e gib sich ü die Anzahl de Blöcke p o Diaman :
dia
_
blocks =n
block
_
dis ∗Recheneinhei en
(6.1)
Um Fallun e scheidungen und degene ie e Diaman en zu e hinde n, wi d die
Anzahl de
dia
_
blocks
Blöcke imme au die nächs g öÿe e ge ade Zahl e höh , da
ü die Diaman en, wie sie in Abbildung 6.1 da ges ell sind, imme eine ge ade
Anzahl an Blöcken benö ig wi d. Ein ande es wich iges En scheidungsk i e ium
ü die Blockanzahl p o Diaman is die G öÿe des lokalen Speiche s. Is diese
33
KAPITEL 7. ZEILENWEISES DIAMANT-TILING
mul dia_blocks local_size
1 690 22.144
2 340 10.944
Als Resul a e häl man olgendes:
in ge aden I e a ionen be echnen 30 Wo kg oups zwei Diaman en
mi jeweils 340 Blöcken
in unge aden I e a ionen be echnen 29 Wo kg oups zwei Diaman-
en, zwei Wo kg oups be echnen nu einen Diaman en
Lau zei en de d ei S a egien
In Abbildung 7.4 is die Ke nellau zei mi den un e schiedlichen S a egien da -
ges ell ü e schiedene Sys emg öÿen n. Bei eine Sys emg öÿe on übe 60.000
eich de o handene lokale Speiche pla z nich meh ü alle Diaman en und eini-
ge Wo kg oups müssen meh e e Diaman en be echnen. Den g öÿ en Lau zei sp ung
mach dabei die zwei e S a egie, da hie nu eine Wo kg oup zwei Diaman en be-
echnen muss und alle ande en Wo kg oups wa en müssen, bis de e s e seine
A bei beende ha . Bei de e s en und d i en S a egie müssen alle Wo kg oups
zwei Diaman en be echnen, die abe nu die halbe G öÿe haben. Bei eine wei-
e en E höhung de Sys emg öÿe bis e wa 120.000 komm es zu keine wei e en
Ve g öÿe ung de Lau zei de zwei en S a egie, da schon die e s e Wo kg oup
zwei Diaman en olle G öÿe be echne und dami die höchs e Lau zei au weis .
Bei den ande en beiden Va ian en komm es zu einem gleichmäÿigen Ans ieg de
Lau zei . Es is zu sehen, dass die Sp ünge bei de E höhung de Diaman anzahl
signikan ü die Lau zei sind. Die Ve g öÿe ung de Blockanzahl p o Diaman
äg jedoch wenige zu Lau zei bei. Meis ens wi d du ch die d i e S a egie die
minimale Lau zei ü e schiedene Sys emg öÿen e ziel .
Mi den e mi el en We en ü die cha ak e is ischen G öÿen des Ke nels kann
de Ke nel ini ialisie we den. Dem Ke nel wi d zusä zlich zu den o he igen A -
gumen e noch die Blockg öÿe
block
_
size
, die Zug isdis anz und die Anzahl de
Blöcke
dia
_
blocks
übe geben.
Danach olg die Schlei e übe die In eg a ionssch i e, die die einzelnen Ke ne-
lau u e s a e . Da jede Diaman so iele Zeilen hoch hoch wie e Blöcke b ei
is , be echne jede Diaman auch
dia
_
blocks
Zei sch i e. Die nächs e I e a ion
s a e dann genau
(dia
_
blocks/2) ∗h
spä e als de o he ige. (siehe Lis ing 7.5).
40

7.1. IMPLEMENTIERUNG DES HOSTCODES
0.04
0.05
0.06
0.07
0.08
0.09
0.1
0.11
0.12
0.13
0.14
50000 60000 70000 80000 90000 100000 110000 120000 130000
Ke nellau zei
Sys emg oesse n
1. S a egie
2. S a egie
3. S a egie
Abbildung 7.4: un e schiedliche Diaman e eilungss a egien
. . .
in
s eps = H / h;
loa
= _0 ;
in
max_i e = (2
∗
s eps ) / dia_blocks ;
5
se ze Ke nela gumen ( block_size )
se ze Ke nela gumen ( dia_blocks )
o
( i e = 0; i e <= max_i e ; ++i e ) {
10
se ze Ke nela gumen ( i e )
se ze Ke nela gumen ( )
s a e Ke nel ( global , lokal )
wa e au Beendigung des Ke nels
15
= i e
∗
dia_ iles / 2
∗
h_ ;
}
Abbildung 7.5: Ke nel s a en im Hos code
41
KAPITEL 7. ZEILENWEISES DIAMANT-TILING
7.2 Implemen ie ung des Ke nels
De Ablau des Ke nels is in Lis ing 7.6 schema isch da ges ell . De Vek o
y
en häl die Ausgangsda en, die om Hos zum De ice kopie wu den. De Vek-
o
y
_
l
is ein Speiche be eich im lokalen Speiche de Recheneinhei in dem die
Wo kg oups die Be echnungen du ch üh en. Jede Wo kg oup wi d au eine Re-
cheneinhei ausge üh und besi z deshalb einen lokalen Speiche be eich, de un-
abhängig on den ande en Wo kg oups is . Das lokale Feld jede Wo kg oup is
dabei an angs nich o ini ialisie .
de
__ke nel
sol e ( . . . ,
__global loa 4
∗
y ,
3
__local loa 4
∗
y_l)
{diaman en = Anzahl de Diaman en p o Zeile
s eps = dia_ iles / 2
−
1;
o
(g oup = 0; g oup < diaman en ; g oup+=wo kg oups) {
8
// obe e Diaman hä l e
o
( s ep = s eps ; s ep >= 0; s ep
−−
){
lade We e aus y nach y_l
be echne neue We e in y_l
}
13
// un e e Diaman hä l e
o
( s ep = 1; s ep <= s eps ; s ep++) {
be echne neue We e in y_l
speiche e We e on y_l nach y
}
18
ba ie
}
}
Abbildung 7.6: Pseudocode des zeilenweisen Diaman -Ve ah ens
Die Anzahl de p o Zei sch i zu be echnenden Diaman en wu de zu o im Hos
bes imm . Jede Wo kg oup besi z eine Schlei e übe die Anzahl de Diaman en,
die sie zu be echnen ha . Da ü einen Diaman en de gesam e lokale Speiche
benu z wi d, müssen die Diaman en au eine Recheneinehi nacheinande be-
echne we den. Die Diaman en au e schiedenen Recheneinhei en we den abe
pa allel bea bei e .
Die Va iable
s eps
gib die Höhe bzw. die Anzahl de Zei sch i e p o Diaman -
häl e an.
s ep = 0
en sp ich dem Zei sch i in de Mi e des Diaman en, bei
dem die maximale Anzahl an Blöcken zu be echnen is . Jede ande e S u e
s ep
des
Diaman en besi z
2∗(s eps −s ep)
Blöcke.
Zunächs wi d die obe e Häl e des Diaman en be echne (siehe Abbildung 7.7
on s ep 5 bis 0). In diese Phase we den in jedem Zei sch i 4 Blöcke (sch a -
e e gelbe Blöcke) om globalen Speiche in den lokalen Speiche kopie . Die
42
7.2. IMPLEMENTIERUNG DES KERNELS
Be echnung de neuen Blöcke (sch ae e blaue Blöcke ) e olg danach nu noch
im lokalen Speiche .
De lokale Speiche is wiede in zwei Teilbe eiche ü
y
_
new
und
y
_
cu
un e -
eil , die nach jedem Zei sch i e ausch we den. In Abbildung 7.7 is zu sehen,
dass in
s ep = 5
in das linke Feld (=
y
_
cu
) die We e om globalen Speiche
geladen we den und au de ech en Sei e des Feldes (
y
_
new
) we den die neu be-
echne en We e abgeleg . Im nächs en Zei sch i (
s ep = 4
) wi d dann das ech e
Feld zu
y
_
cu
und die nächs en We e om globalen Speiche we den neben die
zu o be echne en We en geladen. Die neu be echne en We e we den dann im
linken Feld abgespeiche und übe sch eiben die zu o geladenen We e, da diese
nich meh geb auch we den.
globale Speiche lokale Speiche
Diaman schema
s ep
0
1
2
3
4
5
2
1
3
dia_blocks =12
s ep = 5
s ep = 4
s ep = 3
s ep = 0
s ep = 1
s ep = 2
s ep = 5
4
5
Abbildung 7.7: Speiche e ah en des zeilenweisen Diaman -Tilings
43
KAPITEL 7. ZEILENWEISES DIAMANT-TILING
Das Laden, Speiche n und Be echnen on We en e olg wiede nach dem Sche-
ma aus Kapi el 2.2.4. Es wi d o jedem Laden, Speiche n und Be echnen de S a -
und Endindex de We e be echne und on allen Wo ki ems pa allel bea bei e .
id = lokale Wo ki em Id
n = Anzahl de lokalen Wo ki ems
o se = S a ad esse des Diaman en im globalen Speiche
block_end = Endad esse des Diaman en im globalen Speiche
5
local_o se = O se des Diaman en im lokalen Speiche
. . .
in
begin = o se + s ep
∗
block_size;
in
end = block_end
−
s ep
∗
block_size;
10
o
( i = begin + id ; i < end ; i += n) {
local_i = i
−
o se + local_o se ;
y_new[ local_i ] . x = y_cu [ local_i ] . x + h
∗
ode_e al_comp
(4
∗
i , , &y_cu [ local_o se
−
o se ]) ;
. . .
15
}
Abbildung 7.8: Be echnungen beim Diaman -Ve ah en im lokalen Speiche
Nachdem die obe e Häl e be echne wu de, kann die un e e Häl e be echne
we den (in Abbildung 7.7 un en on s ep 1 bis 5). In diese Phase de Be echnung
eines Diaman en sind schon alle benö ig en Da en im lokalen Speiche o handen
und es können so o die nächs en Zei sch i e be echne we den ohne Da en neu
aus dem globalen Speiche anzu o de n. Nach dem Be echnen jede Zeile müssen
die äuÿe s en ie Blöcke wiede in den globalen Speiche gesch ieben we den, da
sie zu Be echnung de nächs en Diaman en benö ig we den. Nach de Aba bei-
ung des Diaman en bes eh de komple e globale Vek o aus neu be echne en
We en und diese können ü den nächs en Diaman en wiede als Ausgangswe e
benu z we den.
(Anm: In Abbildung 7.7 bes eh de globale Be eich nich nu aus neu be echne-
en We en nach
s ep = 5
. Dies lieg da an, dass es nu ein Ausschni des globalen
Speiche s is und die noch gelben Blöcke on ande en Diaman en be echne we -
den.)
44
7.3. LAUFZEIT UND SPEEDUP DES ZEILENWEISEN DIAMANT-TILINGS
7.3 Lau zei und Speedup des zeilenweisen
Diaman -Tilings
Tes sys em P h eads/GTX280 GTX580
CPU:
P ozesso 2x AMD Op e on 270 In el E5530
Anzahl Ke ne 2 4
Tak ung 2.0 GHz 2.4 GHz
GPU:
G akka e NVIDIA GTX 280 NVIDIA GTX 580
Recheneinhei en 30 16
Anzahl Ke ne 240 512
Ke ne p o Recheneinhei 8 32
globale Speiche 1023 MB 1536 MB
lokale Speiche 16 kB 48 kB
L2 Cache / 768 kB
Be iebssys em Linux Ke nel 2.6.37
Compile gcc 4.6.2
Im Folgenden we den die gemessenen Speedups de OpenCL-Ve sion mi Dia-
man -Tiling be ach e . Es wu de ü alle Messungen das S ing-P oblem mi eine
Sys emg öÿe on 80.000 e wende . In Abbildung 7.9 wi d de Speedup in Abhän-
gigkei on de Anzahl de Wo kg oups mi 128 und 256 lokalen Wo ki ems p o
Wo kg oup da ges ell . Hie bei soll e beach e we den, dass wegen dem wesen lich
komplexe en Ke nelcode nun meh Regis e als in de linea en OpenCL-Ve sion
benö ig we den. Da jede Wo kg oup nu eine bes imm e Anzahl an Regis e n ü
alle Wo ki ems besi z , is die maximale Anzahl lokale Wo ki ems nu noch 256.
Fü eine höhe e Anzahl an Wo ki ems kann ein iden isches Ve hal en beobach e
we den. Es gib einen linea en Speedup bis zu 30 Wo kg oups, da bei 30 Wo k-
g oups alle 30 Recheneinhei en komple ausgelas e sind. Bei übe 30 Wo kg oups
gib es einen s a ken Ab all des Speedups, da es je z eine ungleichmäÿige Ve ei-
lung de Diaman en/Wo kg oups au die Recheneinhei en gib . Bei 60 Wo kg oups
gib es wiede eine Las balancie ung und es e gib sich de gleiche Speedup wie
bei 30 Wo kg oups. Die Anzahl de Wo kg oups soll e in de Diaman -Ve sion also
möglichs ein Viel aches de Recheneinhei en sein.
In G ak 7.10 is de Speedup in Abhängigkei on de Anzahl lokale Wo ki ems
da ges ell . Es is wiede an angs ein linea e Ans ieg des Speedups es zus ellen,
de sich ab 125 lokalen Wo ki ems eine Kons an en nähe . De maximale Speedup
on 750 lieg bei e wa 160 lokalen Wo ki ems, es we den also wiede wesen lich
45

KAPITEL 7. ZEILENWEISES DIAMANT-TILING
meh lokale Wo ki ems als Ke ne p o Recheneinhei benö ig , um den maximalen
Speedup zu e eichen. Dies läss da au schlieÿen, dass wiede Speiche bandb ei en
den Speedup beg enzen. Die Anzahl de Wo ki ems soll e also im Ideal all au übe
100 lokale Wo ki ems gese z we den.
In Abbildung 7.11 sind die Lau zei en de Diaman -Ve sionen im Ve gleich zu
den o he igen Algo i hmen au ge agen. Es we den zusä zlich zu dem be ei s o -
ges ell en Diaman -Ve ah en noch zwei wei e e be ach e . Ein Ve ah en benu z
lediglich globalen Speiche und keinen lokalen Speiche und bei einem ande en
wu de zusä zlich die P oblem unk ion ek o isie . Ve gleichba sind dahe das
Diaman -Ve ah en mi dem linea en OpenCL-Ve ah en und die beiden Ve ah-
en mi de ek o isie en P oblem unk ion. Die Diaman -Ve sion e eich dabei
einen Speedup on 1,75- ache, de linea en OpenCL Ve sion. Das heiÿ , dass die
Ve wendung des lokalen Speiche s und de Einsa z lokale Ba ie s die Lau ei des
Ke nels as halbie . Bei den Ve sionen mi de ek o isie en P oblem unk ion is
de Speedup du ch das Diaman -Ve ah en jedoch wesen lich ge inge . Bei kleinen
Sys emg öÿen wi d noch ein Speedup on 1,5 e eich , bei g öÿe en Sys emen nu
on 1,05. Die U sache da ü is in Abbildung 7.12 zu e kennen.
In Abbildung 7.12 is die no mie e Ke nellau zei gegenübe de Sys emg öÿe
au ge agen. Die no mie e Ke nellau zei be echne sich aus:
no mie e Ke nellau zei
=
Ke nellau zei
Sys emg öÿe n (7.5)
Sie s ell die du chschni liche Be echnungszei ü ein einzelnes Elemen da . Bei
beiden Diaman -Ve sionen is zu sehen, dass mi wachsende Sys emg öÿe die no -
mie e Lau zei ge inge wi d (bis zu eine Sys emg öÿe on 60.000). Dies lieg
da an, dass bei g öÿe en Sys emen auch die einzelnen Diaman en g öÿe we den
und dami de lokale Speiche besse ausgenu z we den kann und es wenige globa-
le Ba ie s gib . Ab eine Sys emg öÿe on 60.000 müssen abe meh e e Diaman en
on eine Wo kg oup be echne we den (siehe Abbildung 7.4). Deshalb s eig die
Lau zei sp ungha wiede an. Bei 60.000, also eine ollen Ausnu zung des lokalen
Speiche s, wi d ein Minimum de no mie en Lau zei e ziel , da bei eine ollen
Ausnu zung des lokalen Speiche s de höchs e Speedup des Diaman -Ve ah ens
e eich wi d. Jede wei e e Ve g öÿe ung des Sys ems b ing keinen wei e en Spee-
dup meh ü jedes einzelne Elemen . Dieses Speedupmaximum wi d imme wiede
bei Viel achen on 60.000 e eich . De Speedup des Diaman -Ve ah ens is also
p imä abhängig on de G öÿe des lokalen Speiche s.
Die linea e OpenCL-Ve sion dagegen ha einen s e igen Speedup p o Einzelele-
men . Bei kleinen Sys emen is die no mie e Lau zei wesen lich schlech e als die
de Diaman -Ve sionen, bei g öÿe en Sys emen wi d abe annähe nd die Lau zei
de Diaman -Ve sion e eich . De Speedup de linea en OpenCL-Ve sion is s a k
abhängig on de Anzahl de globalen Ba ie s. Da bei allen Sys emg öÿen die
Anzahl de globalen Ba ie s kons an is , äll die Aus üh ungszei ü die glo-
balen Ba ie s ü kleine Sys eme wesen lich s ä ke ins Gewich als bei g öÿe en
Sys emen, bei denen die Be echnung de Elemen e signikan ü die Lau zei is .
46
7.3. LAUFZEIT UND SPEEDUP DES ZEILENWEISEN DIAMANT-TILINGS
0
100
200
300
400
500
600
700
800
0 10 20 30 40 50 60
Speedup
Wo kg oups
128 lokale Wo ki ems
256 lokale Wo ki ems
Abbildung 7.9: Speedup de lokalen Wo ki ems
1
10
100
1000
5 25 50 125 300
Speedup
lokale Wo ki ems
1 Wo kg oup
30 wo kg oups
Abbildung 7.10: Speedup de Wo kg oups
47
KAPITEL 7. ZEILENWEISES DIAMANT-TILING
0.01
0.1
1
10
100
10000 100000 1e+06 1e+07
Ke nellau zei
Sys emg oesse n
linea e OpenCL Ve sion
lin. OpenCL Ve sion ( ek. P oblem .)
Diaman Tiling ( ek. P oblem .)
Diaman Tiling (ohne lokalen Speiche )
Diaman Tiling
Abbildung 7.11: Lau zei de Ve sionen
5e-07
1e-06
1.5e-06
2e-06
2.5e-06
3e-06
3.5e-06
4e-06
4.5e-06
5e-06
5.5e-06
6e-06
10000 100000 1e+06 1e+07
no mie e Ke nellau zei
Sys emg oesse n
lin. OpenCL ( ek. P oblem .)
Diaman Tiling
Diaman Tiling ( ek. P oblem .)
Abbildung 7.12: no mie e Lau zei de Ve sionen
48
7.3. LAUFZEIT UND SPEEDUP DES ZEILENWEISEN DIAMANT-TILINGS
Wenn de Speedup de Diaman -Ve sion p imä on de G öÿe des lokalen Spei-
che s abhäng , dann müss e sich die Lau zei die enz de Diaman -Ve sion zu
linea en OpenCL-Ve sion bei GPUs mi einem g öÿe en lokalen Speiche e g ö-
ÿe n. Um dies zu un e suchen, wu den die Lau zei messungen auch au eine NVI-
DIA GTX 580 du chge üh , die 48kB lokalen Speiche besi z , im Gegensa z zu
GTX 280 mi nu 16kB. Dabei muss jedoch beach e we den, dass die GTX 580
einen L2 Cache besi z . Jede Speiche an age au den globalen Speiche läd da-
he nich nu einen 32bi We , sonde n 128By e, also eine komple e Cachezeile.
In Abbildung 7.13 is die no mie e Lau zei bei e schiedenen P oblemg öÿen zu
sehen. Die Lau zei en de Diaman -Ve sionen und de linea en Ve sionen sind na-
hezu iden isch. Dies lieg da an, dass die linea e Ve sion linea au den globalen
Speiche zug ei und dahe s a k om Cache p o ie . Die Diaman -Ve sion läd
imme nu einzelne Blöcke om globalen Speiche und kann dahe wei wenige
om Cache p o ie en als die linea e Ve sion. Da die Diaman -Ve sion ü GPUs
ohne Cache op imie wu de, wu de in Abbildung 7.14 de Cache du ch dekla ie en
de Vek o en als
ola ile
umgangen.
ola ile
bewi k , dass die GPU gezwungen
wi d, jeden We zu laden und dami nich om Cache p o ie en kann. Die Lau -
zei en de Diaman -Ve sionen bleiben dabei nahezu kons an , da sie nich om
Cache p o ie en. Die Lau zei en de linea en Ve sionen s eigen jedoch. Auÿe dem
is zu beobach en, dass die linea en Ve sionen om Vek o isie en de P oblem-
unk ion s a k p o ie en und beim Diaman -Ve ah en das Vek o isie en zu as
keinem Speedup üh . Dies läss da au schlieÿen, dass beim Diaman -Ve ah en
die Speiche bandb ei e e schöp is und, dass dahe die Vek o isie ung de P o-
blem unk ion nu noch zu eine ge ingen Beschleunigung üh .
In Abbildung 7.15 wu den die Lau zei en ü das B üssela o -P oblem au de
GTX 580 gemessen. Das B üssela o -P oblem ha eine wesen lich g öÿe e Zug is-
dis anz als das S ing-P oblem, welche auch mi de G öÿe des Sys ems wächs .
Dies ha zu Folge, dass die Blöcke de Diaman en wesen lich g öÿe sind. Fü das
Diaman -Tiling wi d eine gewisse Mindes anzahl an Blöcken o ausgese z , dami
es eek i a bei en kann. Du ch die ge inge lokale Speiche g öÿe wu de dahe au
de GTX 280 au Messungen mi dem B üssela o -P oblem e zich e . Die Abbil-
dung 7.15 zeig die no mie en Lau zei en ü e schiedene Sys emg öÿen au de
GTX 580. Ohne Cache is die Diaman -Ve sion wesen lich schnelle als die linea e
Ve sion, mi Cache is die linea e Ve sion besse als die Diaman -Ve sion, da sie
seh s a k om L2 Cache p o ie .
49
KAPITEL 8. SPALTENWEISES DIAMANT-TILING
de
__ke nel
sol e ( . . . ,
__global loa 4
∗
y ,
__local loa 4
∗
y_l)
{
5
g oups = Anzahl de Diaman en
// = mul
s eps = dia_ iles ;
o
(g oup = 0; g oup < g oups ; g oup+=wo kg oups ) {
o
( diag = 0; diag < s eps ; diag++){
o
( heigh = 0; heigh < s eps /2; heigh ++) {
10
i
( diag == 0 | | heigh == 0)
lade We e aus y in y_l
be echne We e in y_l
i
( diag >= s eps
−
2 | | heigh == s eps
−
1)
speiche e We e aus y_l in y
15
ba ie
}
}
}
}
Abbildung 8.3: Pseudocode des spal enweisen Diaman -Ve ah ens
Be ach e wi d das S ing-P oblem mi eine Zug isdis anz on 4
(Anm: Zug isdis anz on 3 wi d au das nächs g öÿe e Vel ache on 4 au ge un-
de , du ch die Vek o isie ung mi oa 4-We en)
die Be echnung wi d on jeweils 512 lokalen Wo ki ems du chge üh
da aus e gib sich eine Blockg öÿe on:
block_size = 512 Wo ki ems * 4 We e = 2048 We en
Die Anzahl de We e die beim spal enweisen Diaman -Tiling geladen/gespeiche
we den müssen p o Zeile:
unop imie : alle ie Blöcke we den olls ändig kopie
→
4 Blöcke * 2048 We e = 8192 We e
op imie : zwei olls ändige Blöcke und zwei Blöcke bis zu Zug isdis anz
→
2 Blöcke * 2048 We e + 2 Blöcke * 4 We e = 4104 We e
Im Ve gleich dazu die Anzahl de We e die beim zeilenweisen Diaman -Tiling
geladen/gespeiche we den p o Zeile:
→
4 Blöcke * 4 We e = 16 We e
→
Du ch die Op imie ung konn e de Beda an zu speiche nden We en as hal-
bie we den.
De Beda beim zeilenweisen Diaman -Tiling is jedoch insbesonde e ü kleine
Zug isdis anzen wesen lich ge inge .
56

8.2. IMPLEMENTIERUNG DES KERNELS
lokale Speiche
Diaman schema
dia_blocks =6
3
B C D
E 1 2 GF H
JI LK654
13
121110987
A
1817
161514
B CA
B C
1
B C1
E F
E F3
B C1E F3JI
B C1E F3JI7
B C1E F3JI7 D2
B C1E F3JI7 D24
B C1E F3JI7 D24I8
B K1E F3JI17 L24I18 JI15 I16 JI11 I12
diag = 0 diag = 1
diag = 5
Abbildung 8.4: Spal enweises Diaman -Tiling
57
KAPITEL 8. SPALTENWEISES DIAMANT-TILING
8.3 Lau zei des spal enweisen Diaman -Tilings
Die Lau zei messungen ü das spal enweise Ve ah en wu den alle au de GTX
580 du chge üh . Da das Ve ah en ü g oÿe Blöcke ausgeleg is , is zu e wa -
en, dass ge ade das B üssela o -P oblem on de Op imie ung p o ie . Fü das
B üssela o -P oblem können abe nu au de GTX 580 g öÿe e Messungen du ch-
ge üh we den, da bei de GTX 280 de kleine e lokale Speiche nu ü ge inge
Sys emg öÿen Messungen zuläss .
In Abbildung 8.5 is die no mie e Lau zei des S ing-P oblems ü die GTX
580 da ges ell . Es is zu sehen, dass ü kleine Sys emg öÿen keine Messungen
ü das spal enbasie e Ve ah en exis ie en, da du ch die Ve g öÿe ung de Blöcke
nich genügend Blöcke exis ie en und somi das Diaman -Ve ah en nich eek i
a bei en kann. Ab eine Sys emg öÿe on 100.000 wi d de gesam e lokale Spei-
che benu z und de maximale Speedup des Ve ah ens kann e eich we den. Die
Lau zei is jedoch g öÿe als beim zeilenweisen Ve ah en. Dies kann mi de Ve -
g öÿe ung de Blöcke beg ünde we den. Zum einen e inge dies die Zei sch i e
p o Diaman und üh dami zu meh globalen Ba ie s. Zum ande en e höhen
dies die Anzahl de We e, die zwischen den Speiche n kopie we den müssen.
In Abbildung 8.6 is die no mie e Lau zei ü das B üssela o -P oblem ü die
GTX 580 da ges ell . Du ch die g öÿe e Zug isdis anz des B üssela o -P oblems
müssen die Blöcke ab eine bes imm en P oblemg öÿe nich wei e e g öÿe we -
den (ab
n= 125.000
). Es is zu sehen, dass das spal enbasie e Ve ah en auch hie
kaum eine Lau zei e besse ung e zielen kann. Das lieg o allem da an, dass de
Speedup du ch die eek i e e Speiche ausnu zung und du ch die höhe e Anzahl
on lokalen Ba ie s kompensie wi d.
8.4 P obleme und E kenn nisse des spal enbasie en
Diaman -Tilings
Es ha sich he ausges ell , dass o z de eek i e en Speiche ausnu zung des
spal enbasie en Diaman -Tilings keine Lau zei e besse ungen zum zeilenweisen
Diaman -Tiling e ziel we den konn en. Dies lieg da an, dass zum einen die g öÿe-
en Blöcke zu meh Speiche - und Ladeope a ionen üh en und zum ande en meh
lokale Ba ie s benö ig we den und dami die Wo ki ems häuge un e b ochen
we den. Das spal enbasie e Ve ah en bie e dahe keine Lau zei e besse ungen
zum zeilenweisen Diaman -Ve ah en. Das spal enweise Ve ah en bie e abe da-
hingehend einen Vo eil, dass sich dadu ch P obleme mi g oÿen Zug isdis anzen
lösen lassen, ü die ansons en de Speiche beim zeilenweisen Ve ah en nich aus-
eichen wü de.
58
8.4. PROBLEME UND ERKENNTNISSE DES SPALTENBASIERTEN
DIAMANT-TILINGS
0
5e-07
1e-06
1.5e-06
2e-06
2.5e-06
3e-06
3.5e-06
10000 100000 1e+06 1e+07
no mie e Ke nellau zei
Sys emg oesse n
ode=STRING_MOD
lin. OpenCL
zeilenweises Diaman .
spal enweises Diaman .
Abbildung 8.5: no mie e Ke nellau zei S ing
4e-07
6e-07
8e-07
1e-06
1.2e-06
1.4e-06
1.6e-06
1.8e-06
2e-06
0 50000
100000
150000
200000
250000
300000
350000
400000
450000
500000
no mie e Ke nellau zei
Sys emg oesse n
ode=BRUSS2D-MIX
lin. OpenCL
zeilenweises Diaman .
spal enweises Diaman .
Abbildung 8.6: no mie e Ke nellau zei B uss2d
59
9 Waben-Tiling
9.1 Mo i a ion
Das Waben-Tiling is eine Va ia ion des zeilenweisen Diaman -Tilings. Du ch die
beiden bishe o ges ell en Ve sionen des Diaman -Tilings wu de deu lich, wie
wich ig es is , die Anzahl de Ba ie s zu minimie en und die A bei zwischen den
Ba ie s zu maximie en. Beim spal enweisen Ve ah en gab es iele lokale Ba ie s
und wenig A bei ü jedes Wo ki em, was sich nega i au die Lau zei ausgewi k
ha . Beim zeilenweisen Ve ah en wa die Anzahl de Ba ie s ge ing, die A bei
p o Zeile jedoch s a k un e schiedlich. An de b ei es en S elle bei
s ep = 0
(sie-
he Abbildung 7.7) is die A bei maximal, an den obe en und un e en Rände n
des Diaman en sind jedoch nu wenige Elemen e p o Zeile zu be echnen. Ge ade
bei kleinen Zug isdis anzen, bei denen die Blöcke nu aus wenigen Elemen en
bes ehen, we den an den Rände n nich alle Wo ki ems beschä ig . Das Waben-
Tiling e such genau dies zu e besse n. Beim Diaman -Tiling be echne e jede
Diaman mi
dia
_
blocks
Blöcken genau
dia
_
blocks−1
Zei sch i e. Beim Waben-
Tiling wi d eine es e Anzahl an Sch i en p o Diaman o gegeben (=
s eps
) und
dami we den die Enden jedes Diaman en abgeschni en. Das E gebnis is , dass
auch an den obe en und un e en Rände n noch genügend A bei ü alle Wo ki ems
o handen is .
Ein ande e Fak o de dazu bei äg , dass die linea e OpenCL Ve sion seh
gu e Lau zei en e ziel , is , dass de linea e Zug i au g oÿe zusammenhängende
Be eiche des globalen Speiche s, wie e in Kapi el 2.2.4 besch ieben wu de, ü die
G akka en op imal is . Dieses Speiche zug ismus e kann abe nu in de linea-
en Ve sion e eich we den. In den Diaman e sionen we den p o Zeile nu zwei
ehe kleine zusammenhängende Be eiche zwischen globalen und lokalen Speiche
übe agen. Beim Waben-Tiling kann de Speiche an den Randzeilen wiede linea
übe agen we den und das op imale Zug ismus e kann e eich we den.
9.2 Au bau de Waben
Abbildung 9.1 zeig das p inzipielle Schema beim Waben-Tiling. Das Aba bei en
und Be echnen de Diaman en du ch die Wo kg oups e olg wie bei de zeilenwei-
sen Diaman -Ve sion. Jede Wo kg oup be echne ih en Diaman en zeilenweise.
Eine Besonde hei des Waben-Tilings is , dass die Waben ineinande e sch änk
sind. Da die e schiedenen I e a ionen sich nun übe lage n, kann Fo mel 6.1 nich
meh zu Au eilung de Waben au die Wo kg oups benu z we den. Die G öÿe
61

KAPITEL 9. WABEN-TILING
Abbildung 9.1: Waben-Tiling
eines Blockes wi d wie beim zeilenweisen Diaman -Ve ah en au das nächs e Viel-
ache on ie de Zug isdis anz gese z , dami die Blöcke so klein wie möglich
we den, um unnö ige Speiche ope a ionen zu e meiden.
Die Gesam zahl alle Blöcke (
dia
_
blocks
_
sum
) be echne sich aus de P oblem-
g öÿe ge eil du ch die G öÿe eines Blockes:
dia
_
blocks
_
sum =n/block
_
size
(9.1)
2
1
0
3
3
Wabe Wabe
Zwischenwabe
0
1
2
2
s eps = 3
dia_blocks
dia_blocks -
2 * s eps dia_blocks
Abbildung 9.2: Wabe und Zwischenwaben mi s eps = 3
Beim zeilenweisen Diaman -Tiling wu den alle Blöcke au die Wo kg oups e -
eil . Beim Waben Tiling müssen die Blöcke jedoch au die Waben (gelbe Waben)
und die
Zwischenwaben
(blaue Waben) au ge eil we den. Zu Bes immung diese
Au eilung be ach e man einen Zei sch i , de
s ep = 0
eine Wabe en sp ich . In
Abbildung e comb2 en sp ich dies
s ep = 3
eine Zwischenwabe. Die Au eilung
62
9.3. ERMITTELN DER OPTIMALEN WABENGRÖßE
wi d so o genommen, dass es in solch einem Zei sch i bei
wo kg oups
Waben
imme
wo kg oups−1
Zwischenwaben gib . Die maximale Anzahl an Blöcken p o
Zei sch i de Waben wi d wiede als
dia
_
blocks
bezeichne . In einem Zei sch i ,
in dem eine Wabe bei s ep 0 die maximale Anzahl an Blöcken p o Zei sch i be-
echne , haben die en sp echenden Zwischenwaben ge ade die kleins e Anzahl an
Blöcken (siehe Abbildung e comb2). Die kleins e Anzahl de Blöcke is abhängig
on dem Zei sch i nach dem eine Wabe abgeschni en wi d. In de Abbildung
wi d jede Wabe und Zwischenwabe nach dem Zei sch i 3 (= s eps) nach oben
und un en abgeschni en. Die Anzahl de Blöcke bei de maximalen Anzahl on
Zei sch i en is
dia
_
blocks −2∗s eps
.
Die Gesam zahl alle Blöcke muss au die
wo kg oups
Waben und die
wo kg oups
−1
Zwischenwaben e eil we den:
dia
_
blocks
_
sum =
Blöcke de Waben
+
Blöcke de Zwischenwaben
dia
_
blocks
_
sum =wo kg oups ∗dia
_
blocks +
(wo kg oups −1) ∗(dia
_
blocks −2∗s eps)
Du ch Um o mung läss sich da aus die Anzahl de Blöcke p o Diaman ü eine
bes imm e Sch i wei e (
s eps
) be echnen:
dia
_
blocks
_
sum = 2 ∗wo kg oups ∗dia
_
blocks+
(wo kg oups −1) ∗(−2∗s eps)−dia
_
blocks
dia
_
blocks
_
sum + 2 ∗s eps∗(wo kg oups −1) =
(2 ∗wo kg oups −1) ∗dia
_
blocks
dia
_
blocks =dia
_
blocks
_
sum + 2 ∗s eps ∗(wo kg oups −1)
2∗wo kg oups −1
9.3 E mi eln de op imalen Wabeng öÿe
Wi d die G öÿe de Waben minimie (
s eps = 0
), so wi d ein ähnliches Ve hal en
wie beim linea en OpenCL-Ve ah en e ziel . Es wi d dabei das op imale Zug is-
mus e ü alle We e om globalen Speiche e ziel , da alle We e au einmal
geladen we den. Jedoch we den die Da en im lokalen Speiche nich wiede e wen-
de . We den die Waben e g öÿe , e häl man einen posi i en Eek , indem die
We e im lokalen Speiche nun wiede e wende we den. Alle dings gib es auch
einen nega i en Eek , da de Zug i au die globalen Da en nich meh imme
dem op imalen Mus e olg . We e am Rand müssen in jedem Sch i wiede nach-
geladen we den, was zu einem nich op imalen Zug is e hal en au den globalen
Speiche üh . Wi d die Wabeng öÿe maximie , e gib sich da aus das Ve hal en
des zeilenweisen Diaman -Tilings. Du ch Va ia ion de G öÿe s eps is es möglich
63
KAPITEL 9. WABEN-TILING
einen op imalen We zu e eichen, de ü die jeweilige Ha dwa e den Komp o-
miss zwischen eine Wiede e wendung des lokalen Speiche s und den op imie en
Speiche zug ien au den globalen Speiche nde .
Nach olgend sind die Lau zei en des S ing-P oblems mi eine Sys emg öÿe on
2.000.000 da ges ell . In Abbildung 9.3 is die Lau zei ü die GTX 280 mi ca. 500
Blöcken p o Diaman in Abhängigkei on de maximalen Sch i wei e s eps au ge-
agen. E wa ungsgemäÿ wi d bei kleinen Sch i wei en mi wachsende Sch i -
wei e die Lau zei ge inge , da eine Wiede e wendung du ch den lokalen Speiche
e ziel wi d. Ab eine Sch i wei e on ca. 50 s eig die Lau zei wiede an, da de
unop imie e Zug i au den globalen Speiche signikan wi d.
Bei de minimalen Lau zei is das Ve häl nis de Wiede e wendung des lokalen
Speiche s zum op imie en Speiche zug i au den globalen Speiche op imal. Die
Wiede e wendung wi d du ch die max. Sch i wei e cha ak e isie und die Men-
ge de Da en, die zwischen den Speiche n ans e ie we den muss, wi d du ch
die Anzahl de Blöcke cha ak e isie . Beim Minimum de Lau zei be äg das
Ve häl nis de Blöcke p o Diaman zu Sch i wei e:
∼500/40 =∼12.5
.
In G ak 9.4 is die Abhängigkei on de maximalen Sch i wei e au de GTX
580 da ges ell . Du ch ih en g öÿe en lokalen Speiche bes eh hie jede Diaman
aus ca. 1500 Blöcken. Es is zu sehen, dass das Minimum bei e wa 100 Sch i -
en e eich is . Dies is höhe als bei de GTX 280, jedoch im Ve häl nis zu
Blockg öÿe (
1500/100 =∼15
) s ell sich ein We ähnliche G öÿeno dnung ein.
Das bei manchen Sch i wei en au e ende plö zliche Ans eigen de Lau zei en is
dadu ch zu e klä en, dass du ch Va ia ion de maximalen Sch i wei e auch die
Anzahl an Blöcken und dami die Anzahl an Diaman en e ände wi d und dies
zu Lau zei sp üngen üh en kann.
Als Beispiel des be ach e man den Lau zei sp ung in Abbildung 9.4:
bei eine maximalen Sch i wei e on 100 au 120 komm es zu einem Lau zei -
sp ung:
Die GTX 580 besi z 16 Recheneinhei en
In de olgenden Tabelle sind ü die max. Sch i wei en die Anzahl de Blöcke p o
Diaman angegeben, die Gesam anzahl alle Diaman en und das Ve häl nis wenn
alle Diaman en au 16 Recheneinhei en au ge eil we den:
Sch i wei e Blöcke Diaman en #Diaman en / #16 Rechene.
100 1526 176 11
110 1528 177 11.06
120 1530 178 11.1
Du ch die Ände ung de maximalen Sch i wei e ände sich auch die Anzahl de
Blöcke p o Diaman und die Anzahl de Diaman en. Bei 100 is die Anzahl ge ade
ein Viel aches de Recheneinhei en, es we den also genau 11 Diaman en on jede
Wo kg oup be echne . Ab Sch i wei e 110 muss eine Recheneinhei 12 Diaman en
be echnen, was einen Sp ung in de Lau zei e u sach .
64
9.3. ERMITTELN DER OPTIMALEN WABENGRÖßE
1.2
1.4
1.6
1.8
2
2.2
2.4
2.6
2.8
1 10 100
no mie e Ke nellau zei
max. Sch i wei e
128 lokale Wo ki ems ( ek. P oblem unk ion)
128 lokale Wo ki ems
192 lokale Wo ki ems ( ek. P oblem unk ion)
192lokale Wo ki ems
Abbildung 9.3: Lau zei en ü e schiedene Maximalsch i wei en GTX 280
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1 10 100 1000
no mie e Ke nellau zei
max. Sch i wei e
512 lok. Wo ki. ( ek. P oblem unk ion)
512 lokale Wo ki ems
256 lok. Wo ki. ( ek. P oblem unk ion)
256 lokale Wo ki ems
Abbildung 9.4: Lau zei en ü e schiedene Maximalsch i wei en GTX 580
65

11 Zusammen assung
Das Ziel de A bei wa es, das Eule -Ve ah en au G akp ozesso en zu po -
ie en und da ü zu op imie en. Dies is zum einem mi dem linea en OpenCL-
Ve ah en und zum ande en mi den Diaman -/Waben-Tilings gelungen. Das li-
nea e OpenCL-Ve ah en is zwa ein seh ein aches Ve ah en, welches nich alle
Op imie ungen de GPU ausnu z , abe es we den gu e Lau zei en e ziel , die we-
sen lich schnelle sind als e gleichba e CPU-Ve sionen. Algo i hmen die schon ü
die CPU pa allelisie wu den, zum Beispiel mi P h eads ode OpenMP, lassen
sich leich ü die GPU po ie en. Au de GPU können dann schon einige wich ige
abe ein ache Op imie ungen zu seh gu en Lau zei en üh en, die sich nu schwe
mi de CPU e eichen lassen.
Das Diaman -/Waben- Tiling is wesen lich komplexe , üh abe auch meis
zu noch besse en E gebnissen als das linea e OpenCL-Ve ah en, da es meh Vo -
eile de G akp ozesso en ausnu zen kann. Bei seh zei in ensi en Be echnungen,
bei denen es wich ig is , die Lau zei zu minimie en, wä e es also on Vo eil den
bes ehenden Code de a anzupassen, dass möglichs alle Eigenscha en und Be-
sonde hei en de GPUs be ücksich ig we den. Dabei muss beach e we den, dass
sich einige Op imie ungen gegensä zlich e hal en können. Wie beim Waben-Tiling
gesehen, muss e ein Komp omiss zwischen einem op imalen Zug ismus e und de
Wiede e wendung des lokalen Speiche s ge unden we den.
De Einsa z on G akp ozesso en zum Lösen on Die en ialgleichungen is bei
P oblemen, die lange zum Be echnen benö igen, zu emp ehlen. Das Ini ialisie en
de GPU und das Übe se zen des Ke nels benö igen alle dings Zei , die sich übe
die Lau zei de Be echnung amo isie en muss.
OpenCL ha sich im Lau e de A bei als eine geeinge e P og ammie schni -
s elle ü G akp ozesso en he ausges ell , bei de jedoch anzume ken is , dass sie
speziell ü G akp ozesso en en wickel wu de. OpenCL-Ke nel lassen sich zwa
auch au CPUs aus üh en, jedoch sind iele Besonde hei en au P ozesso en nich
o handen und üh en do nich imme zu einem Lau zei gewinn, wie zum Bei-
spiel de Einsa z lokale Ba ie s und lokale Speiche . Op imie ungen wie zum
Beispiel das Speiche zug ismus e , e hal en sich au CPU und GPU eilweise
nach eilig, sodass spezielle Ke nel ü GPU und CPU en wickel we den müssen,
um den op imalen Speedup au allen De ices zu e hal en.
Wa um nde die GPU P og ammie ung o z eno me Geschwindigkei ss ei-
ge ungen gegenübe P ozesso en noch keine b ei e Ve wendung in komme ziellen
P og ammen? Ein G und kann da in gesehen we den, dass bishe keine s anda di-
sie e Schni s elle ü alle G akp ozesso en zu Ve ügung s and. Jede G ak-
ka enhe s elle be o zug e seine eigene API (NVIDIA CUDA, ATI S eam). Mi
73
KAPITEL 11. ZUSAMMENFASSUNG
OpenCL s eh eine geeigne e Schni s elle ü alle G akka en zu Ve ügung, die
den Einsa z on GPUs ü allgemeine Be echnungen wei e e b ei en kann.
Die jüngs e Ve gangenhei ha gezeig , dass die S eige ung de Geschwindig-
kei on P ozesso en zum G oÿ eil du ch die E höhung de Anzahl de Ke ne und
nich meh so seh du ch E höhung des P ozesso ak es e eich wi d. Deshalb
is zu e wa en, dass de Einsa z on G akka en zu Be echnung on zei in en-
si en P ozessen in Zukun zunimm . Einen wich igen Fak o we den dabei PC
Spiele da s ellen, da sie den Sys emen du ch imme neue Inno a ionen wie e bes-
se e Physik Modellie ung und KI imme meh Leis ung ab e langen. Beispiele,
bei dem de Geschwindigkei sgewinn on GPUs ü nich G ak-bezogene Au ga-
ben benu z wi d, sind Spiele wie Ba man: A kham Ci y und Ba man: A kham
Asylum ([5],[4]), die die Physik des Spiels du ch GPU-Physix ([11]) be echnen
lassen. Abe auch Au gaben des wissenscha lichen Rechnens, nu zen imme meh
G akp ozesso en zum Be echnen. Dahe beziehen schon d ei de ün schnells en
Supe compu e ([1]) einen G oÿ eil ih e Rechenkapazi ä en aus G akka en.
Soll en sich in de Indus ie einhei liche S anda ds bei de GPU-P og ammie ung
du chse zen, mi APIs, die auch übe meh e e Jah e hinweg bes ändig sind, so is
zu e wa en, dass die GPU-P og ammie ung in Zukun imme b ei e e Ve wen-
dung nde .
74
Li e a u e zeichnis
[1] TOP500 Supe compu e Si e. Websi e:
h p:
//
www
.
op500
.
o g
, besuch am
13.03.2012.
[2] Amazon. Websi e:
h p:
//
www
.
amazon
.
de
, besuch am 2.12.2011.
[3] E. Hai e , S.P. Nø se , and G. Wanne .
Sol ing o dina y die en ial equa i-
ons: Nons i p oblems
. Sp inge se ies in compu a ional ma hema ics. Sp in-
ge , 1993.
[4] PC Games Ha dwa e. Websi e:
h p:
//
www
.
pcgamesha dwa e
.
de
/
aid
,
8503
63
/
Ba man-A kham-Ci y-T aile -zeig -GPU-Physx-Upda e-Bild e gle
ich-mi -und-ohne-E ek e-in-hohe -Au loesung
/
Ac ion-Spiel
/
News
/
,
besuch am 14.12.2011.
[5] Eidos In e ac i e. Websi e: u lh p://www.ba mana khamci y.o g/, besuch
am 14.12.2011.
[6] Kh onos OpenCL Wo king G oup.
The OpenCL Specica ion, e sion 1.1
,
2011.
[7] Ma hias Ko ch.
Ezien e Implemen ie ung eingebe e e Runge-Ku a-
Ve ah en du ch Ausnu zung de Speiche zug islokali ä
. Doc o al hesis,
Uni e si y o Bay eu h, Decembe 2006.
[8] Adam Lake.
Game P og amming Gems 8
. Cou se Technology, 2010.
[9] Mic oso . Di ec Compu e. Websi e:
h p:
//
www
.
mic oso pdc
.
com
/
2009
/
P0
9-16
, besuch am 14.12.2011.
[10] NVIDIA. Cuda. Websi e:
h p:
//
www
.
n idia
.
de
/
objec
/
cuda
_home
_new
_de
.
h ml
, besuch am 14.12.2011.
[11] NVIDIA. GPU-Physix. Websi e:
h p:
//
www
.
ge o ce
.
com
/
Ha dwa e
/
Tech
nologies
/
physx
, besuch am 14.12.2011.
[12] Daniel A. O ozco and Guang R. Gao. Mapping he FDTD Applica ion o
Many-Co e Chip A chi ec u es. In
P oceedings o he 2009 In e na ional Con-
e ence on Pa allel P ocessing
, ICPP '09, pages 309316, Washing on, DC,
USA, 2009. IEEE Compu e Socie y.
[13] K. S ehmel and R. Weine .
Nume ik gewöhnliche Die en ialgleichungen
.
Teubne S udienbüche . B.G. Teubne , 1995.
75
Li e a u e zeichnis
[14] Kane S. Yee. Nume ical solu ion o ini ial bounda y alue p oblems in ol ing
maxwell's equa ions in iso opic media.
IEEE T ans. An ennas and P opaga-
ion
, pages 302307, 1966.
76
Zusammen assung
Die hie o liegende A bei beschä ig sich dami , das explizi e Eule -Ve ah en
au G akp ozesso en zu op imie en. Dabei we den die Speiche hie a chien, loka-
le Da enwiede e wendung, Ausnu zung de Speiche bandb ei e de GPU und die
Synch onisie ung zwischen Hos und De ice genaue un e such . Dabei we den zwei
Implemen ie ungen nähe be ach e , das Diaman -Tiling und das linea e Ve ah-
en, da sie sich gu eignen um die Op imie ungen genaue zu un e suchen. Es s ell
sich dabei he aus, dass Op imie ungen wie die lokale Da enwiede e wendung und
de op imale Zug i au den Speiche sich gegensä zlich e hal en. Ein Misch e -
ah en (das Waben-Tiling), dass dabei die Vo eile des linea en Ve ah ens und des
Diaman -Tilings e ein , üh dahe zu den bes en Lau zei en.
Abs ac
The aim o he hesis is o in es iga e he Eule me hod o GPUs. The goal is
o analyze he memo y hie a chies, local da a- euse, memo y bandwid h o he
GPU and he synch oniza ion o he hos and he de ice. Two implemena ions a e
conside ed close he diamond iling and he linea me hode, since hey a e well
sui ed o in es iga e u he imp o emen s. I u ns ou ha he op imiza ions as
local da a- euse and op imum access o he memo y bandwid h beha e con a y. In
he end a combined sys em ( he honeycomb iling) ha combines he ad an ages
o he linea me hod and he diamond iling leads o he bes esul s.