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 ++?

Jawaban:


10

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


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/


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 ).



0

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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.