Aracılığıyla paylaş


D. schedule Yan Tümcesini Kullanma

Paralel bir bölge, sonunda en az bir engel vardır ve içerdiği ek engelleri olabilir.Her engeli ekibinin diğer üyeleri gelmesi son iş parçacığı için beklemeniz gerekir.Tüm iş parçacıklarının engeli aynı anda ulaşması gerektiğini bu bekleme süresini en aza indirmek için paylaşılan çalışma dağıtılsın.Paylaşılan bazıları ise iş içerdiği için yapıları, schedule yan tümcesi, bu amaç için kullanılabilir.

Yinelenen başvurular aynı nesneleri, zamanlamasını seçim olduğunda bir için yapı öncelikle göre belirlenir varlığı ve önbellekleri ve bellek erişim zamanları Tekdüzen veya nonuniform olup boyutu gibi bellek sistem özellikleri.Bu tür konular bazı iş parçacıkları döngüleri bazı görece daha az çalışma atanmış olsa da, sürekli olarak aynı döngüleri, bir dizi bir dizinin öğeleri kümesi başvuran her iş parçacığı için tercih yapabilir.Bu kullanarak yapılabilir statik for döngüleri aynı sınırlarla zamanlama.Aşağıdaki örnekte, Not sıfır kullanılan ikinci döngü içinde alt sınır olarak bile k zamanlama önemli değil, daha doğal olacaktır.

#pragma omp parallel
{
#pragma omp for schedule(static)
  for(i=0; i<n; i++)
    a[i] = work1(i);
#pragma omp for schedule(static)
  for(i=0; i<n; i++)
    if(i>=k) a[i] += work2(i);
}

Kalan örneklerde, belleğin kabul edilir erişim baskın dikkate değildir ve aksi belirtilmediği sürece tüm iş parçacıklarını karşılaştırılabilir hesaplama kaynaklarını alırsınız.Bu durumda, seçim planı için bir için yapı bağlıdır yakın önceki arasında gerçekleştirilecek olan paylaşılan çalışma engeli ve zımni kapanış engel veya sonraki engel varsa en yakın bir nowait yan tümcesi.Her tür zamanlama, zamanlama türünü nasıl en iyi seçim olasılığı olan kısa bir örnek gösterir.Kısa bir tartışma her örnek aşağıda verilmiştir.

Statik zamanlama da en basit durumda, tek bir içeren paralel bir bölge uygun için , aynı miktarda çalışma gerektiren her yineleme ile oluşturun.

#pragma omp parallel for schedule(static)
for(i=0; i<n; i++) {
  invariant_amount_of_work(i);
}

Statik zamanlama özellikleri tarafından ayırdedilir, her iş parçacığı yaklaşık aynı sayıda tekrar başka bir iş parçacığı alır ve her iş parçacığı bağımsız olarak atanmış yineleme belirleyebilirsiniz.Böylece iş dağıtmak için eşitleme gereklidir ve her tekrarında aynı miktarda çalışma gerektirdiğini varsayımı altında tüm iş parçacıklarının en hakkında aynı zamanda son.

Bir p iş parçacıkları, izin ceiling(n/p) tamsayı olması q, hangi karşılayan n = p * q - r ile 0 < r = < p.Bir uygulaması statik Bu örnek atadýðýnýz için zamanlama q ilk yineleme p–1 iş parçacıklarını ve q-r son iş parçacığı için yineleme.Kabul edilebilir başka bir uygulama atadýðýnýz q ilk yineleme p-r iş parçacıklarını ve q-1 kalan için yineleme r iş parçacığı.Bir programın belirli bir uygulama ayrıntıları üzerinde güvenmemelisiniz neden bunu göstermektedir.

Dinamik zamanlama servis talebi için uygun bir için iş değişen ya da hatta tahmin edilemeyen miktarda gerektiren yineleme ile oluşturun.

#pragma omp parallel for schedule(dynamic)
  for(i=0; i<n; i++) {
    unpredictable_amount_of_work(i);
}

