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ğildir ve baştaki ve sondaki boşluklara sahip olabilir. 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_SCHEDULEyalnızca zamanlama türüne runtimesahip ve parallel for yönergeleri için for 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üne ve isteğe bağlı bir chunk_size olarak ayarlayın.

dışında for bir zamanlama türü runtimeOMP_SCHEDULE olan ve parallel for yönergeleri 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, zamanlamanın olduğu durumlar dışında 1 değeri varsayılırstatic. Bir static zamanlama için, varsayılan öbek boyutu döngüye uygulanan iş parçacığı sayısına bölünmüş döngü yineleme alanına ayarlanır.

Örnek:

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

Çapraz başvurular

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 , kitaplık yordamı çağrılarak bu numara açıkça değiştirilirse yoksayılır omp_set_num_threads . Ayrıca yönergesinde parallel açık num_threads bir yan tümcesi varsa 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 başvurular

  • num_threads yan tümcesi
  • omp_set_num_threads işlevi
  • omp_set_dynamic işlevi

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 veya FALSEolmalıdırTRUE.

olarak ayarlanırsa OMP_DYNAMIC TRUE, 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_DYNAMIC FALSE, dinamik ayarlama devre dışı bırakılır. Varsayılan koşul uygulama tanımlıdır.

Örnek:

setenv OMP_DYNAMIC TRUE

Çapraz başvurular

4.4 OMP_NESTED

Ortam değişkeni, OMP_NESTED kitaplık yordamını çağırarak omp_set_nested iç içe paralellik etkinleştirilmediği veya devre dışı bırakılmadığı sürece iç içe paralelliği etkinleştirir veya devre dışı bırakır. olarak ayarlanırsa OMP_NESTED TRUE, iç içe paralellik etkinleştirilir. olarak ayarlanırsa OMP_NESTED FALSE, 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