Back

ⓘ Párhuzamos számítástechnika. A párhuzamos számítástechnika a számítástechnika egy típusa, ahol a számításokat vagy folyamatokat egyidejűleg hajtják végre. A nag ..



Párhuzamos számítástechnika
                                     

ⓘ Párhuzamos számítástechnika

A párhuzamos számítástechnika a számítástechnika egy típusa, ahol a számításokat vagy folyamatokat egyidejűleg hajtják végre. A nagy problémákat gyakran fel lehet osztani kisebbekre, melyeket párhuzamosan lehet megoldani. A párhuzamos számítástechnikának többféle formája létezik: bitszintű, utasításszintű, adat- és feladat-párhuzamosság. A párhuzamosságot már régóta alkalmazzák a nagy teljesítményű számítástechnika területén, de szélesebb körű érdeklődést váltott ki a frekvenciaskálázás fizikai korlátai miatt. Mivel a számítógépek energiafogyasztása az utóbbi években aggodalomra ad okot, a párhuzamos számítástechnika a számítógép-architektúra meghatározó paradigmájává vált, főleg a többmagos processzorok formájában.

A párhuzamos számítástechnika szorosan kapcsolódik az egyidejű számítástechnikához – gyakran használják együtt és gyakran egymással felcserélve, bár a kettő különbözik egymástól: párhuzamosság létezhet egyidejűség nélkül például bitszintű párhuzamosság, és egyidejűség létezhet párhuzamosság nélkül például többfeladatosság egy egymagos processzoron az időosztás által. A párhuzamos számítástechnika során a számítási feladat jellemzően több, gyakran sok, nagyon hasonló alfeladatra bontható, amelyeket egymástól függetlenül lehet feldolgozni, és amelyek eredményeit a teljesítés után később egyesítik. Ezzel szemben az egyidejű számítástechnikában a különféle folyamatok gyakran nem foglalkoznak a kapcsolódó feladatokkal; az elosztott számítástechnikában az egyes feladatok változatos természetűek lehetnek és a végrehajtás során gyakran bizonyos folyamatok közötti kommunikációt igényelnek.

A párhuzamos számítógépeket nagyjából osztályozni lehet annak a szintnek az alapján, amelyen a hardver a párhuzamosságot támogatja: a többmagos és a többprocesszoros számítógépek esetében egyazon gépen több feldolgozóelem van, míg a fürtök, MPP-k és rácsszámítások több számítógépet használnak ugyanazon feladat elvégzéséhez. Speciális párhuzamos számítógép-architektúrákat alkalmaznak a hagyományos processzorok mellett bizonyos feladatok felgyorsítására.

Bizonyos esetekben a párhuzamosság átlátható a programozó számára, mint például a bitszintű vagy utasításszintű párhuzamosság, de kifejezetten a párhuzamos algoritmusok közül különösen azokat, amelyek egyidejűséget használnak, nehezebb megírni, mint szekvenciális társaikat, mivel az egyidejűség számos új potenciális szoftverhibát rejt, amelyek közül a versenyhelyzetek a leggyakoribbak. A különböző alfeladatok közötti kommunikáció és szinkronizálás általában a legnagyobb akadály az optimális párhuzamos programteljesítmény elérésében.

Egyetlen program gyorsulásának elméleti felső határát a párhuzamosítás eredményeként Amdahl törvénye adja meg.

                                     

1. Háttér

Hagyományosan a számítógépes szoftvereket soros számításra írták. Egy probléma megoldásához egy algoritmust állítanak össze és valósítanak meg soros utasításfolyamként. Ezeket az utasításokat egy számítógép központi feldolgozóegységén hajtják végre. Egyszerre csak egy utasítás hajtható végre – az utasítás befejezése után a következő kerül végrehajtásra.

A párhuzamos számítástechnika viszont több feldolgozóelemet használ egyszerre egy probléma megoldásához. Ezt úgy lehet elérni, hogy a problémát független részekre bontjuk, és mindegyik feldolgozóelem az algoritmus egy részét a többivel egyidejűleg hajtja végre. A feldolgozóelemek változatosak lehetnek és tartalmazhatnak olyan erőforrásokat, mint egy számítógép több processzorral, több hálózati számítógép, speciális hardver vagy az előbbiek bármelyikének kombinációi. A történelem során a párhuzamos számítástechnikát alkalmazták tudományos számításhoz és tudományos problémák szimulálásához, különösen a természettudomány és a műszaki tudományok, például a meteorológia területén. Ez a párhuzamos hardver és szoftver, valamint a nagy teljesítményű számítástechnika megtervezéséhez vezetett.

