Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a fejezet a párhuzamos kód végrehajtását szabályozó OpenMP C és C++ API környezeti változókat (vagy hasonló platformspecifikus mechanizmusokat) ismerteti. A környezeti változók nevének nagybetűsnek kell lennie. A hozzájuk rendelt értékek nem érzékenyek a kis- és nagybetűkre, és előfordulhat, hogy kezdő és záró szóközzel rendelkeznek. A program elindítása utáni értékek módosításait figyelmen kívül hagyja a program.
A környezeti változók a következők:
- OMP_SCHEDULE beállítja a futásidejű ütemezés típusát és az adattömb méretét.
- OMP_NUM_THREADS beállítja a végrehajtás során használni kívánt szálak számát.
- OMP_DYNAMIC engedélyezi vagy letiltja a szálak számának dinamikus módosítását.
- OMP_NESTED engedélyezi vagy letiltja a beágyazott párhuzamosságot.
Az ebben a fejezetben szereplő példák csak azt mutatják be, hogy ezek a változók hogyan állíthatók be Unix C shell (csh) környezetekben. A Korn-rendszerhéjban és a DOS-környezetekben a műveletek hasonlóak:
csh:
setenv OMP_SCHEDULE "dynamic"
ksh:
export OMP_SCHEDULE="dynamic"
DOS:
set OMP_SCHEDULE="dynamic"
4.1 OMP_SCHEDULE
OMP_SCHEDULE csak azokra az for és parallel for irányelvekre vonatkozik, amelyek ütemezési típusa runtime. Az összes ilyen ciklus ütemezési típusa és adattömbmérete futásidőben állítható be. Állítsa be ezt a környezeti változót egy ismert ütemezési típusra és egy választható chunk_size-ra.
Az olyan irányelveknél, amelyek for-től eltérő ütemezési típussal rendelkeznek, parallel for figyelmen kívül van hagyva runtime és OMP_SCHEDULE esetében. Ennek a környezeti változónak az alapértelmezett értéke implementáció által definiált. Ha az opcionális chunk_size be van állítva, az értéknek pozitívnak kell lennie. Ha chunk_size nincs beállítva, a rendszer 1 értéket feltételez, kivéve, ha az ütemezés .static
static típusú ütemezés esetén az alapértelmezett adattömbméret a ciklus iterációs területének és a hurokra alkalmazott szálak számának hányadosa alapján kerül meghatározásra.
Példa:
setenv OMP_SCHEDULE "guided,4"
setenv OMP_SCHEDULE "dynamic"
Kereszthivatkozások
4.2 OMP_NUM_THREADS
A OMP_NUM_THREADS környezeti változó beállítja a végrehajtás során használni kívánt szálak alapértelmezett számát.
OMP_NUM_THREADS figyelmen kívül van hagyva, ha ezt a számot a omp_set_num_threads könyvtári rutin meghívásával explicit módon megváltoztatják. Azt is figyelmen kívül hagyja, ha van egy explicit num_threads záradék egy parallel irányelven.
A környezeti változó értékének OMP_NUM_THREADS pozitív egész számnak kell lennie. Hatása attól függ, hogy engedélyezve van-e a szálak számának dinamikus beállítása. A környezeti változó és a OMP_NUM_THREADS szálak dinamikus beállításának interakciójára vonatkozó átfogó szabálykészletért lásd a 2.3. szakaszt.
A használandó szálak száma implementációban van meghatározva, ha:
- a
OMP_NUM_THREADSkörnyezeti változó nincs megadva, - a megadott érték nem pozitív egész szám, vagy
- az érték nagyobb, mint a rendszer által támogatott szálak maximális száma.
Példa:
setenv OMP_NUM_THREADS 16
Kereszthivatkozások
- num_threads záradék
- omp_set_num_threads függvény
- omp_set_dynamic függvény
4.3 OMP_DYNAMIC
A OMP_DYNAMIC környezeti változó lehetővé teszi vagy letiltja a párhuzamos régiók végrehajtásához elérhető szálak számának dinamikus módosítását.
OMP_DYNAMIC a rendszer figyelmen kívül hagyja, ha a dinamikus beállítás explicit módon engedélyezve van vagy le van tiltva az erőforrástár rutinjának omp_set_dynamic meghívásával. Az értéknek TRUE-nak vagy FALSE-nak kell lennie.
Ha OMP_DYNAMIC be van állítva TRUE, a párhuzamos régiók végrehajtásához használt szálak számát a futtatókörnyezet módosíthatja a rendszererőforrások legjobb kihasználása érdekében. Ha OMP_DYNAMIC be van állítva FALSE, a dinamikus beállítás le van tiltva. Az alapértelmezett feltételt az implementáció határozza meg.
Példa:
setenv OMP_DYNAMIC TRUE
Kereszthivatkozások
- Párhuzamos régiók
- omp_set_dynamic függvény
4.4 OMP_NESTED
A OMP_NESTED környezeti változó engedélyezi vagy letiltja a beágyazott párhuzamosságot, kivéve, ha a beágyazott párhuzamosság engedélyezve van vagy le van tiltva a kódtár rutinjának omp_set_nested meghívásával. Ha OMP_NESTED be van állítva TRUE, a beágyazott párhuzamosság engedélyezve van. Ha OMP_NESTED be van állítva FALSE, a beágyazott párhuzamosság le van tiltva. Az alapértelmezett érték a FALSE.
Példa:
setenv OMP_NESTED TRUE
Kereszthivatkozás
- omp_set_nested függvény