Aracılığıyla paylaş


4. Ortam değişkenleri

Bu bölümde, paralel kodun yürütülmesini denetleyan OpenMP C ve C++ API ortam değişkenleri (veya benzer platforma özgü mekanizmalar) açıklanmaktadır. Ortam değişkenlerinin adları büyük harf olmalıdır. Bunlara atanan değerler büyük/küçük harfe duyarlı değil ve başta ve sonda boşluklar içerebilir. Program başlatıldıktan sonra değerlerde yapılan değişiklikler yoksayılır.

Ortam değişkenleri aşağıdaki gibidir:

  • OMP_SCHEDULE, çalışma zamanı zamanlama türünü ve öbek boyutunu ayarlar.
  • OMP_NUM_THREADS yürütme sırasında kullanılacak iş parçacığı sayısını ayarlar.
  • OMP_DYNAMIC, iş parçacığı sayısının dinamik olarak ayarlanmasını etkinleştirir veya devre dışı bırakır.
  • OMP_NESTED iç içe paralelliği etkinleştirir veya devre dışı bırakır.

Bu bölümdeki örnekler yalnızca bu değişkenlerin Unix C kabuğu (csh) ortamlarında nasıl ayarlanabileceğini gösterir. Korn kabuğu ve DOS ortamlarında eylemler benzerdir:

csh:
setenv OMP_SCHEDULE "dynamic"

Ksh:
export OMP_SCHEDULE="dynamic"

DOS:
set OMP_SCHEDULE="dynamic"

4.1 OMP_SCHEDULE

OMP_SCHEDULE yalnızca for ve parallel for yönergeleri, zamanlama türü runtime olduğunda geçerlidir. Bu tür döngülerin tümü için zamanlama türü ve öbek boyutu çalışma zamanında ayarlanabilir. Bu ortam değişkenini tanınan herhangi bir zamanlama türü ve isteğe bağlı chunk_size ile ayarlayın.

Zamanlama türü runtime dışında olan for ve parallel for yönergeleri için, OMP_SCHEDULE yoksayılır. Bu ortam değişkeni için varsayılan değer uygulama tanımlıdır. İsteğe bağlı chunk_size ayarlanırsa, değer pozitif olmalıdır. chunk_size ayarlanmadıysa, program static olduğunda hariç, varsayılan olarak 1 değeri alınır. Bir static zamanlama için, varsayılan parça boyutu, döngü yineleme aralığının döngüye uygulanan iş parçacığı sayısına bölünmesiyle ayarlanır.

Örnek:

setenv OMP_SCHEDULE "guided,4"
setenv OMP_SCHEDULE "dynamic"

Çapraz referanslar

4.2 OMP_NUM_THREADS

Ortam OMP_NUM_THREADS değişkeni, yürütme sırasında kullanılacak varsayılan iş parçacığı sayısını ayarlar. OMP_NUM_THREADS , eğer kitaplık yordamı omp_set_num_threads çağrılarak bu numara açıkça değiştirilirse yoksayılır. Yönergede parallel üzerinde açık bir num_threads yan tümcesi varsa, bu da yoksayılır.

Ortam değişkeninin OMP_NUM_THREADS değeri pozitif bir tamsayı olmalıdır. Bunun etkisi, iş parçacığı sayısının dinamik olarak ayarlanmasının etkinleştirilip etkinleştirilmediğine bağlıdır. Ortam değişkeni arasındaki etkileşim ve iş parçacıklarının OMP_NUM_THREADS dinamik olarak ayarlanması hakkında kapsamlı bir kural kümesi için bkz . bölüm 2.3.

Kullanılacak iş parçacığı sayısı şu durumda uygulama tanımlıdır:

  • OMP_NUM_THREADS ortam değişkeni belirtilmemiş,
  • belirtilen değer pozitif bir tamsayı değil veya
  • değeri, sistemin destekleyebilecek iş parçacığı sayısı üst sınırından büyüktür.

Örnek:

setenv OMP_NUM_THREADS 16

Çapraz referanslar

4.3 OMP_DYNAMIC

Ortam değişkeni, OMP_DYNAMIC paralel bölgelerin yürütülmesi için kullanılabilen iş parçacığı sayısının dinamik olarak ayarlanmasını etkinleştirir veya devre dışı bırakır. OMP_DYNAMIC dinamik ayarlama açıkça etkinleştirildiğinde veya kitaplık yordamı çağrılarak devre dışı bırakıldığında yoksayılır omp_set_dynamic . Değeri TRUE ya da FALSE olmalıdır.

olarak ayarlanırsa OMP_DYNAMICTRUE, paralel bölgeleri yürütmek için kullanılan iş parçacığı sayısı çalışma zamanı ortamı tarafından sistem kaynaklarını en iyi şekilde kullanacak şekilde ayarlanabilir. olarak ayarlanırsa OMP_DYNAMICFALSE, dinamik ayarlama devre dışı bırakılır. Varsayılan koşul uygulama tanımlıdır.

Örnek:

setenv OMP_DYNAMIC TRUE

Çapraz referanslar

4.4 OMP_NESTED

OMP_NESTED ortam değişkeni, iç içe paralellik omp_set_nested kütüphane rutinini çağırarak etkinleştirilmiş veya devre dışı bırakılmış değilse, iç içe paralelliği etkinleştirir veya devre dışı bırakır. olarak ayarlanırsa OMP_NESTEDTRUE, iç içe paralellik etkinleştirilir. olarak ayarlanırsa OMP_NESTEDFALSE, iç içe paralellik devre dışı bırakılır. Varsayılan değer şudur: FALSE.

Örnek:

setenv OMP_NESTED TRUE

Çapraz referans

  • omp_set_nested işlevi