parallel computing
Megjelenés
Főnév
parallel computing (tsz. parallel computings)
- (informatika) A parallel computing (párhuzamos számítás) a számítástudomány azon területe, amely egy probléma több részre osztásával és ezek egyidejű végrehajtásával próbálja felgyorsítani a számításokat. Célja, hogy kihasználja a modern hardverek (többmagos processzorok, fürtözött rendszerek, GPU-k) párhuzamos feldolgozási képességeit.
1. Mi az a párhuzamos számítás?
Párhuzamos számítás akkor történik, amikor több művelet hajtódik végre egy időben, különálló végrehajtó egységek segítségével. Ez jelentheti:
- Több processzor (CPU)
- Több processzormag
- Több számítógép (cluster)
- Több szál vagy folyamat (thread, process)
- Grafikus processzor (GPU)
2. Miért van rá szükség?
A processzorok órajele már évek óta nem növelhető jelentősen a hő és energiafogyasztás miatt, ezért a teljesítménynövelés a párhuzamos feldolgozás irányába tolódott el.
Példák:
- Fizikai szimulációk (pl. időjárásmodellek)
- Képfeldolgozás, videótranszkódolás
- Gépi tanulás (pl. neurális hálók tanítása)
- Nagy adatfeldolgozás (pl. genomika, pénzügy)
3. A párhuzamos számítás alapfogalmai
| Fogalom | Magyarázat |
|---|---|
| Folyamat (process) | Saját memóriával rendelkező program |
| Szál (thread) | Könnyebb végrehajtási egység, megosztott memóriával |
| Task | Logikai munkaegység a feldolgozási rendszerben |
| Speedup | Mennyi gyorsulást érünk el: S = T1 / Tp |
| Efficiency | A speedup aránya a processzorok számához: E = S / P |
| Scalability | Mennyire jól gyorsul a rendszer új egységekkel |
| Amdahl-törvény | A párhuzamosítás elméleti korlátja |
4. Architektúrák (Flynn-taxonómia)
| Típus | Jelentés | Példa |
|---|---|---|
| SISD | Egy adat + egy utasítás | Klasszikus egyprocesszoros |
| SIMD | Egy utasítás, több adat | GPU, vektorprocesszor |
| MISD | Ritka, speciális rendszerek | Például redundáns hibakezelés |
| MIMD | Több utasítás, több adat | Modern többmagos CPU, cluster |
5. Párhuzamos programozási modellek
5.1. Megosztott memória (shared memory)
- Minden szál ugyanazt a memóriát éri el
- Egyszerűbb kommunikáció, de nehezebb szinkronizáció
- Példák: OpenMP, POSIX Threads
#pragma omp parallel for
for (int i = 0; i < N; i++) {
a[i] = b[i] + c[i];
}
5.2. Elosztott memória (distributed memory)
- Minden folyamat saját memóriával rendelkezik
- Üzenetküldés szükséges a kommunikációhoz
- Példák: MPI, PVM
MPI_Send(buffer, count, MPI_INT, dest, tag, MPI_COMM_WORLD);
MPI_Recv(buffer, count, MPI_INT, source, tag, MPI_COMM_WORLD, &status);
6. Szinkronizáció és kommunikáció
Párhuzamos programozás során gondoskodni kell a szálak/folyamatok koordinációjáról.
Alapfogalmak:
- Mutual exclusion (mutex) – kizárólagos hozzáférés biztosítása
- Semaphore – számlálószinkronizáció
- Barrier – minden szálnak meg kell várnia a többieket egy ponton
- Deadlock – körkörös várakozás, elkerülendő állapot
7. Párhuzamos algoritmusok példái
| Feladat | Technika |
|---|---|
| Mátrixszorzás | Blokk alapú felosztás |
| Rendezés | Párhuzamos quicksort vagy mergesort |
| Képtranszformáció | Pixelblokkok párhuzamosítása |
| Graf algoritmus | Párhuzamos BFS, DFS, Dijkstra |
| Neurális hálók tanítása | Adat vagy modell párhuzamosítás |
8. Eszközök és könyvtárak
| Név | Típus | Funkció |
|---|---|---|
| OpenMP | Megosztott memória | Direktívák C/C++/Fortran-hoz |
| MPI | Elosztott memória | Üzenetküldés több gép között |
| CUDA | GPU programozás | NVIDIA GPU-hoz |
| OpenCL | Platformfüggetlen GPU/CPU | |
| Threading Building Blocks (TBB) | C++ szálkezelés | |
| Python multiprocessing / joblib / Dask | Magas szintű eszközök Pythonban |
9. Párhuzamos számítás típusai
| Típus | Leírás |
|---|---|
| Adatpárhuzam (data parallelism) | Ugyanaz a művelet több adaton |
| Feladatpárhuzam (task parallelism) | Különböző műveletek párhuzamosan |
| Pipeline parallelism | Lépések láncolata, mint gyártósoron |
| Speculatív párhuzamosítás | Több lehetséges út kipróbálása egyszerre |
10. Kihívások
- Versenyhelyzetek (race condition)
- Deadlock, livelock
- Debug nehézségek
- Skálázódás határai
- Load balancing – munkaegységek egyenletes elosztása
- Cache koherencia és memóriahierarchia kezelése
11. Modern trendek
- HPC (High Performance Computing) – szuperszámítógépek
- Heterogén számítás – CPU + GPU + FPGA együttműködés
- Párhuzamos gépi tanulás – TensorFlow, PyTorch GPU-n
- Edge computing – valós idejű párhuzamos feldolgozás IoT eszközökön
- Cloud computing – párhuzamos feldolgozás skálázható módon
12. Összefoglaló táblázat
| Fogalom | Leírás |
|---|---|
| Párhuzamos számítás | Egyidejű számítási egységek együttműködése |
| Megosztott memória | Szálak ugyanazon memóriát használják |
| Elosztott memória | Folyamatok saját memóriával rendelkeznek |
| OpenMP | C/C++ párhuzamosítás direktívákkal |
| MPI | Üzenetküldés alapú párhuzamos rendszer |
| Amdahl-törvény | A párhuzamosítás elméleti határa |
| SIMD, MIMD | Feldolgozási architektúrák |
| Speedup | Gyorsulás mértéke |
- parallel computing - Szótár.net (en-hu)
- parallel computing - Sztaki (en-hu)
- parallel computing - Merriam–Webster
- parallel computing - Cambridge
- parallel computing - WordNet
- parallel computing - Яндекс (en-ru)
- parallel computing - Google (en-hu)
- parallel computing - Wikidata
- parallel computing - Wikipédia (angol)