OpenSSL-GPU

Lühidalt minu magistritööst:
Kuna CPU’de areng on jõudmas oma füüsiliste piirideni siis peamised kaks edasist arengusuunda on mitmetuumalised protsessorid ning grid mis aga momendil on üsnagi kallid või keerulised kasutada. Viimastel aastatel on GPU’de areng olnud väga tormiline ning tänu omapärasele ning optimiseeritud arhidektuurile on nad ujuvkomaarvutustes CPU’dest väga palju ette jõudnud. Sisemiselt on tegu mitmetuumaliste protsessoritega – näiteks töös kasutatud 6800GT sisaldab 16 piksel-protsessorit ja 6 tipu-protsessorit (vertex) ning 8800GTS 12 multiprotsessorit milles igaühes 8 protsessorit (kokku 96!). Nende kõigi peal saab saab paralleelarvutusi sooritada. Ning lisaks ujuvkomaarvutustele suudavad viimased NVIDIA 8000 seeria kaardid teostada loogikatehteid ning kasutada täisarve.

Siit sammuke edasi ja jõuamegi mõtteni, et miks mitte kasutada GPU’d abiprotsessorina? Enamikes serverites näiteks seisavad ju graafikaprotsessorid ilma igasuguse koormuseta ning seetõttu oleks ju väga abiks kui saaksime mõned koormavad operatsioonid CPU pealt GPU peale ära laadida et CPU saaks vajalikemate asjadega tegeleda.

Magistritöö raames saigi realiseeritud OpenSSL nimelisele krüptoteegile kaks mootorit:
* 6800 – OpenGL ja Cg abil implementeeritud mootor mis on võimeline jooksma vanemate OpenGL poolt toetatud graafikakaartide peal ning süsteemides kus OpenGL ise on olemas
* 8800 – 2007 aasta märtsis väljatulnud CUDA abil implementeeritud mootor mis praeguse seisuga vajab vähemalt NVIDIA 8000 seeria graafikakaarti.

Esimese implementatsiooni miinuseks on kindlasti asjaolu, et koodi jooksutamiseks on vaja graafilist keskkonda, teise miinuseks aga (hetkel) kalli NVIDIA graafikakaardi olemasolu eeldus.

Kood on kättesaadav kõigile huvilistele siit. Olemasolevale 8800 koodile on juba teadaolevalt parandus olemas, aga kuna mul endal ei ole riistvara enam käepärast, siis ei ole seda võimalik momendil testida ega katsetada.

Tulemused.
Minu süsteemi peal oli tulemus selline, et 6800 kaart oli aeglasem ning süsteemi koormus üldiselt väga suur. 8800 kiip aga suutis teha 1..3% kiirema arvutuse.

Problemid.
GPU’de programmeerimisel võib igasuguseid müstilisi probleeme ette tulla. Kindlasti tuleb meeles pidada seda, et CPU algoritm ei pruugu GPU peal mitte kõige optimaalsem olla, ning seega tuleb need kõik uuesti läbi mõelda.
* Vanematel kaartidel puuduvad loogikatehted ja täisarvud
* nii CUDA ise kui Cg on ikkagi suhteliselt beeta staadiumis
* vanematel kaartidel võtab andmete kopeerimine päris palju aega
* Ülekuumenemise eest ei kaitsta, vanem kaart hakkas vigu andma

Vot nii. Kui leidub huvilisi, siis kõik on teretulnud. Parandused, ettepanekud võib ka mulle saata, küll aga ei saa ma garanteerida nende sisseviimist koodi kui ise ei õnnestu seda testida.

Päikest,

Advertisements

One thought on “OpenSSL-GPU

  1. Pingback: Veel GPU’dest ja nende kasutamisest (teadusarvutustes) « UR

Lisa kommentaar

Täida nõutavad väljad või kliki ikoonile, et sisse logida:

WordPress.com Logo

Sa kommenteerid kasutades oma WordPress.com kontot. Logi välja / Muuda )

Twitter picture

Sa kommenteerid kasutades oma Twitter kontot. Logi välja / Muuda )

Facebook photo

Sa kommenteerid kasutades oma Facebook kontot. Logi välja / Muuda )

Google+ photo

Sa kommenteerid kasutades oma Google+ kontot. Logi välja / Muuda )

Connecting to %s

%d bloggers like this: