Bir i5'te [paralel] en iyi paralel işleme için kullanılacak optimum iplik sayısı


0

Masaüstümde / dizüstü bilgisayarımda bir miktar ağır işlem yapmakla ilgileniyorum (bir küme gerektirdiği için fena değil ama iyi bir ev makineye ihtiyaç duyuyor). Sorum şu ki, işin en hızlı şekilde yapılması için ne kadar iş parçacığı oluşturulacağı (uygulamanın iş yükünü çok az genel giderle dağıttığını varsayalım).

İşlemci başına genellikle bir iş parçacığı yaratırdım, ancak Core i5 / i7'deki hiper iş parçacığı yeteneğinin aslında işlemci başına iki iş parçacığı oluşturmam gerektiği anlamına mı geldiğini merak ediyordum (yani, sanal işlemci başına bir iş parçacığı). Bilen var mı?

* Açıkçası, makul bir cevap denemek ve görmek olacaktır. Koşması yaklaşık 12 saat sürdüğü için, ilk seferinde doğru yapmayı tercih ederim, ancak her iki yönde de çalıştırma şansım olursa sonuçları mutlu bir şekilde yazıyorum.


Sanal işlemci başına 1 genellikle daha iyidir
soandos

Peki, bu forumda oldukça yeniyim, ama neden burada konu dışı / iş parçacığı / performans hakkında bir soru soruyor? Daha iyi bir yer önerebilir misiniz?
Alex

1
Konu değil konu dışı. Sorun şu ki açık uçlu ve neredeyse yeterli bilgi verilmiyor. Göre SSS bu tür sorular konuyla ilgili değil, yapıcı değil veya gerçek bir soru değil.
soandos

Soruyu sorduğumda basit bir cevabın olmadığı açıktı ... Belki de daha fazla ayrıntı için bir istek yeterli olurdu.
Alex

Yanıtlar:


1

Bu, pahalı kıyaslama gerektiren açık uçlu bir sorudur. Şahsen ben iki tarafa gittiğini gördüm. Çok iş parçacıklılığınızı gerçekten bozmadığınız sürece, fark +% -10 civarında olacak, bu yüzden her iki yönde de denemeye değer. Uzun zaman alırsa bile.

Intel bileşenlerinden oluşturulan birçok Yüksek Performanslı Bilgi İşlem kümesi HT'yi devre dışı bıraktı. Bu iyi bir nedenden dolayı bu kodlar donanımı doyurma eğilimindedir ve bu nedenle performansları bellek erişiminin doygunluğuna çok bağlıdır - bu, HT durumunda iş parçacığı açılıp kapanırken daha kötü olacaktır. Görmek http://semiaccurate.com/2012/04/25/does-disabling-hyper-threading-increase-performance/ .

Ancak, kodunuz çok fazla ayarlanmadıysa, neredeyse aynı performans artışı yaşayabilirsiniz. http://semiaccurate.com/2012/04/25/does-disabling-hyper-threading-increase-performance/ .

enter image description here

Tek CPU bilgi işleminde hiper-dişi bırakmanın devre dışı bırakılması bazı yazılımları% 1 artırabilir, ancak diğer yazılımlara da belirgin şekilde daha fazla zarar verebilir. Belki de ~% 10 oranında.

Bu, kıyaslama kriterleriniz aksini belirtmediği sürece, masaüstü makinenizde her bir iş parçacığı başına / iş parçacığı başına 1 iş parçacığı oluşturmanız gerektiği anlamına gelir.


Bu çok ilginç - kodum makine ile düşük seviyede ilgilenmiyor, sadece dişlileri kullanıyor (aslında JVM'de - fark yaratıyor mu?)
Alex

@Alex, java kullanıyorsanız en üst düzeyde performans elde etmenin neredeyse hiçbir yolu yoktur. Bu daha çok SA yorumundan başka bir şey değil; vanillajava.blogspot.com/2012/01/... konuları tahsis etmek için.
Mikhail

0

Burada F @ H katlama ile ilgili deneyimlerden söz ediyorum: çekirdek başına tek bir iş parçacığının (sanal veya fiziksel olsun) en iyisi olduğunu söyleyerek.

Bunu söylemek gerekirse, arka plan işlemleri ve genel bilgisayar görevleri ile uğraşmak için tek bir çekirdeği serbest bırakmak iyi bir fikir olabilir;

İşlerin nerede yürüdüğünü takip etmek istiyorsanız CPU ilgisine bakın. Genel bir kural olarak, önce fiziksel çekirdekler (Yani: Üstelik numaralandırmalar), daha sonra köprüdeki çekirdekler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.