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