You are on page 1of 12

TRNG I HC BCH KHOA H NI

Bo co Project 1
Tng quan v GPGPU v OpenCL
Trn Tun Mnh
9/29/2011

Mc lc
Phn I Tng quan v GPGPU ....................................................................................................................... 2
I.1.Gii thiu s qua v GPU ......................................................................................................................... 2
I.1.1. Kin trc GPU ...................................................................................................................................... 2
I.1.1.1. Cc khi nim v hnh nh 3D ................................................................................................... 2
I.1.1.2. Graphics Pipeline ........................................................................................................................... 3
I.2.GPGPU ............................................................................................................................................................. 4
Phn II: OpenCL ..................................................................................................................................................... 7
II.1.Vi nt v lch s........................................................................................................................................ 7
II.2.Cc c im ca OpenCL ...................................................................................................................... 7
II.3.Kin trc OpenCL ...................................................................................................................................... 7
II.3.1.Platform Model .................................................................................................................................. 8
II.3.2.Execution Model ................................................................................................................................ 8
II.3.3. Memory Model .................................................................................................................................. 9
II.3.4.Programming Model ..................................................................................................................... 10
II.3.5.OpenCL Framework ...................................................................................................................... 11
II.4.Pht trin chng trnh OpenCL ...................................................................................................... 11

Phn I Tng quan v GPGPU


I.1.Gii thiu s qua v GPU
GPU Graphics Processing Units n v x l ha trong my tnh. Trong mt h thng
my tnh, GPU l thit b phn cng chuyn dng x l ha, chuyn i d liu trn
nh 2D c nh dng bi cc pixels, c bit l dng hnh 3D.
I.1.1. Kin trc GPU
GPU c thit k vi mt kin trc khc hn vi CPU, do vy GPU c cc c th ring v
kh nng tnh ton, vt tri hn CPU v cc php ton du phy ng(vi chnh xc
n). Chng ta s i tm hiu kin trc GPU v cch m cc lp trnh vin lp trnh cho n.
Phn ny s ch cp n kin trc GPU di gc ca nh lp trnh.
I.1.1.1. Cc khi nim v hnh nh 3D
Nh ni, GPU l thit b chuyn dng x l ha, c bit l dng hnh 3D. Phn ny
s trnh by cc thnh phn c bn cu thnh mt 3D scene, m GPU x l.

Hnh : 3D scene
3D scene: l mt tp hp cc i tng 3D v lights.
3D Objects: l cc i tng 3D trong khng gian, cc khi hnh hc c bn, thng l cc
khi tam gic. Cc khi tam gic ny bao gm cc vertices.
Vertex: l mt im c ta trong khng gian, ngoi ra cn c cc thng tin khc nh mu
sc, ta texture.

Hnh : Object, triangle v vertices


Texture: l mt hnh nh c nh x ln b mt ca mt 3D object.

Hnh : Khi lp phng vi texture

I.1.1.2. Graphics Pipeline


u vo ca GPU l cc hnh hc nguyn thy, c bit l hnh tam gic, trong khng gian 3
chiu. Sau nhiu bc, cc hnh ny c shade v c v ln mn hnh. Qu trnh ny
c m t nh sau:

Trong s trn, chng ta quan tm n 2 qu trnh: Geometry Stage v Rasterization


Stage.
Geometry Stage:
Cc khi hnh hc trong khng gian c hnh thnh t cc vector ring r. Mi vector cn
c chuyn thnh khng gian trn mn hnh. Qu trnh ny s chuyn cc scene t 3D
sang 2D. Mi scene thng cha nhiu vector, v mi vector c x l c lp. C th thy
rng, iu ny ph hp vi kin trc phn cng song song.
Rasterization Stage:
Qu trnh ny xc nh nhng v tr im nh trong khng gian c bao cha bi mi tam
gic. Mi tam gic s to thnh mt mnh ti cc v tr im nh trong khng gian mn hnh
m n bao cha. Do cc tam gic c th chng ln nhau, nn mu ca mi im nh s c
tnh t nhiu mnh. Trn mi tam gic, GPU thc hin cc thao tc sau:
1. Qut mnh, nh ni trn, xc nh nhng v tr im nh c bao cha bi
mi tam gic.
2. B sung thm texture.
3. Mi mnh c lm bng m.
4. Xc nh mu sc cui cng trc khi cho hin th ln mn hnh.
Mi mnh s c x l song song.
I.2.GPGPU
GPGPU - General-purpose computing on graphics processing units tnh ton thng dng
trn GPU. y l khi nim ca k thut s dng GPU x l cc cng vic truyn thng
ca CPU.

