Aracılığıyla paylaş


2.4.1 Yapı için

İçin yönergesi ilişkili döngü yinelemelerini paralel olarak yürütülen belirtir yinelemeli bir iş paylaşımı yapı tanımlar.Yinelemelerini için döngü, bağlar, paralel yapı yürütme takıma zaten iş parçacıkları arasında dağıtılır.Sözdizimi için yapısı aşağıdaki gibidir:

#pragma omp for [clause[[,] clause] ... ] new-line 
   for-loop

Yan aşağıdakilerden biridir:

Özel (değişken listesi)

firstprivate (değişken listesi)

lastprivate (değişken listesi)

reduction(operator : variable-list)

Sipariş

schedule(kind, chunk_size)

nowait

İçin yönergesi buna karşılık gelen yapısı üzerinde kısıtlamalar koyar için döngü.Özellikle, ilgili için döngü kurallı şekli olması gerekir:

for (init-expr;var op mantıksal bincr-expr)

  • init ifade
    Aşağıdakilerden biri:

    var = lb

    tamsayı türü var = lb

  • incr ifade
    Aşağıdakilerden biri:

    ++var

    var ++

    -- var

    var --

    var += incr

    var -= incr

    var = var + incr

    var = incr + var

    var = var - incr

  • var
    İşaretli tamsayı değişken.Bu değişken yoksa paylaşılan, onu dolaylı olarak özel süresince yapılan için.Bu değişken gövdesi içinde değiştirilmemelidir için ifadesi.Değişken belirtilmediyse lastprivate, döngü belirsiz sonra değeri.

  • mantıksal işlem
    Aşağıdakilerden biri:

    <

    <=

    >

    >=

  • lb, b, and incr
    Sabit tamsayı ifadeler döngüsü.Bu deyimleri sırasında eşitleme yoktur.Bu nedenle, herhangi bir Değerlendirilmiş yan etkileri belirsiz sonuçlar.

Kanonik döngüye girişinde hesaplanması için döngü Yinelemelerin sayısı ne kadar izin verdiğini unutmayın.Bu hesaplama türü, değerlerle gerçekleştirilen var, sonra ayrılmaz promosyonlar.Belirli, eğer içinde değeri b - lb + incr türü, sonucu belirsiz olması bakımından gösterilemez.Daha fazla, eğer op mantıksal olan < veya < = then incr ifade neden gerekir var döngünün her yinelenişinde artırmak için.Op mantıksal olan > veya > sonra = incr ifade neden gerekir var döngünün her yinelenişinde azaltmak için.

Zamanla yan tümcesi belirler nasıl yinelemelerini için döngü ekip iş parçacıkları arasında bölünmüştür.Doğruluğu bir programın belirli bir yinelemenin hangi iş parçacığı yürütür üzerinde bağımlı olmamalıdır.Değeri chunk_size, belirtilmiş olması durumunda bir döngü sabit tamsayı ifadesiyle pozitif bir değer olmalıdır.Bu deyimin değerinin hesaplanması sırasında eşitleme yoktur.Bu nedenle, herhangi bir Değerlendirilmiş yan etkileri belirsiz sonuçlar.Zamanlama tür aşağıdakilerden biri olabilir:

Tablo 2-1 Zamanla yan tür değerler

static

Zaman Zamanlama (statik, chunk_size) belirtilirse, yineleme tarafından belirtilen boyutta parçalara bölünmüş chunk_size.Parçalar, hepsini iş parçacığı numara sırasına göre takıma iş parçacıkları için statik olarak atanır.Hayır, chunk_size belirtilirse, yineleme alanı ile her iş parçacığı için atanmış bir öbek boyutu yaklaşık olarak eşit parçalara bölünmüştür.

dinamik

