Apakah ada implementasi level referensi BLAS di C / C ++?

11

Implementasi netlib BLAS adalah referensi yang sangat baik, sebagian besar tidak dioptimalkan dan didokumentasikan dengan baik (misalnya zgemm ). Namun, itu di Fortran 77, membuatnya agak tidak dapat diakses oleh mereka yang memiliki pendidikan pemrograman yang lebih modern. Apakah ada implementasi level referensi BLAS, seperti netlib, di C / C ++?

Max Hutchinson
sumber

Jawaban:

10

Sudahkah Anda melihat implementasi Perpustakaan Ilmiah GNU ? Saya menemukan kode sumber cukup mudah dibaca dan rutinitas didokumentasikan dengan baik.

Juan M. Bello-Rivas
sumber
Terlihat bagus untukku. Dokumentasinya agak kurang, tetapi nama-nama variabel dipilih dengan cukup baik yang saya pikir jelas. Saya mungkin akan menambahkan komentar pembuka dari rutinitas netlib BLAS. Apa tepatnya yang Anda bawa masalah? Apakah Anda punya alternatif?
Max Hutchinson
6

Implementasi bahasa C yang terkenal dari BLAS adalah ATLAS. Di antara fitur-fitur yang berguna:

  1. Rutinitas aljabar diimplementasikan baik sebagai versi C yang mudah serta assembler yang dioptimalkan untuk banyak arsitektur dan varian.
  2. Sistem build memiliki "auto-tuner" yang mengkompilasi beberapa varian dari perpustakaan ATLAS untuk menentukan mana yang akan menjadi yang tercepat pada mesin yang diberikan.

http://math-atlas.sourceforge.net/

oakad
sumber
Saya melihat ATLAS tetapi melewatkan ini. Jalan menuju implementasi referensi adalah "src / blas / reference", dengan "ref" disisipkan antara karakter tipe dan nama rutin dan dengan argumen karakter ditambahkan.
Max Hutchinson
3

Netlib juga menghasilkan CLAPACK , yang termasuk BLAS, tetapi itu hanya kode fortran yang dijalankan melalui f2c dan karena itu agak kikuk (misalnya zgemm ).

Max Hutchinson
sumber
1

Untuk implementasi berkinerja tinggi yang tidak hanya di antara yang berkinerja tertinggi (lebih tinggi dari 85% puncak pada 60 core Intel Xeon Phi), tetapi juga merupakan yang paling indah, lihat di BLIS:

https://github.com/flame/blis

Robert van de Geijn
sumber
Sepertinya ini bukan implementasi tingkat referensi
mabraham
Kami ingin mengatasinya sebagai implementasi referensi berkinerja tinggi.
Robert van de Geijn
0

Saya memiliki implementasi beberapa bit BLAS / LAPACK di RNP dan RNP2 .

Victor Liu
sumber
Ini menarik, tetapi sudah pasti pasca-BLAS dan kurang lurus dibandingkan GSL dan implementasi referensi di ATLAS.
Max Hutchinson
-1

Kami saat ini sedang mengerjakan Kursus Open Online Massive, "LAFF-On High-Performance Computing" yang menggunakan dgemm sebagai contoh yang mengarahkan seseorang melalui berbagai level paralelisasi: level instruksi, OpenMP, MPI.

Ini bukan implementasi referensi untuk BLAS, tetapi ini adalah referensi untuk cara membuat kode BLAS (untuk kinerja). Untuk mendapat informasi, kunjungi www.ulaff.net

Robert van de Geijn
sumber