Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
10
1.Wprowadzenie
awewnętrznemechanizmyOpenCLdopasowująpodanyprogramdoaktualnie
używanejplatformywykorzystywanejdoobliczeńwramachOpenCL.Oznaczato
zasadnicząprzewagęstandarduOpenCLnadtechnologiąCUDA,gdyżmożebyć
stosowanynietylkodokartgrafcznych,alerównieżdotradycyjnychprocesorów,
któreobecniewyposażonewwektorowejednostkioferująceinstrukcjetypuSSE,
AltiVec,NeonczyAVX.NowościąjestteżwykorzystywaniestandarduOpenCLdo
układówFPGA2,którepoodpowiednimzaprogramowaniurównieżmogąstanowić
wydajnąjednostkędorealizacjiobliczeń.
WartozapoznaćsięztechnologiąOpenCL,bowiemwykorzystaniekartgrafcz-
nychwiodącychproducentówdorealizacjiobliczeńuniwersalnychróżnegotypujest
jużodkilkulatbardzopopularne.Wieleaplikacji(np.związanychzprzetwarzaniem
grafki,multimediów),anawetprogramydokompresjidanychpozwalająnawyko-
rzystaniemocyobliczeniowejkartgrafcznychdoprzyspieszeniaobliczeń.Znako-
mitymprzykłademjestGIMPjedenzogólniedostępnychprogramówootwartym
źródle,adokładniepodsystemGEGL,wktóregonajnowszejwersjistandardOCL-
dzieszerokostosowany.InnymprzykłademjestprogramWinZIP
,którywykorzystuje
OpenCLdoprzyspieszeniakompresjiorazdekompresji.
1.1.Obliczeniarównoległe
Choćobecnieistniejądwagłównestandardytworzeniaprogramówdlakartgrafcz-
nych:wymienionatechnologiaCUDAfrmyNVIDIAorazstandardOpenCL(który
możnatraktowaćjakoodpowiednikOpenGLdorealizacjiobliczeń).Obarozwią-
zaniamająswojezaletyiwady.CUDAjestbardzopopularna,jednakżedziałatylko
zkartamifrmyNVIDIA.OpenCLtostandardustanowionyprzezorganizacjęKhro-
nosaplikacjeopracowanezajegopomocądziałająnakartachgrafcznychgłów-
nychproducentówkartgrafcznych,obecnietofrmyNVIDIAorazAMD.
Wymienionetechnologiemająpodobnymodelprogramowania.Zaletątechno-
logiiCUDA,jakwspomnianowewstępie,jestpełnaintegracjazjęzykiemC/C++.
WłaściwietonależymówićojęzykachprogramowaniaCUDACiCUDAC++.
OpenCLoferujeodrębnyjęzykprogramowaniapodobnydoC,aleniejesttoC++.
Stanowitoteżpewnąwadę,ponieważniedostępnenp.szablony.WCUDAmoż-
natworzyćklasyjęzykaC++,którychmetodyrealizowaneprzezkartęgrafczną.
WprzypadkuOpenCLtworzonetzw.kernele(wdalszejczęściksiążkibędąone
nazywanejądramiobliczeniowymialboprocedurami/funkcjamiobliczeniowymi)
stanowiąceoddzielneprogramydowykonaniaprzezodpowiednieurządzeniaobli-
czeniowedostępnewramachtzw.platformyOpenCL.Wartotuwspomniećopakie-
cieAPARAPIdlajęzykaJava(zostanieonszerzejprzedstawionywrozdz.6.2),który
funkcjonujepodobniejaktechnologiaCUDA.Programprzeznaczonydorealizacji
2FPGAFieldProgrammableGateArray,wbezpośrednimtłumaczeniu:programowalnamacierz
bramek.Układtakimożnawielokrotnieprogramować,abyzmieniaćjegoprzeznaczenieifunkcjo-
nalność,nawetpozamontowaniuwurządzeniudocelowym.