Komunikasi overhead dalam superkomputer

10

Saya mencari referensi yang kredibel yang menyatakan berapa banyak sumber daya superkomputer menghabiskan pada koordinasi dibandingkan melakukan pekerjaan yang berhubungan dengan tugas yang sebenarnya. Sumber daya bisa menjadi kekuatan pemrosesan yang tersedia tetapi bahkan Watts tampak seperti unit yang valid.

Saya percaya salah satu profesor atau buku teks saya pernah berkata bahwa dalam sistem paralel besar-besaran, hingga setengah dari kekuatan pemrosesan yang tersedia dihabiskan untuk mengoordinasikan tugas dan penyampaian pesan. Sayangnya, sepertinya saya tidak dapat menemukan referensi ini atau materi lain tentang proporsi ini.

Saya menyadari ini akan sangat berbeda tergantung pada arsitektur superkomputer dan implementasi modern mungkin lebih efisien dalam hal ini, sehingga tinjauan umum metrik ini di beberapa arsitektur atau evolusi (sebelum dan sesudah perangkat keras yang mengirimkan pesan khusus) akan lebih baik.

Tomas Creemers
sumber
2
Anda dapat dengan mudah mendapatkan nomor apa pun yang Anda inginkan dengan memilih komputer, algoritma, dan implementasi yang sesuai.
David Ketcheson

Jawaban:

10

Benchmark favorit lama dalam komputasi kinerja tinggi adalah benchmark HPLinpack, yang mengukur kecepatan sistem komputer dalam operasi floating point per detik sambil memecahkan sistem persamaan linear yang sangat besar, padat, dan padat. Diasumsikan bahwa solusinya mengambil operasi floating point dan tester diizinkan untuk bervariasi untuk mencapai kinerja maksimum. 2/3n3+2n2n

Langkah-langkah tolok ukur meliputi RPEAK (jumlah maksimum teoritis operasi titik apung per detik untuk sistem) dan RMAX (jumlah operasi maksimum yang dicapai per detik dalam tolok ukur HPLinpack.)

Ini khas untuk RPEAK menjadi fraksi substansial dari RMAX, menunjukkan bahwa pada tugas benchmark ini, superkomputer saat ini dapat mencapai sebagian kecil dari kinerja puncak teoritis mereka. Misalnya, di peringkat superkomputer TOP500 November 2015, mesin tercepat, Tianhe-2, memiliki RPEAK = 54,902 petaflops dan RMAX = 33,863 petaflops.

Namun, tolok ukur HPLinpack secara luas dipandang tidak mewakili beban kerja saat ini. Hasil HPlinpack biasanya melebih-lebihkan kinerja superkomputer dalam aplikasi aktual oleh faktor besar.

Patokan baru, yang disebut HPCG, sedang dikembangkan. Tolok ukur ini melibatkan operasi yang biasa dilakukan dalam metode berulang untuk solusi sistem persamaan jarang besar yang timbul dari PDE diskretisasi. Beban kerja ini jauh lebih menantang untuk komputer berkinerja tinggi. Ini juga jauh lebih representatif untuk apa superkomputer digunakan dalam praktik.

Beberapa hasil awal dari HPCG datang di kurang dari 5% dari RPEAK. Misalnya, Tianhe-2 memiliki RPEAK = 54,902 petaflops dan HPCG di 0,58 petaflops (lihat referensi di bawah untuk presentasi tentang HPCG.)

Benchmark TOP500 HPLinpack dapat ditemukan di:

http://www.top500.org/

Presentasi tentang HPCG dapat ditemukan di:

http://www.hpcg-benchmark.org/downloads/isc15/HPCG-ISC15-FINAL-SLIDES_update1.pdf

Situs web HPCG ada di

http://www.hpcg-benchmark.org/

Brian Borchers
sumber
1
Saya ingin tahu dari mana datangnya spec dan harus mencarinya. Bagi orang lain yang ingin tahu, ini adalah operasi yang menghitung dekomposisi LU dengan pivot parsial, yaitu metode untuk menyelesaikan sistem padat. 2/3n3+2n2
Aurelius
3
Ini sepertinya tidak menjawab pertanyaan, karena tidak mengatakan apa pun tentang pengiriman pesan.
David Ketcheson
Ini sebagian menjawab pertanyaan dalam arti bahwa tolok ukur ini memberi tahu Anda seberapa efisien unit floating point sedang digunakan - Anda dapat mengurangi dari satu untuk mengetahui berapa banyak waktu yang dihabiskan untuk hal-hal lain, yang meliputi penyampaian pesan di antara hal-hal lain.
Brian Borchers
6

Jawaban jujurnya adalah kita tidak tahu. Jawabannya sangat bergantung pada apa yang sebenarnya sedang dijalankan dan kode apa yang telah ditulis pengguna. Seperti yang ditunjukkan oleh Brian Borchers, ada perbedaan besar antara dua tolok ukur di mana kita memiliki semua kode dan seharusnya tahu apa yang dilakukan kode itu, tetapi ada banyak ketidaksepakatan tentang seberapa representatif kode ini tentang apa yang sebenarnya dilakukan oleh pengguna superkomputer. Tanpa analisis kode sumber terperinci dan beberapa instrumentasi berat kode nyata pada mesin nyata, menemukan rasio ini nyaris mustahil. Ada beberapa proyek yang mulai mengumpulkan data yang mungkin bisa membuat masyarakat dekat untuk menjawab pertanyaan ini, tetapi sama sekali tidak diselesaikan.

Faktanya, pertanyaannya tidak terlalu jelas. Jika kartu komunikasi node node memiliki prosesor di atasnya yang hanya dapat digunakan untuk komunikasi, bagaimana Anda menghitung waktu yang dihabiskan kartu ini untuk tidak menangani komunikasi (atau hal lain)? Yaitu, apa yang dianggap sebagai "kekuatan pemrosesan yang tersedia"? Apakah kita menghitung program yang ditulis dengan buruk yang memiliki komputasi dan komunikasi rutin yang tidak dioptimalkan sama dengan yang dioptimalkan? Bagaimana jika seseorang menggunakan anti-pola yang dikenal dalam kode mereka yang sengaja memanfaatkan CPU? Bagaimana dengan program paralel memalukan yang tidak berkomunikasi sama sekali (ini dijalankan pada superkomputer, saya janji)?

Saya tidak akan membuang-buang waktu Anda mencoba untuk mengukur komentar spontan dalam sebuah buku atau dari profesor Anda. Pernyataan semacam ini ada untuk mengingatkan kita bahwa pemrograman paralel itu sulit dan umumnya dilakukan dengan buruk. Superkomputer juga tidak dirancang dengan sempurna untuk menghilangkan atau mengoptimalkan semua limbah.

Bill Barth
sumber