GPGPU labor IX. Lineáris egyenletrendszerek megoldása.

Slides:



Advertisements
Hasonló előadás
Lineáris egyenletrendszerek megoldása Gauss elimináció, Cramer-szabály Dr. Kovács Sándor DE GVK Gazdaságelemzési és Statiszikai Tanszék.
Advertisements

3D képszintézis fizikai alapmodellje
BMEEOVKMKM4 Házi feladat megoldás áttekintés
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
Bevezetés a tárgyakhoz Tárgyak  Objects are the containers for values of a specified type  Objects are either signals, variables or constants  Once.
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
 Lineáris egyenlet  algebrai egyenlet  konstansok és első fokú ismeretlenek  pl.: egyenes egyenlete  Lineáris egyenletrendszer  lineáris egyenletek.
 Adat- és feladat párhuzamos modell  Az ISO C99 szabvány részhalmaza  párhuzamos kiegészítésekkel  Numerikus műveletek az IEEE754 alapján  Beágyazott.
 Gauss szűrő uniform sampler2D colorMap; const float kernel[9] = float[9]( 1.0, 2.0, 1.0, 2.0, 4.0, 2.0, 1.0, 2.0, 1.0); out vec4 outColor; void main(){
GPGPU labor I. OpenGL, Cg.
 Fény fotonok szimulációja  Nem változtatja meg a frekvenciát ütközéskor  Homogén és inhomogén közegben.
 Nincs szinkronizáció és kommunikáció  Csővezeték alkalmazása  Párhuzamosítás Proc 2Proc 1 Csővezeték Proc 1 Proc 21 Proc 22 Párhuzamosság.
Számítástechnika Dr. Nyulászi László Tanszékvezető:
Socket programozás Példák
Egy kis lineáris algebra
ISZAM III.évf. részére Bunkóczi László
VFP xBase adatkezelés - munkaterületek - DML - DDL - navigáció - eljárások, függvények - vezérlési szerkezetek - változók - képernyő IO - mintaprogram.
A megértés körei Binzberger Viktor Budapest Műszaki és Gazdaságtudományi Egyetem Filozófia és Tudománytörténet Tanszék.
Windows Server 2008 { PowerShell }
Elválasztástechnika segédábrák 2 Az ábrák több, részben szerzői jogokkal védett műből, oktatási célra lettek kivéve. Csak az intranetre tehetők, továbbmásolásuk,
Eye-RIS rendszer programozása D46 laborgyakorlat.
Nikházy László Ureczky Bálint Konzulens: dr. Horváth Gábor
A négyzetes mátrixok (nxn-es kétdimenziós tömbök)
Klasszikus Programozás a FoxPro-ban
Hasznos ismeretek Hogyan bővítsük ismereteinket AVRDUDEflags -E noreset.
Kétdimenziós tömbök Mátrixok
excel, (visual basic) makrók gyorstalpaló
Tervezési példák és ötletek Összeadók Összeadók Vektor szorzás Vektor szorzás Erőforrás megosztás Erőforrás megosztás Összehasonlítók (comparators) Összehasonlítók.
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
Motor IIII. Vezérlés Szécsi László. Letöltés diák: //l09-engine4.ppt.
Motor IIII. PhysX utáni rendberakás Vezérlés Szécsi László.
Motor II. Env map Spotlight Szécsi László. Letöltés /code/E/code/EggCoreSecondBase.zip Kibontani (vagy előző labor folyt.):
Transzformációk, textúrák, árnyalás Szécsi László.
V. labor Thread, animáció. Animáció A figurák a lépés kijelölése után nem rögtön az új helyen teremnek, hanem egyenes vonal mentén mozognak a cél felé.
OIS. Kezdeti teendők Letöltés: OgreLabControllersBase.zip Kicsomagol, betölt:.sln Additional include és library path beállítása Working directory beállítása.
Kezdeti teendők Letöltés: CharacterModellingBase.zip Blender3D futtatása headBase.blend betöltése.
Kamera, 3D, transzformációk Szécsi László. Math.zip kibontása az Egg projectkönyvtárba – float2, foat3, float4 típusok, HLSL-ben megszokott műveletekkel.
User interface Szécsi László. Egg projectben DXUTgui.cpp – CDXUTDialogResourceManager::CDXUTDialogReso urceManager() m_SpriteBufferBytes11 = 0; ezt kihagyták,
 Map  Reduce  Scan  Histogram  Compact const size_t dataSize = 1024; cl_kernel mapKernel = cl.createKernel(clProgram, "map"); float* hData = new.
 Kvantált kép fényesség értékei: G [ 0, Gmax ]  G fényességű pontok száma: P(G)
GPGPU labor XII. Tomográfiás rekonstrukció. Kezdeti teendők Tantárgy honlapja, Monte Carlo szimuláció A labor kiindulási alapjának letöltése (lab12_base.zip),
GPGPU labor X. Monte Carlo módszerek. Kezdeti teendők Tantárgy honlapja, Monte Carlo módszerek A labor kiindulási alapjának letöltése (lab10_base.zip),
GPGPU labor III. Iteratív algoritmusok. Kezdeti teendők Tantárgy honlapja, Iteratív algoritmusok A labor kiindulási alapjának letöltése (lab3base.zip),
GPGPU Labor 15.. Párhuzamos primitívek Map Reduce Scan Histogram Compact.
GPGPU labor II. GPU mint vektor processzor. Kezdeti teendők Tantárgy honlapja, Bevezetés – Alap könyvtárak letöltése Tantárgy honlapja, GPU mint vektor.
 OpenCL platform  Számító eszközök  OpenCL kontextusok  Parancs sorok  Szinkronizáció  Memória objektumok  OpenCL programok  OpenCL függvények.
Programozás I. Típus algoritmusok
1 Mivel foglalkozunk a laborokon? 7. hét: Do-Loop-Until Do-Until-Looptömbök Function 7. hét: Do-Loop-Until és Do-Until-Loop ciklusok. Egy indexes tömbök,
A Visual Basic nyelvi elemei
Adatbázis rendszerek I
1 Mivel foglalkozunk a laborokon? 7. hét: Do-Loop-Until Do-Until-Looptömbök Function 7. hét: Do-Loop-Until és Do-Until-Loop ciklusok. Egy indexes tömbök,
1 Szervetlen és Analitikai Kémia Tanszék, Kémiai Informatika Csoport Számítástechnika Kari rendszergazda: Rippel Endre (Ch C2)
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Excel programozás (makró)
Az 5,6,7 laborok VBA anyagának összefoglalása
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Szécsi László 3D Grafikus Rendszerek 15. előadás
GPGPU – CUDA 1..
Farkas Bálint | Technical Evangelist | Microsoft
Excel programozás (makró)
Monte Carlo módszerek.
Lineáris egyenletrendszerek megoldása Gauss elimináció, Cramer-szabály Dr. Kovács Sándor DE GVK Gazdaságelemzési és Statiszikai Tanszék.
12. hét, nov. 24: 2. géptermi beszámoló
Lineáris egyenletrendszerek megoldása
GPGPU – CUDA 2..
ITERÁCIÓ.
Nikházy László Ureczky Bálint Konzulens: dr. Horváth Gábor
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

GPGPU labor IX. Lineáris egyenletrendszerek megoldása

Kezdeti teendők Tantárgy honlapja, Lineáris egyenletrendszerek A labor kiindulási alapjának letöltése (lab9_base.zip), kitömörítés a GPGPU\Labs könyvtárba

Gauss-Jordan elimináció // TODO // // ID := get_local_id(0) // // LOOP ma := 0.. m DO: // pivot := A[ma + ma * n] // coeff := A[ma + ID * n] / pivot // BARRIER // IF ID != ma DO: // LOOP na := 0.. n DO: // A[na + id * n] := A[na + id * n] - coeff * A[na + n * ma]; // ENDIF // BARRIER // END LOOP // // coeff := A[ID + ID * n] // LOOP na := 0.. n DO: // A[na + id * n] = A[na + id * n] / coeff __kernel void gaussian(const int n, const int m, __global float* A){ }

Minta egyenletrendszer int n = 4; int m = 3; float A[] = {2, 1, -1, 8, -3, -1, 2, -11, -2, 1, 2, -3};

Mátrix invertálás int n = 6; int m = 3; float A[] = { 2, -1, 0, 1, 0, 0, -1, 2, -1, 0, 1, 0, 0, -1, 2, 0, 0, 1};

Mátrix vektor szorzás CPU implementáció void scalarMV(int n, int m, float* y, const float* A, const float* x, const float* b){ for(int i=0; i<n; ++i){ float yi = b[i]; for(int j=0; j<m; ++j){ yi += A[i * m + j] * x[j]; } y[i] = yi; }

Mátrix vektor szorzás GPU implementáció I // TODO // // i := get_global_id(0) // // IF ID < n DO: // yi := b[i] // LOOP j := 0.. m DO: // yi += A[j + i * m] * x[j] // END LOOP // y[i] := yi // END IF __kernel void simpleMV(const int n, const int m, __global float* y, __global float* A, __global float* x, __global float* b){ }

Mátrix vektor szorzás GPU implementáció II // TODO // // i = get_group_id(0) // j = get_local_id(0) // // Q[j] := A[i * M + j] * x[j] // BARRIER // // Sum scan on Q (reduction) // // IF j = 0 THEN: // y[i] = Q[0] + b[i] // __kernel void reduceMV(const int n, __global float* y, __global float* A, __global float* x, __global float* b, const int M, __local float* Q){ }

Mátrix vektor szorzás GPU implementáció III // TODO // // t := get_local_id(0) / Z // z := get_local_id(0) % Z // // FOR i := t ; i < n ; i := i + T : // Q[t * Z + z] = 0 // FOR j := z ; j < m ; j += Z : // Q[t * Z + z] += A[j + i * m] * x[j] // END FOR // // Sum scan on Q (reduction) // // IF z = 0 THEN: // y[i] = Q[t * Z + 0] + b[i] // __kernel void largeMV(const int n, const int m, __global float* y, __global float* A, __global float* x, __global float* b, const int T, const int Z, __local float* Q){ }

Mátrix vektor szorzás Terjesszük valamely megoldást több munkacsoportra!

Jacobi iteráció void jacobi(){ int n = 8; float* x[2] = {NULL, NULL}; x[0] = new float[n]; x[1] = new float[n]; for(int i = 0; i < n; ++i){ x[0][i] = 0.0f; x[1][i] = 0.0f; } float* A = new float[n * n]; for(int i = 0; i < n; ++i){ for(int j = 0; j < n; ++j){ float v = 0.0f; if( i == j){ v = 0.5f; } A[i + j * n] = v; } float* b = new float[n]; for(int i = 0; i < n; ++i){ b[i] = 1.0f; } int inputBuffer = 0; const int iterations = 20; for(int i = 0; i < iterations; ++i){ largeMV(n, n, x[(inputBuffer + 1) % 2], A, x[inputBuffer], b); inputBuffer = (inputBuffer + 1) % 2; printResult(n, x[inputBuffer], "Jakobi"); } delete x[0]; delete x[1]; delete A; delete b; }

Jacobi iteráció Próbáljuk ki más egyenlet rendszerre is! Próbáljuk ki, hogy mi történik, ha nem megoldható az egyenlet rendszer!