Süper hesaplama açısından bakıldığında CPU / GPU yükünü yüzde cinsinden düşünmemek, eldeki problemin kaç tane işlem yapması gerektiğini belirlemek ve bunu sistemin en yüksek performansı ile karşılaştırmak daha iyidir.
Eğer% 100 CPU kullanımı elde ederseniz, mutlaka tüm performansı sistemden çıkardığınız anlamına gelmez. İşlemciler genellikle aynı anda birçok farklı şey yapabilir, böylelikle bir bölünme ve ek olarak söylerler. Bölmeye erken başlayabilirseniz, muhtemelen ekleme ile üst üste gelebilir. Masaüstü işlemciniz, büyük olasılıkla, bu tür çakışmalardan yararlanmak için ifadeleri yeniden düzenleyen bir sipariş dışı birime sahiptir. Veya aşağıdaki programa sahipseniz:
if (expr1)
expr2;
else
expr3;
Yeniden sıralama yapan bir CPU , aynı anda üç ifadeyi hesaplamaya çalışacak ve ardından bunlardan birinin sonucunu atmaya çalışacaktır. Bu genel olarak daha hızlı yapar. Programınızda bazı engelleyiciler varsa ve yeniden sıralayamıyorsanız, CPU'da daha az şerit kullanıyorsunuzdur, ancak muhtemelen% 100'ünü gösterecektir.
Daha sonra CPU'da vektör işlemleri olan SIMD özelliklerine sahipsiniz. Genelde aynı anda yalnızca dört veya sekiz işlem yaptığınız için GPGPU ışığı gibidir, GPU'lar 32 veya 64'ü sever. Yine de bunu FLOPS'u çıkarmak için kullanmanız gerekir.
Sahte paylaşım gibi şeyler, Linux'ta genellikle çekirdek yükü olarak ortaya çıkan ağır bir senkronizasyon maliyetine yol açabilir. CPU tamamen kullanılıyor, ancak çok fazla işlem hacminiz yok.
Bir IBM Blue Gene / Q makinesinde bazı programlama yaptım. Birçok hiyerarşi seviyesine sahiptir ( modası geçmiş Blue Gene / L'nin şeması ) ve bu nedenle verimli bir şekilde programlanması zordur. Performansı elde etmek için SIMD ve SMT'ye kadar tüm hiyerarşiyi kullanmanız gerekecektir (Intel bu HyperThreading'i çağırır).
Ve sonra ağ genellikle sizi sınırlar. Bu nedenle, ağ üzerinden iletişim kurmak yerine, aynı anda birden fazla CPU'da işlem yapmak için (duvar saati) zamanının daha hızlı olduğu ortaya çıkıyor. Bu CPU'lara daha fazla yük getirecek ve programın daha hızlı çalışmasını sağlayacaktır. Ancak gerçek program verimi, işlenmemiş rakamlardan göründüğü kadar iyi değildir.
Karışıma GPU eklerseniz, performans elde etmek için tüm bu işleri düzenlemek daha da zorlaşacaktır. Bu, birkaç ay içinde Kafes QCD Yüksek Lisans Tezi'mde yapmaya başlayacağım şeylerden biri olacak.
NO-OP
aynı anda sonsuz bir s döngüsü çalıştırması , her ikisinin de% 100 yüke sahip olmasına neden olacak şekilde çok önemlidir .