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ı?
Sadece bir düşünün, ama olmamalıdır. Yalnızca bir iş parçacığı çalışırken% 100/çekirdek sayısı? – Tibor
no, çoklu çekirdekler kullanıldığında (en azından benim sunucumun kurulumunda)% 100'den çok daha büyük değerler görüyoruz. –
@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. –