Beberapa waktu yang lalu, ketika saya mulai mengerjakan beberapa aljabar linier C, saya terkejut melihat ada begitu sedikit tutorial untuk BLAS, LAPACKdan hal-hal mendasar lainnya API, terlepas dari kenyataan bahwa mereka bagaimanapun juga merupakan landasan dari banyak perpustakaan lainnya. Untuk alasan itu saya mulai mengumpulkan semua contoh / tutorial saya bisa menemukan seluruh internet untuk BLAS, CBLAS, LAPACK, CLAPACK, LAPACKE, ATLAS, OpenBLAS... di repo Github ini .
Yah, saya harus memperingatkan Anda bahwa sebagai seorang insinyur mesin saya memiliki sedikit pengalaman dalam mengelola repositori git atau GitHub seperti itu. Ini pertama-tama akan tampak seperti kekacauan total bagi kalian. Namun jika Anda berhasil mengatasi struktur yang berantakan, Anda akan menemukan semua jenis contoh dan instruksi yang mungkin bisa membantu. Saya telah mencoba sebagian besar dari mereka, untuk memastikan mereka dapat dikompilasi. Dan yang tidak dapat dikompilasi telah saya sebutkan. Saya telah memodifikasi banyak dari mereka agar dapat dikompilasi dengan GNU compilers( gcc, g++dan gfortran). Saya telah membuat MakeFileyang dapat Anda baca untuk mempelajari bagaimana Anda dapat memanggil Fortran/FORTRANrutinitas individu dalam sebuah Catau C++program. Saya juga telah memasukkan beberapa instruksi instalasi untuk mac dan linux (maaf windows guys!). Saya juga sudah membuatnyabash .sh file untuk kompilasi otomatis dari beberapa pustaka ini.
Tapi pergi ke pertanyaan Anda yang lain: BLASdan LAPACKagak APIs tidak spesifik SDK. Mereka hanyalah daftar spesifikasi atau ekstensi bahasa daripada implementasi atau pustaka. Dengan mengatakan bahwa, ada original implementasi oleh Netlib di FORTRAN 77, yang kebanyakan orang merujuk (membingungkan!) Ketika berbicara tentang BLASdan LAPACK. Jadi jika Anda melihat banyak hal aneh saat menggunakan ini APIadalah karena Anda sebenarnya memanggil FORTRANrutinitas, Cbukan di Cpustaka dan fungsi. ATLASdan OpenBLASbeberapa implementasi terbaik BLASdan LACPACKsejauh yang saya tahu. Mereka sesuai dengan aslinya API, meskipun, menurut pengetahuan saya, mereka diterapkanC/C++dari awal (tidak yakin!). Ada implementasi GPGPU yang APImenggunakan OpenCL: CLBlast , clBLAS , clMAGMA , ArrayFire dan ViennaCL untuk menyebutkan beberapa. Ada juga implementasi khusus vendor yang dioptimalkan untuk perangkat keras atau platform tertentu, yang saya sangat tidak menyarankan siapa pun untuk menggunakannya.
Rekomendasi saya untuk siapa saja yang ingin belajar menggunakan BLASdan LAPACKdalam Cadalah belajar FORTRAN-Cpemrograman campuran terlebih dahulu. Bab pertama dari repo yang disebutkan didedikasikan untuk masalah ini dan di sana saya telah mengumpulkan banyak contoh berbeda.
PS Saya telah mengerjakan cabang dev dari repositori dari waktu ke waktu. Sepertinya tidak terlalu berantakan!