E. Zachowania zdefiniowane w implementacji w programie OpenMP C/C++
Ten dodatek zawiera podsumowanie zachowań opisanych jako "zdefiniowane przez implementację" w tym interfejsie API. Każde zachowanie jest odsyłane z powrotem do opisu w głównej specyfikacji.
Uwagi
Implementacja jest wymagana do definiowania i dokumentowania jego zachowania w tych przypadkach, ale ta lista może być niekompletna.
Liczba wątków: jeśli wystąpi region równoległy podczas dynamicznego dostosowania liczby wątków jest wyłączona, a liczba wątków żądanych dla regionu równoległego jest większa niż liczba, którą system czasu wykonywania może podać, zachowanie programu jest zdefiniowane przez implementację (patrz strona 9).
W programie Visual C++w przypadku niegnieżdżonego regionu równoległego zostaną udostępnione 64 wątki (maksimum).
Liczba procesorów: liczba procesorów fizycznych hostująca wątki w danym momencie jest zdefiniowana przez implementację (patrz strona 10).
W programie Visual C++ta liczba nie jest stała i jest kontrolowana przez system operacyjny.
Tworzenie zespołów wątków: liczba wątków w zespole wykonującym zagnieżdżony region równoległy jest definiowana przez implementację (zobacz stronę 10).
W programie Visual C++ta liczba jest określana przez system operacyjny.
schedule(runtime): Decyzja o harmonogramie jest odroczona do czasu wykonywania. Typ harmonogramu i rozmiar fragmentu można wybrać w czasie wykonywania, ustawiając zmienną
OMP_SCHEDULE
środowiskową. Jeśli ta zmienna środowiskowa nie jest ustawiona, wynikowy harmonogram jest zdefiniowany przez implementację (zobacz stronę 13).W programie Visual C++typ harmonogramu nie ma
static
rozmiaru fragmentu.Domyślne planowanie: W przypadku braku klauzuli harmonogramu domyślny harmonogram jest zdefiniowany przez implementację (zobacz stronę 13).
W programie Visual C++domyślnym typem harmonogramu jest
static
bez rozmiaru fragmentu.ATOMIC: Zdefiniowano implementację, czy implementacja zastępuje wszystkie
atomic
dyrektywy dyrektywamicritical
o tej samej unikatowej nazwie (patrz strona 20).W programie Visual C++, jeśli dane zmodyfikowane przez niepodzielne nie są wyrównane w naturalny sposób lub jeśli są długie jeden lub dwa bajty, wszystkie operacje niepodzielne spełniające tę właściwość będą używać jednej sekcji krytycznej. W przeciwnym razie sekcje krytyczne nie będą używane.
omp_get_num_threads: Jeśli liczba wątków nie została jawnie ustawiona przez użytkownika, wartość domyślna to zdefiniowana przez implementację (zobacz stronę 9).
W programie Visual C++domyślna liczba wątków jest równa liczbie procesorów.
omp_set_dynamic: ustawienie domyślne dla dynamicznego dostosowania wątku jest definiowane przez implementację.
W języku Visual C++wartość domyślna to
FALSE
.omp_set_nested: po włączeniu zagnieżdżonego równoległości liczba wątków używanych do wykonywania zagnieżdżonych regionów równoległych jest definiowana przez implementację.
W programie Visual C++liczba wątków jest określana przez system operacyjny.
OMP_SCHEDULE zmiennej środowiskowej: wartość domyślna dla tej zmiennej środowiskowej jest zdefiniowana przez implementację.
W programie Visual C++typ harmonogramu nie ma
static
rozmiaru fragmentu.OMP_NUM_THREADS zmiennej środowiskowej: jeśli dla zmiennej środowiskowej nie określono
OMP_NUM_THREADS
żadnej wartości lub określona wartość nie jest dodatnią liczbą całkowitą lub jeśli wartość jest większa niż maksymalna liczba wątków, które system może obsługiwać, liczba wątków do użycia jest zdefiniowana przez implementację.W języku Visual C++, jeśli określona wartość jest równa zero lub mniejsza, liczba wątków jest równa liczbie procesorów. Jeśli wartość jest większa niż 64, liczba wątków wynosi 64.
OMP_DYNAMIC zmiennej środowiskowej: wartość domyślna jest zdefiniowana przez implementację.
W języku Visual C++wartość domyślna to
FALSE
.