I.2.1.Ti sao li l GPGPU?


Chc chn s c ngi hi l ti sao li cn n GPU lm nhng cng vic c coi l ca
CPU, chng phi CPU ang lm rt tt cng vic ca mnh hay sao?
Trc ht, chng ta hy xem biu bng thng nh v nng lc tnh ton ca GPU v CPU:

Mt vi thng s:

NVIDIA 6800 Ultra: bng thng nh l 35.2GB/s


ATI X800 XT: 63GFLOPS
Intel Pentium4 3.7GHz: 14.8GFLOPS

C th thy rng, c bng thng b nh v kh nng tnh ton php ton du phy ng ca
GPU u tt hn CPU, thm ch l vt tri so vi CPU.
Mt khc, do thit k, CPU t hiu nng cao trn cc on m tun t, cn GPU th li lm
vic hiu qu trn cc on m song song.
GPGPU c tnh mm do cao. GPU h tr tt cho tnh ton du phy ng vi chnh xc
n. GPU cn h tr lp trnh vi API ca ngn ng bc cao.
C th thy rng, vic chuyn sang GPGPU i vi tnh ton song song l hp l. V khi ,
chng ta khai thc c th mnh ca GPU, khng ch n thun l x l hnh nh 3D.
I.2.2.M hnh lp trnh trn GPU
Cc n v lp trnh trn GPU h tr m hnh lp trnh SPMD. Nh ni phn trn, GPU
s x l rt nhiu yu t song song bng cch s dng nhiu chng trnh ging nhau. Mi

phn t c lp vi phn t khc. Tt c chng trnh GPU phi c t chc theo cch:
song song nhiu thnh phn, mi thnh phn c x l song song bi mt chng trnh.
Cc thnh phn c th c ghi d liu ln vng nh ca ring n hoc ghi ln global
memory. M hnh ny rt ph hp vi chng trnh c vit theo cch SIMD.
I.2.3.GPGPU

Phn II: OpenCL


OpenCL Open Computing Langue l mt chun m c cng b vo 12/2008, h tr
lp trnh song song trn cc thit b. OpenCL ban u c xut bi Apple, sau Apple
nhng li quyn pht trin cho Khronos Group (t chc ang nm gi cc chun m bao
gm c OpenGL v mt s chun m khc da trn OpenCL, OpenGL). Hin ti, OpenCL
ang c s hng ng ca rt nhiu nh sn xut phn cng.
II.1.Vi nt v lch s
Ban u, OpenCL c xut bi Apple. Sau , Apple nhng li quyn pht trin
OpenCL cho Khronos Group. Sau su thng, Khronos Group chnh thc cng b bn
c t OpenCL specification v1.0 u tin cho OpenCL (12/2008). Mt vi mc s kin:

16/6/2008: Nhm Khronos Compute Working c thnh lp vi cc i din n


t cc cng ty sn xut phn cng nh AMD, nVIDIA, INTEL...
18/11/2008: a ra c t k thut cho OpenCL v1.0
8/12/2008: Chnh thc cng b bn c t OpenCL specification v1.0.
20/4/2009: nVIDIA cho ra mt driver v SDK h tr OpenCL trn thit b ca h
5/8/2009: AMD cho ra mt b cng c pht trin OpenCL u tin nh l mt phn
ca b ATI STREAM SDK. Hin nay, AMD vn coi OpenCL l mt nn tng cn c
h tr cho sn phm ca h.
6/2010: Khronos cng b OpenCL specification v1.1

II.2.Cc c im ca OpenCL
OpenCL l mt chun m nn c cc nh sn xut phn cng rt ng h.
OpenCL c pht trin theo hng cross-platform (khng ph thuc vo nn tng
h thng, bao gm c phn cng v phn mm).
OpenCL c pht trin tn dng c tt c thit b tnh ton c th thc thi
song song, bao gm c CPUs, GPUs.
OpenCL h tr song song tc v v song song d liu.
OpenCL bao gm mt ngn ng (chun C99) vit kernels (chy trn cc OpenCL
devices) v cc hm APIs xc nh v iu khin platform.
II.3.Kin trc OpenCL
m t cc tng ct li ca OpenCL, chng ta s s dng mt h thng cc m hnh
phn cp:

