Saya ingin memprediksi runtimes untuk operasi aljabar linier padat pada arsitektur tertentu menggunakan perpustakaan tertentu. Saya ingin mempelajari model yang mendekati fungsinya
ukuran input runtime
untuk operasi seperti matrik-gandakan, tambahkan elemen-bijaksana, pecahkan segitiga, dll ....
Saya menduga bahwa runtime ini sebagian besar dapat diprediksi karena keteraturan operasi setelah Anda melampaui ukuran masalah yang cocok dengan nyaman dalam cache.
Pertanyaan:
- Apakah asumsi ini realistis? Apakah fungsi runtime cenderung hampir deterministik?
- Dapatkah saya berasumsi bahwa fungsi ini polinomial dalam ukuran input? (Yaitu saya perkirakan matriks padat dikalikan agar terlihat seperti untuk dan beberapa koefisien skalar)
- Apakah ada pekerjaan yang sudah ada sebelumnya di suatu tempat?
- Rencana saya saat ini adalah melakukan regresi kuadrat terkecil dengan regulator . Ada saran lain?
Sunting: Agar jelas saya sedang mencari runtimes, bukan FLOPs atau metrik kinerja umum lainnya. Saya bersedia membatasi diri pada satu arsitektur tertentu.
sumber
Ada banyak pekerjaan yang sudah ada sebelumnya. Kebanyakan pengembang perpustakaan aljabar linier memublikasikan hasil kinerja dalam hal kinerja floating-point yang dapat dikonversi menjadi waktu berjalan.
Googling untuk "kinerja DGEMM" misalnya, menghasilkan yang berikut: http://math-atlas.sourceforge.net/timing/3_5_10/index.html .
Secara umum, Anda dapat mengharapkan jawabannya tidak mulus. Akan ada lompatan atau lonjakan di sekitar ukuran masalah tertentu (yang berhubungan dengan ukuran cache). Anda juga harus mengharapkan dataran tinggi dalam tingkat, dan, oleh karena itu, daerah linear-ish untuk berbagai ukuran masalah. Saya tidak berharap polinomial sangat membantu.
Mengingat upaya pembandingan berbasis luas, mungkin lebih mudah untuk mentabulasi hasil dan menginterpolasi seperlunya. Apa tujuanmu
sumber
DGEMM