GPGPU Referaat
2010
SISUKORD
SISUKORD 2
1. SISSEJUHATUS 3
2. GPU
PARANDUSED 4
2.1 Programmeeritavus 4
2.2 Andme tüübid 4
3. GPGPU JA GPU
PROGRAMMEERIMISE KONSEPTSIOON 6
3.1 GPGPU programmeerimise kontseptsioone 6
3.2 GPU programmeerimise kontseptsioone 6
3.2.1 Arvutus vahendid 6
3.2.2
Voog tekstuurina 6
3.2.3 Tuum 7
3.2.4 Voog reguleerimine 7
3.3 GPU tehnika 7
4. GPU KASUTUSALAD 9
KOKKUVÕTE 10
Kasutatud allikad 11
1.
SISSEJUHATUS
GPGPU
(General-
purpose computing on graphics
processing units, mida
nimetatakse ka GPGP ja vähemal määral GP²) on
võimsate graafikaprotsessorite ärakasutamine massiivselt
paralleelsete ülesannete lahendamiseks. Kuidas on GPU’d
(graafikaprotsessorit) täiendatud, et GPGPU oleks teostatav ja
milline GPGPU oma
olemuselt on?
2. GPU PARANDUSED
GPU
funktsioonid on olnud traditsiooniliselt väga piiratud. Palju
aastaid oli GPU
harjunud kiirendama teatuid osi graafikakonveieril.
Mõningad parandused olid vajalikud, et GPGPU oleks teostatav.
2.1 Programmeeritavus
Programmeeritavad
vertex ja
fragment shaderid lisati graafikakonveierile, mis võimaldab
mängude programmeerijatel luua veelgi realistlikumaid
efekte . Vertex
shaderid võimaldavad programmeerijal
asendada näiteks asukohta,
värvi,
tekstuuri koordinaate ja tavalist vektorit. Fragment shaderid
võimaldavad programmeerijal asendada näiteks valguse mudelit.
Shaderid on võimaldanud programmeerijatel luua objektiivi mõju, vastendamist ja teravussügavust.
Konveieri
programmeeritavuse arengusuund on käinud koos
Microsoft DirectX
arenguga(DirectX8: Shader mudel 1.1, DirectX8.1: Pixel Shader mudel
1.2, 1.3 ja 1.4, DirectX9: Shader
mudel 2.x
ja 3.0 ja DirectX10 Shader mudel 4.0). Iga shaderi mudel on
suurendanud programmeermise paindlikkust ja võimalusi.
2.2 Andme tüübid
Enne
DirectX9 graafikakaarte, toetasid graafikakaardid ainult
palett värve
või lahutamatut värvi tüüpi. Erinevad vormid on kättesaadavad,
iga vorm koosneb
punasest elemendist, rohelisest elemendist ja
sinisest elemendist.
Vahepeal lisatakse ka alfa väärtus, mida
kasutatakse läbipaistvuseks.
Tavalised vormid on:
- 8 bitti piksli kohta - Võimalik on 2 bitti punase, 3 bitti rohelise ja 3 bitti sinise jaoks.
- 16 bitti piksli kohta – Tavaliselt jaotatakse 5 bitti punase, 6 bitti rohelise ja 5 bitti sinise jaoks
- 24 bitti piksli kohta – Igale 8 bitti punase, rohelise ja sinise jaoks.
- 32 bitti piksli kohta – Igale 8 bitti punase,rohelise, sinise ja alfa jaoks.
Graafika programmeerijad tahtsid kasutada paremaid andme tüüpe, näiteks
ujukoma andme tüüpe, et võimaldada effekte nagu HDR-pildindus.
Paljud GPGPU rakendused nõuavad ujukoma täpsust, mis tuli koos
vastava videokaardi DirectX9 spetsifikatsioonile.
3. GPGPU JA GPU PROGRAMMEERIMISE
KONSEPTSIOON
3.1 GPGPU programmeerimise kontseptsioone
GPU
on spetsiaalselt mõeldud graafika jaoks, seega on GPU väga piiratud
operatsioonide ja programmeerimise osas. Oma olemuselt on GPU tõhus
lahendadades probleeme, mida saab lahendada kasutades voog töötlust.
Riistvara saab kasutada ainult teatud kindlal viisil.
Ideaalsed
GPGPU rakendused on suure andmekogumiga, kõrge paralleelsusega ja
minimaalse sõltuvusega andme elementide vahel.
3.2 GPU programmeerimise kontseptsioone
3.2.1 Arvutus vahendid
CPU’l
on saadaval erinevaid andmetöötlus vahendeid:
- Programmeeritavaid protsessoreid
- Rasterizer
- Tekstuuri üksus
- Ekraanipuhver
3.2.2 Voog tekstuurina
Kõige
tavalisem voogi vorm,mis sobib GPGPU’le on 2D võrk, sest see sobib
loomult CPU sisseehitatud visualiseerimise
mudeliga . Paljud arvutused
vastendavad end võrkudesse: maatriksalgebra, pilditöötlus,
füüsiliselt põhinev
simulatsioon jne.
3.2.3 Tuum
Kui
programmeerija loob võrku CPU’le,siis see võib välja näha
midagi sellist:
/ /
Sisendi ja väljundi võrgud on 10000 x 10000 või 100 miljonit elemente.void transform_10k_by_10k_grid ( float in [ 10000 ] [ 10000 ] , float out [ 10000 ] [ 10000 ] )
for ( int x = 0 ; x
Kõik kommentaarid