A frekvenciaskálázás volt a meghatározó oka a számítógépes teljesítmény javulásának az 1980-as évek közepétől 2004-ig. A program futási ideje megegyezik az utasítások számával szorozva az utasításonkénti átlagos idővel. Ha az órajelen kívül minden más állandó, akkor annak növelése csökkenti az egy utasítás végrehajtásához szükséges átlagos időt. A frekvencia növelése tehát csökkenti az összes processzorigényes program futási idejét. Ugyanakkor a processzor által adott P {\displaystyle P} energiafogyasztást a P = C ⋅ U 2 ⋅ F {\displaystyle P=C\cdot U^{2}\cdot F} egyenlet adja meg, ahol C {\displaystyle C} a kapacitás ciklusonként kapcsolva arányos azon tranzisztorok számával, amelyek bemenete változik, U {\displaystyle U} a feszültség és F {\displaystyle F} a processzor frekvenciája másodpercenkénti ciklusok száma. A frekvencia növelése növeli a processzorban felhasznált energiamennyiséget. A processzorok növekvő energiafogyasztása végül az Intel 2004. május 8-i Tejas és Jayhawk processzorainak megszüntetéséhez vezetett, amelyeket általában a frekvenciaskálázás végének tekintenek és az uralkodó számítógép-architektúra paradigmájának neveznek.

Az energiafogyasztás és a túlmelegedés problémájának kezelése érdekében a processzorgyártók elkezdték a többmagos, energiahatékony processzorok gyártását. A mag a processzor számítási egysége, a többmagos processzorokban minden mag független és ugyanahhoz a memóriához egyidejűleg fér hozzá. A többmagos processzorok párhuzamos számítástechnikát hoztak az asztali számítógépekbe. Így a soros programok párhuzamosítása vált a fő programozási feladattá. 2012-ben a négymagos processzorok szabványossá váltak az asztali számítógépekben, míg a szerverek 10 és 12 magos processzorokkal rendelkeztek. Moore törvénye kimondja, hogy a processzoronkénti magok száma 18–24 hónaponként megduplázódik. Ez azt jelentheti, hogy 2020 után egy tipikus processzor tucatnyi vagy száz maggal rendelkezik.

Az operációs rendszer biztosítja, hogy a különféle feladatok és felhasználói programok párhuzamosan fussanak a rendelkezésre álló magokon. Ahhoz azonban, hogy egy soros program teljes mértékben kihasználhassa a többmagos architektúrát, a programozónak kell átszerkesztenie és párhuzamosítania a kódot. Az alkalmazások futtatásának gyorsítását már nem lehet frekvenciaskálázással elérni, hanem a programozóknak kell párhuzamosítaniuk a szoftverkódjukat, hogy kihasználhassák a többmagos architektúrák növekvő számítási teljesítményét.

                                     

1.1. Háttér Amdahl törvénye és Gustafson törvénye

Optimális esetben a párhuzamosítástól való gyorsulás lineáris lenne – a feldolgozóelemek számának megkétszerezésével a futási időt a felére, második alkalommal történő megkétszerezésére pedig ismét a felére kellene csökkenteni. Azonban nagyon kevés párhuzamos algoritmus éri el az optimális gyorsulást. Legtöbbjüknél csaknem lineáris sebességnövekedés tapasztalható kisszámú feldolgozóelem esetében, amely állandó értékké válik nagyszámú feldolgozóelem esetén.

Az algoritmus várható gyorsulását egy párhuzamos számítási platformon Amdahl törvénye adja meg:

S latency s = 1 − p + p s, {\displaystyle S_{\text{latency}}s={\frac {1}{1-p+{\frac {p}{s}}}},}

ahol

  • S latency {\displaystyle S_{\text{latency}}} a végrehajtás késleltetésének lehetséges gyorsulása az egész feladat esetében;
  • p {\displaystyle p} a feladat párhuzamosítható részének végrehajtási ideje a párhuzamosítás előtt a teljes feladat végrehajtási idejének százalékában.
  • s {\displaystyle s} a végrehajtás késleltetésének lehetséges gyorsulása a feladat párhuzamosítható része esetében;

Mivel az S latency < 1 − p {\displaystyle S_{\text{latency}} 1). Ezeket a processzorokat szuperskaláris processzoroknak nevezzük. Az utasításokat csak akkor lehet csoportosítani, ha nincs adatfüggőség közöttük. A scoreboarding és a Tomasulo-algoritmus amely hasonló az scoreboardinghoz, de a regiszterek átnevezését használja a két leggyakoribb módszer a soron kívüli végrehajtás és az utasításszintű párhuzamosság megvalósításához.

                                     

1.2. Háttér Feladat-párhuzamosság

A feladat-párhuzamosság egy párhuzamos program azon jellemzője, hogy "teljesen eltérő számítások végezhetők ugyanazon vagy különböző adatkészleteken”. Ez ellentétben áll az adat-párhuzamossággal, amikor ugyanazt a számítást hajtják végre ugyanazon vagy különböző adatkészleteken. A feladat-párhuzamosság magában foglalja egy feladat alfeladatokra bontását, majd az egyes alfeladatok kiosztását egy processzor számára végrehajtás céljából. A processzorok ezután ezeket az alfeladatokat egyidejűleg és gyakran együttműködve hajtják végre. A feladat-párhuzamosság általában nem egyezik meg a probléma méretével.

                                     

