Puncak teoritis FLOP / s diberikan oleh:
Jumlah core mudah. Frekuensi rata-rata seharusnya, secara teori, merupakan faktor dalam sejumlah Turbo Boost (Intel) atau Turbo Core (AMD), tetapi frekuensi operasi adalah batas bawah yang baik. Operasi per siklus bergantung pada arsitektur dan mungkin sulit ditemukan (8 untuk SandyBridge dan IvyBridge, lihat slide 26 ). Ini adalah subjek dari pertanyaan stack overflow ini , yang mencakup angka untuk sekelompok arsitektur modern.
Jumlah Core ∗ Frekuensi rata-rata ∗ Operasi per siklus
Anda perlu mengetahui model dan vendor CPU di mesin Anda. Setelah Anda memilikinya, Anda dapat melihat di situs web vendor (atau mungkin di Wikipedia) clock rate, jumlah chip / soket, jumlah core per chip, jumlah operasi floating point per siklus, dan lebar vektor dari operasi tersebut . Kemudian, Anda cukup gandakan.
Ambil contoh, prosesor Intel Xeon E5-2680 "Sandy Bridge" di Stampede tempat saya bekerja. Spesifikasi adalah:
Mengalikannya menghasilkan 345.6 GF / node atau 2.2 PF untuk bagian yang tidak dipercepat dari sistem.
Kami biasanya berpikir dalam hal operasi presisi ganda (64-bit), karena itulah presisi yang diperlukan untuk sebagian besar pengguna kami, tetapi Anda dapat mengulang perhitungan dalam istilah presisi tunggal jika Anda mau. Ini biasanya hanya mengubah faktor terakhir, katakan 8 Jepit SP / instruksi bukan 4 DP Jepit / inst, tetapi bisa sangat berbeda dari itu. GPU yang lebih tua, misalnya, hanya melakukan DP sekitar 1/8 tingkat SP. Jika Anda pernah mengutip angka untuk sistem Anda, Anda harus eksplisit tentang yang Anda gunakan jika tidak presisi ganda karena orang akan menganggap itu nomor, jika tidak.
Juga, jika chip Anda mendukung instruksi FMA (multiply-add-add), dan dapat melakukannya dengan kecepatan penuh, maka kebanyakan orang menghitung ini sebagai 2 operasi floating-point meskipun penghitung kinerja perangkat keras mungkin menghitungnya hanya sebagai satu instruksi.
Terakhir, Anda juga dapat melakukan ini untuk akselerator apa pun yang mungkin ada di sistem Anda (seperti GPU atau Xeon Phi) dan menambahkan kinerja itu ke kinerja CPU untuk mendapatkan total teoritis.
sumber
Saya memahami bahwa Anda meminta nilai teoretis, tetapi karena ini hampir selalu tidak dapat diakses oleh kode nyata, bahkan LINPACK, Anda mungkin ingin menjalankan (dioptimalkan) DGEMM untuk matriks yang sangat besar. Alasan saya lebih suka metode ini adalah karena memperlihatkan beberapa kekurangan prosesor tertentu yang mencegah mereka dari mencapai nilai kegagalan puncak teoretis mereka.
Misalnya, GPU NVIDIA saat ini melakukan operasi integer dan floating-point pada pipa yang sama. Ini berarti bahwa Anda hanya dapat mencapai puncak kegagalan teoretis jika Anda tidak melakukan perhitungan integer sama sekali . Karena pengindeksan larik dan segala bentuk akses data lainnya memerlukan aritmatika bilangan bulat di suatu tempat, tidak ada kode yang dapat mencapai kegagalan puncak teoretis pada GPU NVIDIA. Dalam kebanyakan kasus, seseorang melihat ~ 80% sebagai batas atas. Untuk CPU yang mengeluarkan operasi integer dan floating-point secara bersamaan, ini bukan masalah.
Pada beberapa prosesor multicore seperti GPU seperti Intel Knights Corner dan Blue Gene / Q, lebih sulit untuk mencapai puncak kegagalan daripada pada CPU tradisional untuk masalah pipa yang serupa (walaupun keduanya dapat mencapai ~ 90% dari puncak dalam DGEMM besar setidaknya ).
sumber