2012-05-07 23 views
8

LIBSVM'yi paralel modda çalıştırmaya çalışıyorum, ancak sorum genel olarak OpenMP'de. LIBSVM FAQ'a göre, OpenMP'yi kullanmak için kodu #pragma çağrılarıyla değiştirdim. Ben de hale gelmesi için -fopenmp argüman ekleyerek Makefile (un * x) modifiye:OpenMP çalışıyorsa nasıl söylenir?

CFLAGS = -Wall -Wconversion -O3 -fPIC -fopenmp 

kod iyi derler. Ben OpenMP tarafından yüklü olup olmadığını (bu benim PC olmadığından) kontrol edin:

/sbin/ldconfig -p | grep gomp 

ve -probably- yüklü olduğunu bakın: Şimdi

libgomp.so.1 (libc6,x86-64) => /usr/lib64/libgomp.so.1 
libgomp.so.1 (libc6) => /usr/lib/libgomp.so.1 

; Programı çalıştırdığımda, herhangi bir hız gelişimini göremiyorum. Ayrıca "top" ile kontrol ettiğimde, işlem en fazla% 100 CPU kullanıyor (8 çekirdek var), ayrıca bir CPU darboğazı yok (% 100 CPU kullanımıyla sadece bir tane daha kullanıcı), daha fazlasını görmeyi bekliyordum. İşlemin% 100 (veya farklı bir gösterge) olduğunu, birden çok çekirdek kullanıyor.

Çoklu çekirdek üzerinde çalıştığını kontrol etmenin bir yolu var mı?

+0

Sadece bir düşünün, ama olmamalıdır. Yalnızca bir iş parçacığı çalışırken% 100/çekirdek sayısı? – Tibor

+1

no, çoklu çekirdekler kullanıldığında (en azından benim sunucumun kurulumunda)% 100'den çok daha büyük değerler görüyoruz. –

+1

@Tibor, varsayılan olarak Irix moduna tek bir CPU'nun tam yükü için% 100, n *% 100 n CPU'ların tam yükü. Irix modunu kapatırsanız ('I' düğmesine basın) tüm CPU'lar kullanıldığında% 100 görünür. –

cevap

7

omp_get_num_threads() işlevini kullanabilirsiniz. Program tarafından kullanılan iş parçacığı sayısını döndürür.

+6

Biri, paralel bir bölgenin içinde 'omp_get_num_threads()' çağırmalıdır. Aksi takdirde her zaman 1 döndürür! –

1

omp_get_max_threads() ile programınıza uygun maksimum iş parçacığı sayısını elde edersiniz. Aynı zamanda omp_get_num_threads()'un olası tüm dönüş değerleridir. Programınız tarafından kullanılacak iş parçacığı sayısını, OMP_NUM_THREADS çevre değişkeni ile, örn.

( )
$export OMP_NUM_THREADS=8; your_program