Mátrixműveletek hatékony párhuzamos implementációja C++-ban

Különböző alkatrészek, berendezések működését gyakran vizsgáljuk szimulációval. Ilyen esetben a vizsgált eszközt általában kis elemi részekre bontjuk, és ezekre az elemi részekre számítjuk ki a kívánt fizikai mennyiséget, pl. a hőmérsékletet, elektromos feszültséget vagy mechanikai elmozdulást. A számítás egy lineáris (vagy nemlineáris) egyenletrendszer megoldását jelenti, amelyeket mátrixokkal szokás leírni. A számítás során különböző elemi mátrixműveleteket használunk (összeadás, kivonás, szorzás, invertálás).

Összetettebb problémák esetén (nagyobb struktúrán és/vagy időtartománybeli számítások) egy szimuláció sokáig: percekig, de akár órákig is tarthat. A korszerű számítógépeken a számítás időigénye a számítások párhuzamosításával jelentősen csökkenthető.

A hallgató feladata, hogy C++-ban elkészítsen egy CPU-n futó, párhuzamos számításokat lehetővé tevő rendszert, és a témavezetővel egyeztetve megvizsgálja különböző párhuzamosítási stratégiák hatékonyságát mátrixinvertálás, szorzás, ill. egyéb műveletek esetén. A feladat továbbvihető szakdolgozat, diplomaterv irányba, például GPU-n futó algoritmusok megvalósításával, az algoritmusok valódi szimulátorba történő beépítésével.

C++ ismeret