Dinamik zamanla onu uzun sürer, onun son yineleme çalıştırmak için başka bir iş parçacığı için iş parçacığı yok engeli bekler özelliği tarafından ayırdedilir.Bu eşitleme her atama için kullanılabilir duruma geldikçe tekrar birer birer kanalları atanmasını gerektirir.Minimum öbek boyutunu belirterek eşitleme yükü azalır k 1'den büyük, böylece iş parçacığı atanan k kadar az bir zaman k kalır.Bu iş parçacığı yok, son yığınını (en fazla) çalıştırmak için başka bir iş parçacığı alır daha uzun engeli bekler garanti k tekrar.

Dinamik zamanlama hesaplama kaynakları, değişen iş parçacığı alırsanız, faydalı olabilir çalışma her yineleme için değişik miktarlardaki aynı etkiye sahip olduğu.Benzer şekilde, dinamik zamanlama da iş parçacıklarının en gelmesi durumunda yararlı olabilir için çeşitli zamanlarda bazı durumda olsa da oluşturmak Destekli zamanlama tercih.

Destekli zamanlama, iş parçacığı geldiğinde çeşitli zamanlarda durum için uygun bir için her tekrarında aynı çalışma miktarı hakkında gerektiren ile oluşturun.Bu durum, örneğin, için yapı bir veya birkaç bölümü öncesinde veya için ile yapıları nowait yan tümceleri.

#pragma omp parallel
{
  #pragma omp sections nowait
  {
    // ...
  }
  #pragma omp for schedule(guided)
  for(i=0; i<n; i++) {
    invariant_amount_of_work(i);
  }
}

Gibi dinamik, Destekli zamanlama engeli uzun onun son yineleme çalıştırmak için başka bir iş parçacığı alır veya son iş parçacığı yok bekler garanti k öbek boyutunu, tekrar k belirtilir.Bu tür planları arasında Destekli zamanlama en az eşitlemeler gerektirdiğini özelliği tarafından ayırdedilir.Öbek boyutu için k, tipik bir uygulaması atayacağı q ceiling(n/p) = ilk kullanılabilir iş parçacığı için yineleme kümesi n için büyük, n-q ve p * kve tüm yineleme atanmış kadar yineleyin.

En iyi zamanlama seçimi bu örnekler için olduğu gibi açık değilken çalışma zamanı zamanla farklı zamanlamaları ve Öbek boyutları ile değiştirebilir ve program derlemeniz gerekmeden denemek için uygun.Ayrıca en iyi zamanlamayı (bazı öngörülebilir bir biçimde) program Uygulanacağı Giriş verileri bağlı olduğunda da yararlı olabilir.

RAID'in farklı zamanlamaları arasında bir örneğini görmek için 1000 yineleme 8 iş parçacıkları arasında paylaşımı düşünün.Orada olduğunu varsayın her tekrarında çalışmanın sabit bir tutar ve zaman birimi olarak kullanan.

Aynı zamanda, tüm iş parçacıklarını başlatamadığından, statik zamanlama eşitleme ile 125 birim yürütmek yapı neden olur.Ancak geç geliyor, 100 birimlik bir iş parçacığı olduğunu varsayalım.Kalan yedi iş parçacığı engeli at 100 birim için bekleyin ve 225 için tüm yapı yürütme süresi artar.

Çünkü hem dinamik ve Destekli zamanlamaları olun iş parçacığı yok bariyer birden fazla birimi bekler, gecikmiş iş parçacığında yürütme zamanlarına yapýnýn gecikmelerden kaynaklanan eşitleme tarafından büyük olasılıkla artan sadece 138 birimlerine artırmak neden olur.Gecikmelerden gözardı değilseniz, eşitlemeler sayısının 1000 için olduğunu önemli hale dinamik ancak için yalnızca 41 Destekli, bir varsayılan öbek boyutunu varsayarak.Öbek boyutu 25 olarak dinamik ve Destekli hem de 150 birim miktarının herhangi bir gecikmelerden kaynaklanan gerekli eşitlemeler yalnızca 40 ve 20, hangi şimdi sayı sırasıyla tamamlayın.