Párhuzamosítás használó program OpenMP

OpenMP - a könyvtár Fortran programozási nyelv, C, C ++, lehetővé teszi, hogy párhuzamosan fut kódrészlet többprocesszoros rendszerekben, illetve a feldolgozó HyperThreading. Épített gcc fordítóval verzió óta 4.2. Kifejlesztett aktív részvételével Intel, amelyért nagyon köszönöm.

Néhány szabály, hogyan kell aktiválni ezt a módot:

A párhuzamosítás lehet belépni a földön, azaz egy bizonyos blokk kerül végrehajtásra többször (a felhasználó által megadott), vagy hurkok. Az első esetben nem fogjuk megállítani, akkor olvassa el a OpenMP_talk bemutatót. Kitérünk csak párhuzamosítását hurkok.

Ebben a példában, a ciklus végrehajtásra kerül két stream, így lehetetlen előre meghatározni a sorrendet, amelyben az i változó történik a ciklus törzsének. Ezért szükséges, hogy megszabaduljon attól függően, az előző lépésben.

Például, ha van egy ilyen ciklus:

Meg kell átalakítható formában:

Nagyon gyakran találtam egy ilyen eset:

Részben ave felhalmozódik értékek és függ iteráció. Ha fut a program párhuzamos módban, akkor kapnak a különböző válaszokat. Ahogy én látom, az a tény, hogy annak érdekében, hogy hozzáadott értéket a változó ave A [i]. a memóriából a regiszter értékét átmásolja ave. foglalta, majd az új értéket a memóriában tárolt részét a változó. A kettő között az olvasás és írás más eljárás is rögzíthet új foglalta értéket, amely akkor fog veszni, és nem veszik figyelembe.

Elszámolása az esetben hívják csökkentése, valamint nyilvánították a következő változókkal:

Ezután minden egyes változó lista létrehozása és inicializáljuk a helyi másolási művelet szerinti op - +, *, - (páratlan és / nem) 0, 1, 0, ill. Miután ez a számítás együtt a helyi másolatát globális változót.

Így az előző példában a beírást a következő:

Ha azt szeretnénk, hogy egy véletlenszám-generátor a hurkon belül, hogy megy a párhuzamosítás, szükséges, hogy legyen nagyon óvatos, mert ha használják sorozata pszeudo-véletlen számok, akkor fedik egymást. Részletek vannak írva OpenMP_talk.

Tehát, ha készen áll a programozási ciklus párhuzamosság. Alapvető szabályok -, hogy megszabaduljon a függés az iteráció, kívánatos belül használni hurok csak lokális változók ciklus szorosan figyelemmel kíséri a feladatok globális változók (kiosztani ezeket az eseteket a csökkenés). Ügyeljen arra, hogy hasonlítsa össze az eredményeket előtt és után.

Figyelem! Én nehezen létrehozásával és törlésével dinamikus objektumok a hurkon belül, ezért javasoljuk, hogy ezeket az ügyleteket túl.

Optimális teljesítmény a számítógép!

Kapcsolódó cikkek