1.3. Háttér Szuperszószintű párhuzamosság

A szuperszószintű párhuzamosság egy vektorizálási technika, amely cikluskifejtésen és alapvető blokkvektorizáláson alapul. Ez abban különbözik a ciklusvektorizációs algoritmusoktól, hogy ki tudja használni a soros kód párhuzamosságát, például a koordináták, a színcsatornák vagy a kézzel kifejtett ciklusok kezelését.

                                     

2.1. Hardver Memória és kommunikáció

A párhuzamos számítógép főmemóriája vagy közös memória az összes feldolgozóelem között megosztva egyetlen címtérben, vagy elosztott memória amelyben minden feldolgozóelemnek megvan a saját helyi címtere. Az elosztott memória arra a tényre utal, hogy a memória logikailag van elosztva, de gyakran azt jelenti, hogy fizikailag is eloszlik. Az osztott közös memória és a memóriavirtualizáció kombinálja a két megközelítést, ahol a feldolgozóelemnek saját helyi memóriája van, és a memóriahoz nem helyi processzorok férhetnek hozzá. A helyi memória elérése általában gyorsabb, mint a nem helyi memória elérése. A szuperszámítógépekben az osztott közös memóriaterület a programozási modell segítségével, például osztott globális címtér használatával valósítható meg. Ez a modell lehetővé teszi az egyik számítási csomóponton lévő folyamatok számára, hogy átlátható módon hozzáférjenek egy másik számítási csomópont távoli memóriájához. Az összes számítási csomópont nagy sebességű összeköttetésen keresztül, például InfiniBand segítségével egy külső közösmemória-rendszerhez is csatlakozik. Ezt a külső közösmemória-rendszert burst puffernek nevezik, amely általában nem felejtő memória tömbjeiből épül fel, fizikailag elosztva több bemeneti/kimeneti csomópont között.

Azokat a számítógép-architektúrákat, amelyekben a főmemória minden eleméhez azonos késleltetéssel és sávszélességgel lehet hozzáférni, egységes memória-hozzáférésű UMA rendszereknek nevezzük. Általában ezt csak egy közösmemória-rendszerrel lehet elérni, amelyben a memória fizikailag nincs elosztva. Azt a rendszert, amely nem rendelkezik ezzel a tulajdonsággal, nem egységes memória-hozzáférésű NUMA architektúrának nevezik. Az elosztottmemória-rendszerek nem egységes memória-hozzáféréssel rendelkeznek.

A számítógépes rendszerek gyorsítótárakat használnak – a processzor közelében található kis és gyors memóriákat, amelyek ideiglenes memóriaértékeket tárolnak fizikai és logikai értelemben is egyaránt közel vannak. A párhuzamos számítógépes rendszereknek nehézségeik vannak olyan gyorsítótárakkal, amelyek ugyanazt az értéket egynél több helyen tárolhatják, a program helytelen végrehajtásának lehetőségével. Ezeknek a számítógépeknek gyorsítótárkoherencia-rendszerre van szükségük, amely nyomon követi a gyorsítótárazott értékeket, és stratégiailag megtisztítja azokat, garantálva ezzel a program helyes végrehajtását. A buszfigyelés az egyik leggyakoribb módszer annak nyomon követésére, hogy mely értékekhez férnek hozzá és ezért meg kell tisztítani. Nagy teljesítményű gyorsítótárkoherencia-rendszerek tervezése nagyon nehéz probléma a számítógép-architektúrában. Ennek eredményeként a közös memória számítógép-architektúrái nem olyan nagy léptékűek, mint az elosztottmemória-rendszerek.

A processzor–processzor és a processzor–memória kommunikációt sokféle módon megvalósíthatjuk a hardverben, többek között közös multiportált vagy multiplexelt memória, keresztkapcsoló, megosztott busz vagy összekapcsolt hálózat révén számos topológiával, beleértve a csillagot, gyűrűt, fát, hiperkockát, kövér hiperkockát egy csomóponton egynél több processzort tartalmazó hiperkocka vagy n dimenziós hálót.

Az összekapcsolt hálózatokon alapuló párhuzamos számítógépeknek valamilyen útválasztással kell rendelkezniük, hogy lehetővé tegyék az üzenetek továbbítását a közvetlenül nem csatlakozó csomópontok között. A processzorok közötti kommunikációhoz használt közeg valószínűleg hierarchikus lesz a nagy többprocesszoros gépekben.



                                     

2.2. Hardver A párhuzamos számítógépek osztályai

A párhuzamos számítógépeket nagyjából osztályozhatjuk azon szint alapján, amelyen a hardver a párhuzamosságot támogatja. Ez a besorolás nagyjából hasonló az alapvető számítási csomópontok közötti távolsággal. Ezek nem zárják ki egymást; például a szimmetrikus többprocesszoros rendszerekből álló fürtök viszonylag gyakoriak.

                                     

