Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I det här kapitlet beskrivs miljövariablerna OpenMP C och C++ API (eller liknande plattformsspecifika mekanismer) som styr körningen av parallell kod. Namnen på miljövariablerna måste vara versaler. De värden som tilldelas dem är skiftlägesokänsliga och kan ha inledande och avslutande blanksteg. Ändringar av värdena när programmet har startat ignoreras.
Miljövariablerna är följande:
- OMP_SCHEDULE anger körningstidsschematyp och segmentstorlek.
- OMP_NUM_THREADS anger antalet trådar som ska användas under körningen.
- OMP_DYNAMIC aktiverar eller inaktiverar dynamisk justering av antalet trådar.
- OMP_NESTED aktiverar eller inaktiverar kapslad parallellitet.
Exemplen i det här kapitlet visar bara hur dessa variabler kan anges i Unix C-gränssnittsmiljöer (csh). I Korn Shell- och DOS-miljöerna är åtgärderna liknande:
csh:
setenv OMP_SCHEDULE "dynamic"
Ksh:
export OMP_SCHEDULE="dynamic"
DOS:
set OMP_SCHEDULE="dynamic"
4.1 OMP_SCHEDULE
OMP_SCHEDULE gäller endast för for och parallel for direktiv som har schematypen runtime. Schematypen och segmentstorleken för alla sådana loopar kan anges vid körtid. Ange den här miljövariabeln till alla identifierade schematyper och till en valfri chunk_size.
För for och parallel for direktiv som har en annan schematyp än runtime, OMP_SCHEDULE ignoreras. Standardvärdet för den här miljövariabeln är implementeringsdefinierat. Om den valfria chunk_size anges måste värdet vara positivt. Om chunk_size inte har angetts antas värdet 1, förutom när schemat är static. För en static schemaläggning anges standardstorleken för segment till loopens itereringsutrymme dividerat med antalet trådar som används i loopen.
Exempel:
setenv OMP_SCHEDULE "guided,4"
setenv OMP_SCHEDULE "dynamic"
Korsreferenser
- för direktiv
- parallel for-direktiv
4.2 OMP_NUM_THREADS
Miljövariabeln OMP_NUM_THREADS anger standardantalet trådar som ska användas under körningen.
OMP_NUM_THREADS ignoreras om det numret uttryckligen ändras genom att anropa biblioteksrutinen omp_set_num_threads . Det ignoreras också om det finns en explicit num_threads klausul i ett parallel direktiv.
Värdet för OMP_NUM_THREADS miljövariabeln måste vara ett positivt heltal. Dess effekt beror på om dynamisk justering av antalet trådar är aktiverat. En omfattande uppsättning regler om interaktionen OMP_NUM_THREADS mellan miljövariabeln och dynamisk justering av trådar finns i avsnitt 2.3.
Antalet trådar som ska användas är implementeringsdefinierat om:
-
OMP_NUM_THREADSmiljövariabeln har inte angetts. - det angivna värdet inte är ett positivt heltal, eller
- värdet är större än det maximala antalet trådar som systemet kan stödja.
Exempel:
setenv OMP_NUM_THREADS 16
Korsreferenser
4.3 OMP_DYNAMIC
Miljövariabeln OMP_DYNAMIC aktiverar eller inaktiverar dynamisk justering av antalet tillgängliga trådar för körning av parallella regioner.
OMP_DYNAMIC ignoreras när dynamisk justering uttryckligen aktiveras eller inaktiveras genom att anropa biblioteksrutinen omp_set_dynamic . Dess värde måste vara TRUE eller FALSE.
Om OMP_DYNAMIC är inställt på TRUEkan antalet trådar som används för att köra parallella regioner justeras av körningsmiljön för att använda systemresurser på bästa sätt. Om OMP_DYNAMIC är inställt på FALSEinaktiveras dynamisk justering. Standardvillkoret är implementeringsdefinierat.
Exempel:
setenv OMP_DYNAMIC TRUE
Korsreferenser
4.4 OMP_NESTED
Miljövariabeln OMP_NESTED aktiverar eller inaktiverar kapslad parallellitet om inte kapslad parallellitet aktiveras eller inaktiveras genom att anropa biblioteksrutinen omp_set_nested . Om OMP_NESTED är inställt på TRUEaktiveras kapslad parallellitet. Om OMP_NESTED är inställt på FALSEinaktiveras kapslad parallellitet. Standardvärdet är FALSE.
Exempel:
setenv OMP_NESTED TRUE