Megosztás a következőn keresztül:


4. Környezeti változók

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_THREADS kö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

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

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