2.3. Hardver Többmagos számítástechnika

A többmagos processzor több feldolgozóegységet úgynevezett "magokat” foglal magában ugyanazon a chipen. Ezek a processzorok különböznek a szuperskaláris processzoroktól, amelyek több végrehajtóegységet tartalmaznak, és ciklusonként több utasítást adhatnak ki egy utasításfolyamból szálból; ezzel szemben a többmagos processzorok ciklusonként több utasítást adhatnak ki több utasításfolyamból. Az IBM Cell mikroprocesszorát a Sony PlayStation 3-ban való használatra tervezték, egy kiemelkedő többmagos processzorként. A többmagos processzorok minden magja potenciálisan szuperskaláris is lehet, azaz ciklusonként minden egyes mag több utasítást adhat ki egy szálból.

Az egyidejű többszálú utasításvégrehajtás amelyek közül az Intel Hyper-Threading a legismertebb a pseudo-multi-coreism korai formája volt. Az egyidejű többszálú utasításvégrehajtásra képes processzorok több végrehajtóegységet tartalmaznak ugyanabban a feldolgozóegységben – azaz szuperskaláris architektúrával rendelkeznek –, és ciklusonként több utasítást adhatnak ki több szálból. Az időszakos többszálú utasításvégrehajtás ugyanakkor egyetlen végrehajtóegységet foglal magában ugyanabban a feldolgozóegységben, és egyszerre egy utasítást adhat ki több szálból.



                                     

2.4. Hardver Szimmetrikus többprocesszoros feldolgozás

A szimmetrikus többprocesszoros rendszer SMP több azonos processzorral rendelkezik, amelyek megosztják a memóriát és buszon keresztül csatlakoznak. A buszviszály megakadályozza a buszarchitektúrák méretezését. Ennek eredményeként az SMP-k általában legfeljebb 32 processzort tartalmaznak. A processzorok kis mérete és a nagy gyorsítótárak révén a buszsávszélességre vonatkozó követelmények jelentős csökkenése miatt az ilyen szimmetrikus többprocesszoros rendszerek rendkívül költséghatékonyak, feltéve, hogy elegendő mennyiségű memória-sávszélességgel rendelkeznek.

                                     

2.5. Hardver Elosztott számítástechnika

Az elosztott számítógép elosztott memóriával rendelkező számítógépes rendszer, amelyben a feldolgozóelemek hálózattal vannak összekötve. Az elosztott számítógépek nagymértékben bővíthetők. Az "egyidejű számítástechnika”, a "párhuzamos számítástechnika” és az "elosztott számítástechnika” kifejezések nagymértékben átfedik egymást, és közöttük nincs világos különbségtétel. Ugyanaz a rendszer jellemezhető "párhuzamos” és "elosztott” formában is; egy tipikus elosztott rendszerben a processzorok párhuzamosan futnak.

                                     

2.6. Hardver Számítógépfürtök

A fürt lazán kapcsolt számítógépek olyan csoportja, amelyek szorosan együttműködnek egymással, így bizonyos szempontból egyetlen számítógépnek tekinthetők. A fürtök több önálló gépből állnak, amelyeket egy hálózat csatlakoztat. A fürtökben lévő gépeknek nem kell szimmetrikusnak lenniük, azonban a terheléselosztás sokkal nehezebb, ha nem azok. A leggyakoribb fürttípus a Beowulf cluster, amely egy TCP/IP Ethernet helyi hálózathoz csatlakoztatott, több azonos kereskedelmi forgalomban kapható számítógépen valósul meg. A Beowulf technológiát eredetileg Thomas Sterling és Donald Becker fejlesztette ki. A TOP500 rangsor szuperszámítógépei közül 87% fürt. A fennmaradók masszívan párhuzamos processzorok, amelyeket az alábbiakban ismertetünk.

Mivel a rácsszámítási rendszerek alább leírtak könnyen kezelhetik a zavarba ejtően párhuzamos problémákat, a modern fürtöket általában a nehezebb problémák kezelésére tervezték – olyan problémák, amelyek megkövetelik a csomópontoknak, hogy gyakrabban osszák meg a közbenső eredményeket. Ehhez nagy sávszélességre van szükség, és ami még fontosabb, egy alacsony késleltetésű összekapcsolási hálózatra. Számos történelmi és jelenlegi szuperszámítógép, például a Cray Gemini hálózat, kifejezetten a fürtszámításhoz tervezett, nagy teljesítményű hálózati hardvert használ. 2014-től a legtöbb jelenlegi szuperszámítógép néhány szabványos hálózati hardvert használ, gyakran Myrinet, InfiniBand vagy Gigabit Ethernet eszközt.



                                     

2.7. Hardver Masszívan párhuzamos számítástechnika