Platform Model
Memory Model
Execution Model
Programming Model

II.3.1.Platform Model
OpenCL xy dng cho mnh mt platform tru tng, c lp vi h tng phn cng ca
thit b tnh ton.
OpenCL platform bao gm mt Host kt ni n mt hoc nhiu OpenCL devices (dng lm
thit b tnh ton). Mt OpenCL device l mt hoc nhiu Compute Units (CUs). Mi CU li
c phn chia thnh cc Processing elements (PEs). Vic tnh ton c thc hin trn
PEs.

Hnh : OpenCL platform model


II.3.2.Execution Model
Mt chng trnh OpenCL c thc thi trn 2 phn: kernels chy trn cc OpenCL
devices v host program cht trn host. Host program c nhim v xc nh context cho
cc kernels v qun l s thc thi ca cc kernels ny nh vo mt command queue.
Ct li ca m hnh thc thi OpenCL c xc nh bi vic thc thi cc kernels. Mi th
hin ca kernel c gi l mt work-item. Mi work-item thc thi cng mt on m
nhng trn cc vng d liu khc nhau v chy trn mt thit b tnh ton. Khi n nh thc
thi cng vic trn mt device c th, chng ta xc nh s lng work-items cn thit
hon thnh vic x l d liu m ta gi l index space.
Cc work-items c t chc thnh cc work-groups. OpenCL h tr vic ng b gia cc
work-items nhng khng h tr gia cc work-group.
Mi work-item c mt global ID trong index space. Mi work-group cng c mt workgroup ID trong index space. Mi work-item cng c mt local ID xc nh v tr trong
work-group.

Index space c h tr trong OpenCL c gi l NDRange. Mt NDRange l mt khng


gian ch mc N-chiu, N = 1, 2, 3.

Hnh: V d v NRange, work-item v globalID, localID


II.3.3. Memory Model
OpenCL c bn vng nh ring bit nh sau:

Global Memory: vng nh cho php tt c cc work-items c v ghi.


Constant Memory: vng nh nm trn global Memory, nhn gi tr khng i trong
sut qu trnh thc thi ca mt kernel. Ch cho php cc work-items c d liu. D
liu trn vng nh ny c host cp pht v khi to.
Local Memory: vng nh cc b ca work-group. Vng nh ny c dng chung
bi cc work-items trong work-group .
Private Memory: vng nh ca ring mt work-item. Ch c work-item ny mi
c quyn truy xut vng nh ny.

Hnh: Cc vng nh v quyn cp pht, truy xut

Hnh: Kin trc cc vng nh


II.3.4.Programming Model
OpenCL h tr m hnh lp trnh song song tc v v song song d liu.
Cc tin trnh song song d liu thc thi nhiu th hin ca kernel trn cc OpenCL devices.
Cc th hin ny thc thi cng mt on m nhng trn cc tp d liu khc nhau v trn

cc OpenCL devices khc nhau. Mi tp d liu c lin kt vi mt im trong khng gian


ch mc.
Song song tc v ging nh tin trnh thc thi a lung hon ton c lp nhau, mi tin
trnh thc thi nhng cng vic khc nhau. Trong OpenCL lp trnh song song tc v bao
gm vic lp hng i nhiu kernel. V OpenCL thc hin chng mt cch song song s
dng cc OpenCL devices.
II.3.5.OpenCL Framework
OpenCL Framework cho php cc ng dng s dng mt host v mt hoc nhiu OpenCL
devices nh mt h thng tnh ton song song phc hp. Cc thnh phn ca OpenCL
framework:

OpenCL Platform layer: platform layer cho php host program tm hiu OpenCL
devices, nng lc tnh ton ca cc devices v to contexts.
OpenCL Runtime: cho php host program thao tc vi context to ra.
OpenCL Compiler: to chng trnh thc thi.

Hnh: OpenCL framework


C th thy c rng, OpenCL runtime lm vic trc tip vi Driver ca phn cng.
Nn OpenCL c tc khng thua km CAL ca ATI v CUDA ca NVIDIA.
II.4.Pht trin chng trnh OpenCL

You might also like