В той час назад, коли я почав робити деяку лінійну алгебру в C
, вона прийшла до мене як сюрприз , щоб побачити так мало навчальні посібники для BLAS
, LAPACK
і інших фундаментальних API
s, незважаючи на те , що вони якісь - то чином наріжні багатьох інших бібліотек. З цієї причини я почав збирати все приклади / уроки я зміг знайти по всьому інтернету для BLAS
, CBLAS
, LAPACK
, CLAPACK
, LAPACKE
, ATLAS
, OpenBLAS
... в цьому Github репо .
Ну, я повинен попередити вас, що як інженер-механік у мене мало досвіду в управлінні таким сховищем git або GitHub. Спочатку це здасться вам повним безладом, хлопці. Однак якщо вам вдасться подолати брудну структуру, ви знайдете всілякі приклади та інструкції, які можуть допомогти. Я спробував більшість з них, щоб бути впевненим, що вони складають. А про ті, що не складаються, я згадав. Я змінив багато з них , щоб бути скомпільовані з GNU compilers
( gcc
, g++
і gfortran
). Я створив MakeFile
s, які ви можете прочитати, щоб дізнатися, як можна викликати окремі Fortran/FORTRAN
процедури в програмі C
або C++
програмі. Я також поклав кілька інструкцій щодо встановлення для mac та linux (вибачте, хлопці з Windows!). Я також зробив деякіbash
.sh
файли для автоматичної компіляції деяких із цих бібліотек.
Але перейдемо до вашого іншого питання: BLAS
і LAPACK
, швидше API
, не є конкретними SDK
. Вони є лише списком специфікацій або розширень мови, а не реалізаціями чи бібліотеками. З урахуванням сказаного, є оригінальні перетворенням Netlib в FORTRAN 77
, які більшість людей ставляться до (смутно!) , Коли мова йде про BLAS
і LAPACK
. Отже, якщо ви бачите багато дивних речей при використанні цих API
s, це тому, що ви насправді викликали FORTRAN
підпрограми, C
а не C
бібліотеки та функції. ATLAS
і OpenBLAS
це одні з найкращих реалізацій BLAS
та LACPACK
наскільки я знаю. Вони відповідають оригіналуAPI
Хоча, наскільки мені відомо, вониC/C++
з нуля (не впевнений!). Є реалізації GPGPU API
s, які використовують OpenCL
: CLBlast , clBLAS , clMAGMA , ArrayFire та ViennaCL, щоб згадати деякі. Існують також конкретні постачальники реалізації, оптимізовані для конкретного обладнання або платформи, що я сильно заважаю комусь їх використовувати.
Моя рекомендація всім, хто хоче навчитися використовувати BLAS
та LAPACK
ін, C
- спочатку навчитися FORTRAN-C
змішаному програмуванню. Перша глава згаданого репо присвячена цій справі, і там я зібрав багато різних прикладів.
PS Я час від часу працював над відділом розробників сховища . Здається трохи менш безладним!