A masszívan párhuzamos processzor MPP egyetlen számítógép sok hálózati processzorral. Az MPP-k ugyanolyan tulajdonságokkal rendelkeznek, mint a fürtök, de speciális összekapcsolási hálózatokkal rendelkeznek míg a fürtök kereskedelmi forgalomban kapható hardvert használnak a hálózathoz. Az MPP-k általában nagyobbak is, mint a fürtök, jellemzően "sokkal több” mint 100 processzor. Egy MPP-ben "minden processzor tartalmazza a saját memóriáját, valamint az operációs rendszer és az alkalmazás másolatát. Minden alrendszer nagysebességű összeköttetésen keresztül kommunikál a többiekkel.”

A TOP500 rangsor szerint 2009 júniusában a világon az ötödik leggyorsabb szuperszámítógép az IBM Blue Gene/L volt, mely egy MPP.

                                     

2.8. Hardver Rácsszámítások

A rácsszámítás a párhuzamos számítástechnika legelterjedtebb formája. Az interneten keresztül kommunikáló számítógépeket használ egy adott probléma megoldására. Az interneten elérhető alacsony sávszélesség és rendkívül magas késleltetés miatt az elosztott számítástechnika általában csak zavarba ejtően párhuzamos problémákkal foglalkozik. Számos elosztott számítástechnikai alkalmazást hoztak létre, amelyek közül a legismertebbek a SETI home és a Folding home.

A legtöbb rácsszámító alkalmazás köztes szoftvert használ olyan szoftvert, amely az operációs rendszer és az alkalmazás között helyezkedik el a hálózati erőforrások kezelésére és a szoftver interfészének szabványosítására. A leggyakoribb elosztott számítástechnikai köztes szoftver a Berkeley Open Infrastructure for Network Computing BOINC. Az elosztott számítástechnikai szoftverek gyakran "tartalék ciklusokat” használnak, és számításokat végeznek olyankor, amikor a számítógép tétlen.

                                     

2.9. Hardver Speciális párhuzamos számítógépek

A párhuzamos számítástechnikán belül vannak olyan speciális párhuzamos eszközök, amelyek továbbra is érdekes területeken maradnak. Noha nem szakterület-specifikusak, hajlamosak a párhuzamos problémák csak néhány osztályára alkalmazni.

                                     

2.10. Hardver Újrakonfigurálható számítás a felhasználás helyén programozható logikai kapumátrixokkal

Az újrakonfigurálható számítás egy felhasználás helyén programozható logikai kapumátrix FPGA felhasználása mint egy általános célú számítógép társprocesszora. Az FPGA lényegében egy számítógépes chip, amely képes újratervezni magát egy adott feladatra.

Az FPGA-k programozhatók olyan hardverleíró nyelvekkel mint a VHDL vagy a Verilog. Ezeken a nyelveken történő programozás azonban unalmas lehet. Számos gyártó hozott létre C to HDL nyelveket, amelyek megkísérelik a C programozási nyelv szintaxisát és szemantikáját utánozni, amelyeket a legtöbb programozó ismer. A legismertebb C to HDL nyelvek a Mitrion-C, az Impulse C, a DIME-C és a Handel-C. Erre a célra a SystemC C++ alapú meghatározott részhalmazai is használhatók.

Az AMD azon döntése, hogy HyperTransport technológiáját más gyártók számára megnyitja, vált a nagy teljesítményű, újrakonfigurálható számítástechnikát lehetővé tévő technológiává. Michael R. D’Amour, a DRC Computer Corporation vezérigazgató-helyettese szerint: "amikor először sétáltunk be az AMD-hez" foglalatlopóknak "hívtak minket. Most partnereinknek hívnak minket.”

                                     

2.11. Hardver Általános célú számítástechnika grafikus feldolgozóegységeken GPGPU

Az általános célú számítástechnika grafikus feldolgozóegységeken GPGPU meglehetősen új tendencia a számítógépes mérnöki kutatásokban. A GPU-k olyan társprocesszorok, amelyeket erősen optimalizáltak a számítógépes grafika feldolgozására. A számítógépes grafikus feldolgozás olyan terület, amelyben az adatpárhuzamos műveletek dominálnak – különösen a lineáris algebrai mátrixműveletek.

A kezdeti napokban a GPGPU programok a szokásos grafikus API-kat használták a programok végrehajtására. Ugyanakkor számos új programozási nyelv és platform épült általános célú számítások elvégzéséhez GPU-n mind az Nvidia, mind az AMD által kiadott programozási környezetekkel, a CUDA és a Stream SDK segítségével. Egyéb GPU programozási nyelvek a BrookGPU, a PeakStream és a RapidMind. Az Nvidia a Tesla sorozatban is kiadott speciális termékeket számításhoz. A Khronos Group technológiai konzorcium kiadta az OpenCL specifikációt, amely keretrendszer olyan programok írására, amelyeket CPU-kból és GPU-kból álló platformon keresztül hajtanak végre. Az AMD, az Apple, az Intel, az Nvidia és még mások is támogatják az OpenCL-t.

                                     

