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


E. Implementáció által definiált viselkedések az OpenMP C/C++ alkalmazásban

Ez a függelék összefoglalja az API-ban "implementálás által definiáltként" leírt viselkedéseket. Az egyes viselkedések kereszthivatkozással vissza lesznek hivatkozva a fő specifikációban szereplő leírásra.

Megjegyzések

Ezekben az esetekben egy implementációra van szükség a viselkedés meghatározásához és dokumentálásához, de előfordulhat, hogy ez a lista hiányos.

  • Szálak száma: Ha párhuzamos régióba ütközik, miközben a szálak számának dinamikus beállítása le van tiltva, és a párhuzamos régióhoz kért szálak száma meghaladja a futásidejű rendszer által megadható számot, a program viselkedése implementálási definícióval rendelkezik (lásd a 9. oldalt).

    A Visual C++-ban, nem beágyazott párhuzamos régió esetén a maximális 64 szál lesz megadva.

  • Processzorok száma: A szálakat egy adott időpontban ténylegesen üzemeltető fizikai processzorok száma implementálás által meghatározott (lásd a 10. oldalt).

    A Visual C++-ban ez a szám nem állandó, és az operációs rendszer szabályozza.

  • Szálakból álló csoportok létrehozása: A beágyazott párhuzamos régiót végrehajtó csapatok szálainak száma implementációalapú (lásd: 10. oldal).

    A Visual C++-ban ezt a számot az operációs rendszer határozza meg.

  • schedule(runtime): Az ütemezéssel kapcsolatos döntés a futási időpontig halasztható. Az ütemezés típusa és az adattömb mérete futtatáskor választható ki a OMP_SCHEDULE környezeti változó beállításával. Ha ez a környezeti változó nincs beállítva, az eredményként kapott ütemezés implementációban van definiálva (lásd a 13. oldalt).

    A Visual C++-ban az static ütemezés típusa nem rendelkezik adattömbmérettel.

  • Alapértelmezett ütemezés: Az ütemezési záradék hiányában az alapértelmezett ütemezés implementációban van definiálva (lásd: 13. oldal).

    A Visual C++-ban az alapértelmezett ütemezési típus static, darabméret nélkül.

  • ATOMI: Azt határozza meg, hogy egy implementáció az összes atomic irányelvet lecseréli-e az azonos egyedi névvel rendelkező irányelvekre critical (lásd a 20. oldalt).

    A Visual C++-ban, ha az atomi módosítással módosított adatok nem természetes igazításon alapulnak, vagy ha egy vagy két bájt hosszúak, az adott tulajdonságnak megfelelő összes atomi művelet egy kritikus szakaszt fog használni. Ellenkező esetben a kritikus szakaszok nem lesznek használatban.

  • omp_get_num_threads: Ha a felhasználó nem állította be explicit módon a szálak számát, az alapértelmezett érték a implementációban van definiálva (lásd: 9. oldal).

    A Visual C++-ban a szálak alapértelmezett száma megegyezik a processzorok számával.

  • omp_set_dynamic: A dinamikus szál beállításának alapértelmezett beállítása implementáció által definiált.

    A Visual C++-ban az alapértelmezett érték a .FALSE

  • omp_set_nested: Ha engedélyezve van a beágyazott párhuzamosság, a beágyazott párhuzamos régiók végrehajtásához használt szálak száma implementálási definícióval van meghatározva.

    A Visual C++-ban a szálak számát az operációs rendszer határozza meg.

  • OMP_SCHEDULE környezeti változó: Ennek a környezeti változónak az alapértelmezett értéke implementálási definíció.

    A Visual C++-ban az static ütemezés típusa nem rendelkezik adattömbmérettel.

  • OMP_NUM_THREADS környezeti változó: Ha nincs megadva érték a OMP_NUM_THREADS környezeti változóhoz, vagy ha a megadott érték nem pozitív egész szám, vagy ha az érték nagyobb, mint a rendszer által támogatott szálak maximális száma, akkor a használandó szálak száma implementálási módon van meghatározva.

    A Visual C++-ban, ha a megadott érték nulla vagy kisebb, a szálak száma megegyezik a processzorok számával. Ha az érték nagyobb, mint 64, a szálak száma 64.

  • OMP_DYNAMIC környezeti változó: Az alapértelmezett érték implementációban van definiálva.

    A Visual C++-ban az alapértelmezett érték a .FALSE