Yleisen n toteutus ohjelmoitavalla näytönohjaimella Mirko Myllykoski mirko.myllykoski@jyu.fi 15.2.2011
Mitä teen? Tarkoituksena toteuttaa (ja osin jo toteutettukin) stä versio ohjelmoitavalle näytönohjaimelle Rajapintana OpenCL Optimoidut versiot nvidian ja ATI:n näytönohjaimille Tarkoitus verrata tuloksia normaaliin CPU-versioon
Ohjelmoitava näytönohjain Tietokoneiden laskentatehon eksponentiaalinen kasvu alkanut näkyä myös näytönohjaimissa Monimutkaisempia pelejä = Enemmän toiminnallisuutta = Enemmän ohjelmoitavuutta Normaalissa suorittimessa 1-8 ydintä. Tarvittava määrä säikeitä ytimien määrä. Uusimmassa nvidian GeForce GTX 580 -näytönohjaimessa ytimiä 512. Tarvittava määrä säikeitä ytimien määrä. Käytönnössä jopa miljoonia. Rinnakkaisuuden hyödyntäminen haaste
(1/2) PSCR 1 eli Partial Solution variant of the Cyclic Reduction Tuomo Rossin ja Jari Toivasen tuotoksia 90-luvun lopulta Kykenee ratkaisemaan lineaarisen yhtälöryhmän, joka on muotoa A 1 M 2 + M 1 A 2 + c(m 1 M 2 ), jossa c R, A 1, M 1 R n 1 n 1, A 2, M 2 R n 2 n 2 ja on Kronecker (tensori) tulo 2. Lisäksi A 1, A 2 ovat tridiagonaalisia ja M 1, M 2 diagonaalisia. 1 Rossi, T., Toivanen, J: A Parallel Fast Direct Solver for Block Tridiagonal Systems with Separable Matrices of Arbitrary Dimension, SIAM, J. Sci. Comput., Vol. 20, No. 5, pp. 1778-1796 (1999) 2 esim. Olkoon B R s s ja C R r r, B C = {b i,j C} s i,j=1 R sr sr
(2/2) Syklisen reduktion (Cyclic Reduction) yleistys Menetelmän tarkka muoto riippuu asteen valinnasta, Radix-q Rekursiivinen algoritmi. Jokainen askel pienentää yhtälöryhmän kokoa suhdeluvulla q. Jokaisella askeleella ratkotaan joukko tridiagonaalisia yhtälöryhmiä. Vaatii alustusvaiheen (ratkotaan joukko ominaisarvotehtäviä)..
Variantit Toteutettuna kaksi versiota: Radix-2 ja Radix-4 Radix-2 toteutus yksinkertaisempi. Pystyy ratkaisemaan vain tietyn tyyppisen ongelman. Ei vaadi alustusvaihetta. Tarvisi kuitenkin uudelleenkirjoittamista. Mahdollisesti jätetään pois. Radix-4 täysi toteutus. Pieniä teknisiä ongelmia. 3D versio tekeillä. Alustusvaihe toteutettu CPU:lla. Periaatteessa mahdollista toteuttaa GPU:lla 3 Tridiagonaalisien yhtälöryhmien ratkaiseminen tärkeää. Asiaa tutkittu kohtalaisesti 4. Vaatii kuitenkin omia virittelyjä. 3 Volkov V., Demmel J. W.: Using GPUs to Accelerate the Bisection Algorithm for Finding Eigenvalues of Symmetric Tridiagonal Matrices, LAPACK Working Note 197 4 Zhang Y., Cohen H., Owens J.: Fast Tridiagonal Solvers on the GPU, 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2010)
Käytännön haasteita Satoja ytimiä ei saa ilmaiseksi: Laitteisto rajoittunutta, eri kortit rajoittuneita eri tavalla Sama koodi ei toimi tehokkaasti (jos ollenkaan) eri näytönohjaimilla. nvidian ja ATI:n arkkitehtuurit huomattavan erilaisia. Eri korttisukupolvien välillä eroja. Ytimet eivät ole täysin riippumattomia toisistaan. Vaikuttaa haarautuvuuksien ja muistiviittauksien käsittelyyn. Säikeet jaetaan ryhmiin, mutta ryhmäjako ja indeksointi ei välttämättä sovi algoritmille. Tarvitaan erillinen muistialue ohjausdatalle. Debuggaus ja testaus hankalaa: Miten seurata 100 000 säikeen toimintaa?
Testasin ohjelmakoodeja Poissonin yhtälön ratkaisemiseen. Problem size on diskretisointihilan tiheys yhteen suuntaan: 2D tapauksessa tuntemattomia (Problem size) 2 ja 3D tapauksessa (Problem size) 3. Huomaa log-log-skaala
2D ongelman kanssa
3D ongelman kanssa