Zaman Zamanlama (dinamik, chunk_size) belirtilirse, yineleme parçalar, her içeren bir dizi bölünmüş chunk_size tekrar.Her bir parça için atama bekleyen iş parçacığı atanır.İş parçacığı yineleme öbeğinin yürütür ve hiçbir parçalar atanacak kalıncaya kadar sonraki atamanın ardından bekler.Atanacak son parça daha az sayıda yineleme gerekebileceğini unutmayın.Hayır, chunk_size belirtildiğinde, varsayılan 1.

Destekli

Zaman Zamanlama (Destekli, chunk_size) belirtilen, iş parçacıklarının boyutlarını azaltma ile parçalar için tekrar atanır.Yineleme atanmış kendi öbeğinin bir iş parçacığı sona erdiğinde, hiçbiri kalıncaya kadar dinamik olarak başka bir öbek atanır.İçin bir chunk_size 1 her bir parça yaklaşık iş parçacığı sayısına bölünmesiyle atanmamış yineleme sayısını boyutudur.Bu boyutları yaklaşık olarak 1'e de katlanarak azaltın.İçin bir chunk_size değeri k 1 ' den büyük boyutları yaklaşık de katlanarak çok azaltmak k, son parça daha az olabilir dışında k yineleme.Hayır, chunk_size belirtildiğinde, varsayılan 1.

çalışma zamanı

Zaman schedule(runtime) belirtilen ilgili planlama çalışma zamanı kadar ertelenmiş karar.Zamanlama tür ve büyük boyutu seçilir çalışma zamanında ortam değişkenini ayarlayarak omp_schedule.Bu ortam değişkeni ayarlanmamış, ortaya çıkan zamanlama uygulama tanımlı değildir.Zaman schedule(runtime) belirtilirse, chunk_size belirtilmemiş gerekir.

İçinde açıkça tanımlanmış yokluğunda Zamanla yan tümcesi, varsayılan Zamanla uygulama tanımlı olduğu.

OpenMP ile uyumlu bir program doğru çalıştırılması için belirli bir zamanlama güvenmemelisiniz.Bir program bir zamanlamayla güvenmemelisiniz tür kesin olarak, yukarıda verilen açıklamasında aynı zamanlama uygulamalarında değişimleri olma olasılığı olduğu için uygun tür farklı derleyiciler arasında.Açıklama, belirli bir durum için uygun bir zamanlama seçmek için kullanılabilir.

Sipariş yan tümcesi olmalıdır var ne zaman Sipariş yönergeleri bağlamak için için oluşturun.

Sonunda örtülü bir engel olan bir için sürece oluşturmak bir NOWAIT yan tümcesinde belirtilir.

Kısıtlamalar için için yönergesini aşağıdaki gibidir:

  • İçin döngü yapısal blok olması ve buna ek olarak, kendi yürütme tarafından sonlandırılması gerekir değil bir sonu ifadesi.

  • Döngü değerleri denetleyen ifadeler, için döngü ile ilişkilendirilmiş bir için yönergesi takım tüm iş parçacıkları için aynı olması gerekir.

  • İçin döngü değişkeni imzalı tamsayı türü olmalıdır.

  • Yalnızca tek bir Zamanla yan tümcesi görüntülenebilir bir için yönergesi.

  • Yalnızca tek bir Sipariş yan tümcesi görüntülenebilir bir için yönergesi.

  • Yalnızca tek bir NOWAIT yan tümcesi görüntülenebilir bir için yönergesi.

  • Belirtilmemiş ise veya ne kadar sıklıkla içinde herhangi bir yan etkiler ise chunk_size, lb, b, veya incr ifadeler oluşur.

  • Değeri chunk_size deyim takım tüm iş parçacıkları için aynı olması gerekir.

Çapraz referanslar:

  • Özel, firstprivate, lastprivate, ve azaltma yan tümceleri görmek Bölüm 2.7.2 sayfasında 25.

  • omp_schedule ortam değişkeni, bkz: Bölüm 4.1 sayfasında 48.

  • Sipariş oluşturmak için bkz: Bölüm 2.6.6 sayfasında 22.

  • Ek d, sayfa 93, zamanla yan tümcesinin kullanılması hakkında daha fazla bilgi verir.