2011-11-30 22 views

cevap

13

Evet, adlandırılmış aramalar iplik ilgi ayarlamak için çalışacaktır. Tek sorun, iş parçacığı numarasını düzeltmek ve doğru iş parçacığına doğru yakınlık ayarlamaktır (bilinen iş parçacığı sayısı için for döngüsünün statik zamanlamasını kullanmayı deneyebilirsiniz).

Bildiğim kadarıyla, hemen hemen her openmp ortam ile yakınlık ayarlamayı sağlar. Çevre değişkeninin adı değişmektedir (bir süre önce standartlaştırılmamıştır). OpenMP uygulamasını bulmak için http://www.spec.org/omp2001/results/omp2001.html sayfasını kullanıyorum ve belirli bir ortam değişkeni adını arayacak. Affinity, specOMP sonuçlarının yarısında ayarlanır. Sonuçlarda bazı ek OpenMP performans ayar ayarları da vardır.

E.g. For intel compiler değişkendir 63

ve newer OpenMP Standard, version 3.1 değişkeni OMP_PROC_BIND (0 sayıldı) en fazla CPU sayısını tanımlar,

export KMP_AFFINITY=compact,0 

For sun compiler:

export SUNW_MP_PROCBIND=TRUE 

For gcc (pre-openmp 3.1)

export GOMP_CPU_AFFINITY=0-63 

(secti görmek 4.4'te, OpenMP'de standartlaştırılmış bir ilişki kurma şeklidir. Kullanımı:

export OMP_PROC_BIND=true 
+0

Teşekkürler! pthread_attr_setaffinity_np' gibi dil seviyesinde hiçbir şey yok mu? –

+0

no, openmp standardında iplik bağlama pragma veya işlevleri yoktur. Tek yol (ve tavsiye edilen), konuları çevreci değişkenine, derleyiciye özgü veya openmp3.1 ile bağlamaktır. Bu ayar ana başlamadan önce erken yapılmalıdır. – osgx

+0

Yani, kesinlikle, cevabınız "Hayır" ile başlamalıdır :) –