ATLAS adalah pengganti BLAS / LAPACK gratis yang menyesuaikan dirinya dengan mesin saat dikompilasi. MKL adalah perpustakaan komersial yang dikirim oleh Intel. Apakah kedua pustaka ini sebanding dalam hal kinerja, atau apakah MKL lebih unggul untuk beberapa tugas? Jika ya, yang mana?
linear-algebra
libraries
performance
intel-mkl
Stefano Borini
sumber
sumber
Jawaban:
MKL (dari Intel) dioptimalkan untuk prosesor Intel, dan mungkin memiliki "keunggulan" di sana dalam banyak kasus. Tetapi juga "terkenal" untuk memilih jalur kode "terburuk" untuk prosesor AMD, seperti dijelaskan di sini .
sumber
BLAS tidak monlitik. BLAS1 dan BLAS2 adalah bandwidth memori terbatas, dan tidak ada banyak yang dapat Anda lakukan untuk mempercepat mereka di luar yang jelas (loop membuka gulungan, pemblokiran cache untuk level 2). BLAS3 lebih menarik dan tolok ukur prototipikal di sini adalah perkalian matriks-matriks. Setahu saya GOTOBlas selalu menjadi pemenang yang jelas di sini, lihat misalnya perbandingan ini atau ini dan justifikasi ini .
Sekarang bertahun-tahun kemudian, dan kami memiliki Proyek BLIS . Ini adalah alternatif gratis terbaik untuk MKL.
sumber
Profil, jangan berspekulasi! (juga berfungsi sebagai "Tolok Ukur, jangan berspekulasi!" )
Tidak ada yang umum yang bisa dikatakan, itu sangat tergantung pada tugas yang ingin Anda lakukan (BLAS 1/2/3, misalnya) dan perangkat keras yang Anda gunakan (jelas, Intel MKL tidak berjalan pada prosesor ARM, untuk contoh; tetapi bahkan di antara prosesor Intel, Anda dapat mengharapkan perbedaan kinerja).
Hal lain yang menurut saya layak untuk disebutkan adalah AMD juga menawarkan perpustakaan matematika yang disetel ke prosesor mereka, AMD Core Math Library . Ini tidak kaya fitur seperti MKL Intel, tapi itu termasuk BLAS.
sumber
Jawaban sebelumnya untuk pertanyaan ini telah mencakup sebagian besar poin penting, tetapi saya ingin menambahkan satu komentar sehubungan dengan ini:
Tim MKL berada dalam posisi unik untuk mengetahui tentang set instruksi Intel masa depan dan implementasinya dalam prosesor tertentu. Selain itu, mereka memiliki akses ke simulator prosesor eksklusif dan perangkat keras pra-produksi yang tidak dapat digunakan oleh siapa pun di luar Intel. Dengan demikian, MKL berada di atas angin sehubungan dengan tingkat pengetahuan tentang produk masa depan dan ketika mereka memperoleh pengetahuan ini. Dengan demikian, seharusnya tidak terlalu mengejutkan jika mereka menghasilkan implementasi BLAS yang lebih baik daripada orang lain, setidaknya di awal masa pakai produk dengan fitur baru.
Di sisi lain, Intel telah cukup terbuka tentang set instruksi AVX-512 dan telah menyediakan Intel® Software Development Emulator (SDE) yang memungkinkan pengembang untuk meniru instruksi AVX-512 pada prosesor yang tidak mendukung ini secara asli. Karena itu, tidak akan terlalu mengejutkan jika implementasi open-source berkualitas tinggi dari BLAS tersedia untuk prosesor Intel yang mendukung AVX-512 di awal masa pakai produk-produk ini.
Tentu saja, berapa banyak perbedaan yang dibuat untuk memiliki informasi terperinci tentang prosesor tertentu versus dasar-dasar algoritma aljabar linier padat tidak sepenuhnya diselesaikan. Kutipan berikut membahas masalah ini lebih baik daripada yang saya bisa:
Pengungkapan Penuh: Saya bekerja untuk Intel.
sumber
Saya pikir perbedaan utama antara perpustakaan BLAS vendor dan open source perpustakaan BLAS adalah waktu yang dibutuhkan untuk open source untuk mendukung fitur perangkat keras terbaru.
Karena BLAS digunakan secara luas, adalah kepentingan vendor untuk mendukung fitur perangkat keras terbaru. Misalnya, pertimbangkan ekstensi vektor AVX Intel yang diperkenalkan dengan prosesor "sandy-bridge" pada Jan 2011. MKL memiliki dukungan AVX bahkan sebelum CPU tersedia, tetapi baru-baru ini ATLAS (akhir 2011) mulai meluncurkan dukungan untuk AVX .
Juga, jika aplikasi Anda benar-benar membutuhkan kinerja dan sebelum Anda mulai membuat tolok ukur berbagai pustaka BLAS yang berbeda atau mulai meretas untuk mengoptimalkan apa pun: buat profil aplikasi Anda. Adalah umum bahwa intuisi manusia bukanlah prediktor profiler yang sangat efektif, setidaknya saya tahu saya tidak! Jadi alih-alih menghabiskan waktu mengoptimalkan secara acak, tentukan aplikasi Anda dan secara sistematis dekati setiap hambatan.
sumber