2.12. Hardver Alkalmazásspecifikus integrált áramkörök

Számos alkalmazásspecifikus integrált áramköri ASIC megközelítést dolgoztak ki a párhuzamos alkalmazások kezelésére.

Mivel az ASIC definíció szerint egy adott alkalmazásra jellemző, ezért teljes mértékben optimalizálható az adott alkalmazás számára. Ennek eredményeként egy adott alkalmazás esetén az ASIC általában jobb, mint egy általános célú számítógép. Az ASIC-eket azonban UV fotolitográfia hozza létre. Ehhez a folyamathoz maszkkészlet szükséges, amely rendkívül költséges lehet. Egy maszkkészlet több mint egymillió dollárba kerülhet. Minél kisebbek a chiphez szükséges tranzisztorok, annál drágább lesz a maszk. Eközben az általános célú számítástechnika teljesítményének növekedése az idő múlásával ahogyan azt Moore törvénye leírja hajlamos arra, hogy ezeket az előnyöket csak egy vagy két chipgeneráció alatt törölje el. A magas kezdeti költség és a Moore törvénye által vezérelt általános célú számítástechnika túllépésének tendenciája az ASIC-eket a legtöbb párhuzamos számítástechnikai alkalmazás számára megvalósíthatatlanná tette. Néhányat azonban építettek. Példa erre a PFLOPS RIKEN MDGRAPE-3 gépe, amely egyedi ASIC-eket használ molekuláris dinamikai szimulációhoz.

                                     

2.13. Hardver Vektorprocesszorok

A vektorprocesszor egy processzor vagy számítógépes rendszer, amely ugyanazt az utasítást képes végrehajtani nagy adatsorokon. A vektorprocesszorok magas szintű műveleteket végeznek, amelyek számok vagy vektorok lineáris tömbjein működnek. Példa vektorműveletre az A = B ⋅ C {\displaystyle A=B\cdot C}, ahol A {\displaystyle A}, B {\displaystyle B} és C {\displaystyle C} mindegyike 64 bites lebegőpontos számok 64 elemű vektorja. Ezek szorosan kapcsolódnak Flynn SIMD besorolásához.

A Cray számítógépek az 1970-es és 1980-as években váltak híressé vektorfeldolgozó számítógépeikkel. Ugyanakkor a vektorprocesszorok – mind processzorként, mind pedig teljes számítógépes rendszerként – általánosságban eltűntek. A modern processzor-utasításkészletek tartalmaznak néhány vektorfeldolgozási utasítást, például a Freescale Semiconductor AltiVec és az Intel Streaming SIMD Extensions SSE.

                                     

3.1. Szoftver Párhuzamos programozási nyelvek

Egyidejű programozási nyelvek, könyvtárak, API-k és párhuzamos programozási modellek például algoritmikus vázlatok készültek a párhuzamos számítógépek programozására. Ezeket általában osztályokra lehet bontani az alapul szolgáló memóriaarchitektúrára vonatkozó feltételezések alapján – közös memória, elosztott memória vagy osztott közös memória. A közös memória programozási nyelvei a közös memória változóinak manipulálásával kommunikálnak. Az elosztott memória az üzenettovábbítást használja. A POSIX Threads és az OpenMP a legszélesebb körben használt közös memória API-k, míg a Message Passing Interface MPI a legszélesebb körben használt üzenettovábbító rendszer API. A párhuzamos programok programozásában alkalmazott egyik koncepció a jövőbeli koncepció, ahol a program egyik része ígéretet tesz arra, hogy a szükséges adatot egy későbbi időpontban a program egy másik részéhez továbbítja.

A CAPS entreprise és a Pathscale szintén összehangolják azon törekvéseiket, hogy a hibrid többmagos párhuzamos programozási HMPP irányelveket OpenHMPP néven hozzák létre. Az OpenHMPP irányelvalapú programozási modell szintaxist kínál a számítások hatékony eltávolításához a hardveres gyorsítókon, és optimalizálja az adatok mozgását a hardveres memóriából/memóriába. Az OpenHMPP irányelvek távoli eljáráshívást RPC írnak le egy gyorsítóeszközön pl. GPU vagy általánosságban egy magkészletnél. Az irányelvek C vagy Fortran kódot használnak a funkcionalitások két csoportjának leírására: az eljárások codeletek távoli eszközre történő letöltése, és az adatátvitel optimalizálása a processzor főmemóriája és a gyorsítómemória között.

A fogyasztói GPU-k növekedése a compute kernelek támogatásához vezetett, akár a grafikai API-kban más néven compute shaderek, dedikált API-kban például OpenCL vagy más nyelvbővítményekben.

                                     

3.2. Szoftver Automatikus párhuzamosítás

