Perbedaan kinerja antara ATLAS dan MKL?

31

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?

Stefano Borini
sumber
4
Sekarang ada juga OpenBLAS . Lihat patokan vs MKL di Sandybridge .
Mark Mikofski

Jawaban:

18

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 .

Tommy
sumber
13

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.

Matt Knepley
sumber
4
Matt benar, tetapi GotoBLAS tidak lagi dalam pengembangan. Ini masih bekerja dengan cukup baik untuk beberapa prosesor modern, tetapi MKL pasti akan melampaui untuk DGEMM pada prosesor masa depan jika belum. Kami belum mengujinya di Westmere, misalnya, tetapi saya tidak akan terkejut jika GotoBLAS telah kalah.
Bill Barth
2
Dr. Goto dibeli oleh M $. Kesedihan . . .
meawoppl
2
OpenBLAS adalah proyek sumber terbuka yang diambil dari GotoBLAS. github.com/xianyi/OpenBLAS
ShadowWarrior
Goto bekerja di MKL sekarang. Tidak ada lagi kesedihan :-)
Jeff
6

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.

F'x
sumber
Benar. Ada banyak bukti anekdotal (dan profil aktual) untuk mendukung jawaban lain di sini (sebagaimana dibuktikan oleh tautan). Namun, jarak tempuh Anda mungkin bervariasi, dan selalu membantu untuk mengetahui bahwa Anda benar.
Geoff Oxberry
1
Ini mengganggu profil, karena MKL adalah $ 499. Namun mereka menawarkan uji coba 1 bulan
Lyndon White
@ Lyndon Putih apakah ini masih terjadi? Halaman unduhan tampaknya menunjukkannya gratis
Luciano
Ya, saya percaya sekarang gratis, saya melihat banyak orang menggunakannya sekarang.
Lyndon White
6

Jawaban sebelumnya untuk pertanyaan ini telah mencakup sebagian besar poin penting, tetapi saya ingin menambahkan satu komentar sehubungan dengan ini:

Apakah MKL lebih unggul untuk beberapa tugas?

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:

Secara teori, tidak ada perbedaan antara teori dan praktik. Tapi, dalam praktiknya, ada.

Pengungkapan Penuh: Saya bekerja untuk Intel.

Jeff
sumber
Apakah ada kemungkinan MKL open source?
Royi
Untuk tujuan apa? MKL sudah gratis seperti dalam bir. Ada nilai pendidikan yang jauh lebih besar dalam membaca kode sumber BLIS. Jika Anda ingin membaca assembly, coba OpenBLAS.
Jeff
1

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.

fcruz
sumber