Katakanlah saya menjalankan komputasi superkomputer pada 100k core selama 4 jam di http://www.nersc.gov/users/computational-systems/edison/configuration , bertukar sekitar 4 PB data melalui jaringan dan melakukan sekitar 4 TB I / HAI. Penghitungan semuanya bilangan bulat, sehingga hasilnya benar atau salah (tidak ada kesalahan angka menengah).
Dengan asumsi kode itu benar, saya ingin memperkirakan probabilitas bahwa perhitungannya salah karena kegagalan perangkat keras. Apa cara yang baik untuk melakukan ini? Apakah ada sumber yang bagus untuk angka yang diperlukan untuk membuat perkiraan seperti itu?
error-estimation
Geoffrey Irving
sumber
sumber
Jawaban:
Sudahkah Anda melihat berbagai laporan exascale yang telah keluar? Kegagalan yang sulit bukan masalah yang penting saat ini - tentu saja, itu terjadi, tetapi frekuensinya tidak cukup tinggi untuk menyebabkan kekhawatiran besar. Tetapi mereka diperkirakan cukup sering pada sistem exascale dengan atau lebih banyak kode yang perlu disiapkan kode untuk bereaksi dengan tepat. Saya percaya bahwa masalah ini telah dituangkan dalam laporan tentang peta jalan menuju exascale.O ( 10)8)
Ingatan saya adalah bahwa di antara berbagai mode kegagalan, bit tunggal membalik dalam memori atau pada core prosesor bukan masalah yang paling signifikan. Sebaliknya, itu seluruh node turun, misalnya karena kegagalan disk, kesalahan sistem operasi, dll. Karena itu desain exascale semua panggilan untuk pemeriksaan berkala kode ke dalam RAM flash, lebih disukai mentransmisikan data pos pemeriksaan off-node. Kode kemudian harus dapat memulai kembali dengan cepat dari keadaan yang disimpan sebelumnya jika sistem menemukan bahwa satu simpul telah hilang, mengganti simpul ini dengan simpul mulai-panas di tempat lain dalam sistem.
sumber
Saya kira, Anda mulai dengan mengumpulkan tingkat kesalahan komponen, seperti DRAM, seperti penelitian Google ini tentang DRAM Errors in the Wild: Studi Lapangan Skala Besar Mereka menemukan ~ 1% peluang untuk mendapatkan satu kesalahan yang tidak dapat diperbaiki per tahun.
Saya tidak yakin apakah itu yang Anda minati. Saya akan lebih tertarik pada kesalahan yang tidak terdeteksi. Kesalahan sedemikian sehingga metode pemeriksaan kesalahan yang khas tidak akan terdeteksi. Misalnya, ketika Anda mengirim paket melalui optik, mereka disertai dengan semacam CRC, yang memungkinkan untuk kemungkinan kecil kesalahan melintas.
PEMBARUAN: makalah ini Arsitektur untuk Deteksi dan Pemulihan Kesalahan Online dalam Prosesor Multicore berbicara tentang arsitektur multicore yang andal, tetapi juga membahas berbagai aspek keandalan sistem dan memiliki daftar pustaka
sumber
Anda dapat mencoba meminta admin dari cluster yang Anda hitung. Saya membayangkan sebagai bagian dari proses validasi mereka, mereka telah menghadapi masalah memperkirakan kemungkinan kesalahan perangkat keras.
sumber
Kedengarannya epik. Jika tidak ada yang melakukan percobaan ini, Anda dapat mempertimbangkan menjalankan 100k core terpisah melakukan sesuatu seperti mengulangi input sha1 berulang-ulang, melihat berapa tingkat kesalahannya. (Tidak dapat diukur, saya curiga), dari sana melakukan hal yang sama, tetapi minta mereka berdagang hasil rantai hash sesering mungkin untuk mendapatkan tingkat kesalahan jaringan Anda. Ini saya bayangkan juga sangat kecil, tapi saya kira Anda bisa mendapatkan setidaknya beberapa menggunakan supercluster Anda selama beberapa jam :)
Pendekatan ini memastikan bahwa setiap perhitungan benar, karena hashing sangat sensitif terhadap swap bit tunggal, sedangkan bahkan perhitungan integer saja dapat menyembunyikan kesalahan di cabang, yaitu seluruh perhitungan tidak akan berbentuk elips pada setiap status memori berturut-turut.
Saya telah bekerja pada cara untuk memastikan bahwa kode telah dijalankan dengan benar oleh kluster eksternal yang motivasinya curang dengan mengirimkan hasil palsu. Solusi yang saya konvergensi adalah mengintegrasikan hash ke dalam perhitungan dengan beberapa frekuensi yang membuat curang lebih efisien daripada melakukan pekerjaan.
sumber