Egy szekvenciális program automatikus párhuzamosítása egy fordító által a párhuzamos számítástechnika "szent grálja”, különösen a processzor frekvenciájának fent említett korlátja mellett. A kutatók évtizedes munkája ellenére az automatikus párhuzamosítás csak korlátozott sikerrel járt.

A gyakori párhuzamos programozási nyelvek kifejezetten párhuzamosak vagy legjobb esetben részben rejtetten párhuzamosak maradnak, amelyben a programozó megadja a fordító irányelveit a párhuzamosításhoz. Néhány teljesen rejtett párhuzamos programozási nyelv létezik – SISAL, Parallel Haskell, SequenceL, SystemC FPGA-k számára, Mitrion-C, VHDL és Verilog.

                                     

3.3. Szoftver Ellenőrzőpont-képzés alkalmazásokban

Ahogy egy számítógépes rendszer bonyolultabbá válik, a hibák közötti átlagos idő általában csökken. Az ellenőrzőpont-képzés egy olyan módszer, amellyel a számítógépes rendszer az alkalmazás "pillanatfelvételét” készíti el – az összes aktuális erőforrás-elosztásról és a változó állapotokról, hasonlóan a memóriaképhez –; ezek az információk felhasználhatók a program visszaállítására, ha a számítógép meghibásodik. Az ellenőrzőpont-képzés azt jelenti, hogy a programnak a kezdeti helyett csak az utolsó ellenőrzési pontról kell újraindulnia. Noha az ellenőrzőpont-képzés a különféle helyzetekben előnyöket nyújt, különösen hasznos a nagy teljesítményű számítástechnikában, ahol a masszívan párhuzamos rendszerek nagyszámú processzort használnak.

                                     

4. Algoritmikus módszerek

Ahogy a párhuzamos számítógépek egyre nagyobbá és gyorsabbá válnak, most már képesek vagyunk megoldani azokat a problémákat, amelyek futása korábban túl sokáig tartott. Az olyan változatos területek mint a bioinformatika fehérjehajtogatás és szekvenciaelemzés és a közgazdaságtan a pénzügyi matematika szempontjából kihasználták a párhuzamos számítástechnika lehetőségeit. A párhuzamos számítástechnikai alkalmazások általános problémái a következők:

  • szabálytalanrács-problémák például végeselemes módszerek,
  • sűrű lineáris algebra,
  • kombinációs hálózat például brute force kriptográfiai technikák,
  • szabályosrács-problémák például Lattice-Boltzmann-módszerek,
  • Monte-Carlo-módszer,
  • n -test probléma például Barnes–Hut-algoritmus,
  • elágazás és korlátozás módszerek,
  • végállapotú gépek szimulációja.
  • gráfbejárás például rendezési algoritmusok,
  • grafikus modellek például rejtett Markov-modellek észlelése és Bayes-hálók építése,
  • spektrális módszerek például Cooley–Tukey-algoritmus,
  • dinamikus programozás,
  • ritka lineáris algebra,
                                     

5. Hibatűrés

A párhuzamos számítástechnika alkalmazható hibatűrő számítógépes rendszerek tervezésére is, különösen az azonos műveletet párhuzamosan végrehajtó lockstep-rendszerek segítségével. Ez redundanciát biztosít az egyik összetevő meghibásodása esetén, és lehetővé teszi az automatikus hibaészlelést és hibajavítást, ha az eredmények eltérnek. Ezek a módszerek felhasználhatók az átmeneti hibák által okozott egyszeri események megelőzésére. Bár kiegészítő intézkedésekre lehet szükség a beágyazott vagy speciális rendszerekben, ez a módszer költséghatékony megközelítést jelenthet az n-moduláris redundancia elérése érdekében a kereskedelemben kapható rendszerekben.

                                     

6. Előzmények

Az igazi MIMD párhuzamosság eredete visszamegy Luigi Federico Menabrea és a Sketch of the Analytical Engine Invented by Charles Babbage Charles Babbage által feltalált analitikus gép vázlata című könyvéhez.

1958 áprilisában Stanley Gill Ferranti megvitatta a párhuzamos programozást, valamint az elágazás és a várakozás szükségességét. 1958-ban az IBM kutatói, John Cocke és Daniel Slotnick is először tárgyalták a párhuzamosság alkalmazását a numerikus számításokban. A Burroughs Corporation 1962-ben mutatta be a D825-öt, egy négyprocesszoros számítógépet, amely keresztkapcsolón keresztül akár 16 memóriamodult is elérhet. 1967-ben Amdahl és Slotnick vitát tett közzé a párhuzamos feldolgozás megvalósíthatóságáról az Információs Feldolgozó Társaságok Amerikai Szövetsége konferencián. E vita során fogalmazta meg Amdahl törvényét, hogy meghatározza a párhuzamosság miatti sebességhatárt.

