Yanıtlar:
FLOP / s ile verilen teorik zirve: odak sayısının kolaydır. Ortalama frekans, teorik olarak, bir miktar Turbo Boost (Intel) veya Turbo Core (AMD) içermelidir, ancak çalışma frekansı iyi bir alt sınırdır. Çevrim başına işlemler mimariye bağlıdır ve bulmak zor olabilir (SandyBridge ve IvyBridge için 8, bkz. Slayt 26 ). Bir dizi modern mimarinin sayılarını içeren bu yığın taşması sorusunun konusudur .
Makinenizdeki CPU'ların modelini ve satıcısını bilmeniz gerekir. Bunu yaptıktan sonra, satıcının web sitesinde (veya belki Wikipedia'da) saat hızını, yonga / soket sayısını, yonga başına çekirdek sayısını, döngü başına kayan nokta işlemi sayısını ve bu işlemlerin vektör genişliğini arayabilirsiniz. . Sonra, sadece çarparsınız.
Örneğin, çalıştığım Stampede'deki Intel Xeon E5-2680 "Sandy Bridge" işlemcilerini ele alalım . Özellikleri:
Bunların çoğaltılması, sistemin hızlandırılmamış kısmı için 345.6 GF / düğüm veya 2.2 PF verir.
Genellikle çift kesinlikli (64 bit) işlemler açısından düşünürüz, çünkü bu, kullanıcılarımızın büyük çoğunluğu için gereken kesinliktir, ancak isterseniz hesaplamayı tek kesinlikli terimlerle yeniden yapabilirsiniz. Bu genellikle son faktörü değiştirir, örneğin 4 DP Flop / inst yerine 8 SP Flop / talimat, ancak bundan çok farklı olabilir. Örneğin, daha eski GPU'lar DP'yi sadece SP oranının 1 / 8'inde yaptı. Sisteminiz için herhangi bir sayı teklif ederseniz, çift duyarlık değilse hangisini kullandığınız konusunda açık olmalısınız, aksi takdirde insanlar bunun olduğunu varsayar.
Ayrıca, çipiniz kaynaştırılmış çoklu ekle (FMA) talimatlarını destekliyorsa ve bunları tam hızda yapabiliyorsa, çoğu kişi bunu 2 kayan nokta işlemi olarak sayar, ancak bir donanım performans sayacı bunu tek bir talimat olarak sayabilir.
Son olarak, bunu sisteminizde olabilecek herhangi bir hızlandırıcı için (GPU veya Xeon Phi gibi) yapabilir ve teorik bir toplam elde etmek için bu performansı CPU performansına ekleyebilirsiniz.
Teorik değer istediğini anlıyorum, ancak bu neredeyse her zaman herhangi bir gerçek kodla, hatta LINPACK ile erişilemediğinden, çok büyük matrisler için DGEMM'yi çalıştırmak isteyebilirsiniz. Bu yöntemi tercih etmemin nedeni, bazı işlemcilerin teorik zirve flop değerlerine ulaşmalarını engelleyen bazı eksikliklerini ortaya çıkarmasıdır.
Örneğin, NVIDIA GPU'lar şu anda aynı boru hattında tamsayı ve kayan nokta işlemleri yapmaktadır. Bu, teorik zirve flop / s'lerini ancak hiçbir şekilde tamsayı hesaplaması yapamadığınız anlamına gelir . Dizi indeksleme ve diğer herhangi bir veri erişimi bir yerde tamsayı aritmetiği gerektirdiğinden, NVIDIA GPU'da hiçbir kod teorik zirve flop / s'lerine ulaşamaz. Çoğu durumda, üst sınır olarak ~% 80 görülür. Aynı anda tamsayı ve kayan nokta işlemleri yayınlayan CPU'lar için bu bir sorun değildir.
Intel Knights Corner ve Blue Gene / Q gibi bazı GPU benzeri çok çekirdekli işlemcilerde, benzer boru hattı sorunları için geleneksel CPU'lardan daha yüksek pik flop / s elde etmek daha zordur (her ikisi de en azından büyük DGEMM'de en az ~% 90 pik elde edebilir ).