1969-ben a Honeywell bemutatta első Multics rendszerét, egy szimmetrikus többprocesszoros rendszert, amely képes akár nyolc processzor párhuzamos futtatására. A C.mmp a 70-es években a Carnegie Mellon Egyetemen működő többprocesszoros projekt egyike volt az első többprocesszoros rendszernek, több mint néhány processzorral. Az első busszal kapcsolt többprocesszoros rendszer figyelt gyorsítótárakkal a Synapse N+1 volt 1984-ben.

A SIMD párhuzamos számítógépek az 1970-es évekre vezethetők vissza. A korai SIMD számítógépek mögött a motiváció az volt, hogy a processzor vezérlőegységének kapukésését több utasítás felett csökkentsék. 1964-ben Slotnick javaslatot tett egy masszívan párhuzamos számítógép felépítésére a Lawrence Livermore Nemzeti Laboratórium számára. Tervezését az amerikai légierő támogatta, amely a legkorábbi SIMD párhuzamos számítástechnikai erőfeszítés volt, ILLIAC IV néven. A tervezés kulcsa egy meglehetősen nagy párhuzamosság volt, akár 256 processzorral, amely lehetővé tette a gép számára, hogy nagy adatkészleteken dolgozzon, amit később vektorfeldolgozásnak neveznek. Az ILLIAC IV-et azonban "a szuperszámítógépek leghírhedtebbikének” nevezték, mivel a projekt csak egynegyede fejeződött be, de 11 évig tartott, és az eredeti becslés majdnem négyszeresébe került. Amikor 1976-ban végre készen állt az első valódi alkalmazás futtatására, azt a meglévő kereskedelmi szuperszámítógépek, mint például a Cray-1, felülmúlták.

                                     

7. Biológiai agy mint masszívan párhuzamos számítógép

Az 1970-es években, az MIT Számítástudományi és Mesterséges Intelligencia Laboratóriumban Marvin Minsky és Seymour Papert fejlődésnek indította a Society of Mind elméletet, amely a biológiai agyat mint masszívan párhuzamos számítógép látja. Minsky 1986-ban publikálta a The Society of Mind című könyvét, amely azt állítja, hogy "az elme sok kis ágensből áll, amelyek önmagukban értelmetlenek”. Az elmélet megkísérli megmagyarázni, hogy amit intelligenciának nevezünk, miként lehet nem intelligens részek kölcsönhatásának a terméke. Minsky elmondja, hogy az elmélettel kapcsolatos ötletek legnagyobb forrása az a munkája volt, hogy megpróbált olyan gépet létrehozni, amely robotkar, videókamera és számítógép segítségével építkezik építőkockákból.

Hasonló modelleket amelyek ugyancsak a biológiai agyat masszívan párhuzamos számítógépnek tekintik, azaz az agy független vagy részben független ágensekből áll írnak le:

  • Thomas R. Blakeslee,
  • Neurocluster Brain Model.
  • Michio Kaku,
  • Ernest Hilgard,
  • George Ivanovich Gurdjieff,
  • Michael S. Gazzaniga,
  • Robert E. Ornstein,
                                     

8. Fordítás

  • Ez a szócikk részben vagy egészben a Parallel computing című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
                                     

9. További információk

  • 2008. augusztus 29. "Asynchronous team algorithms for Boolean Satisfiability”. Bio-Inspired Models of Network, Information and Computing Systems, 2007. Bionetics 2007. 2nd, 66–69. o. DOI:10.1109/BIMNICS.2007.4610083.
  • Sechin, A.; Parallel Computing in Photogrammetry. GIM International. #1, 2016, pp. 21–23.
                                     

10. Külső hivatkozások

  • Course in Parallel Programming at Columbia University in collaboration with IBM T.J. Watson X10 project
  • Parallel processing topic area at IEEE Distributed Computing Online
  • Parallel Computing Works Free On-line Book
  • Coursera: Parallel Programming
  • The trouble with multicore, by David Patterson, posted 30 Jun 2010
  • Introduction to Parallel Computing
  • Universal Parallel Computing Research Center
  • Lawrence Livermore National Laboratory: Introduction to Parallel Computing
  • Frontiers of Supercomputing Free On-line Book Covering topics like algorithms and industrial applications
  • Course in Parallel Computing at University of Wisconsin-Madison
  • Instructional videos on CAF in the Fortran Standard by John Reid see Appendix B
  • The Landscape of Parallel Computing Research: A View From Berkeley one too many dead link at this site
  • Berkeley Par Lab: progress in the parallel computing landscape, Editors: David Patterson, Dennis Gannon, and Michael Wrinn, August 23, 2013
  • Parallel and distributed Gröbner bases computation in JAS
  • Designing and Building Parallel Programs, by Ian Foster
  • Internet Parallel Computing Archive
Free and no ads
no need to download or install

Pino - logical board game which is based on tactics and strategy. In general this is a remix of chess, checkers and corners. The game develops imagination, concentration, teaches how to solve tasks, plan their own actions and of course to think logically. It does not matter how much pieces you have, the main thing is how they are placement!

online intellectual game →