В то время как назад, когда я начал делать некоторую линейную алгебру в C
, она пришла ко мне как сюрприз, чтобы увидеть так мало учебных пособий для BLAS
, LAPACK
и других фундаментальных API
с, несмотря на то, что они каким-то образом являются краеугольными камнями из многих других библиотек. По этой причине я начал собирать все примеры/уроки я смог найти по всему интернету для BLAS
, CBLAS
, LAPACK
, CLAPACK
, LAPACKE
, ATLAS
, OpenBLAS
... в this Github repo.
Ну, я должен предупредить вас, что как инженер-механик у меня мало опыта управления таким репо или github. Сначала это будет казаться полным беспорядком для вас, ребята. Однако, если вам удастся преодолеть беспорядочную структуру, вы найдете всевозможные примеры и инструкции, которые могут помочь. Я пробовал больше всего убедиться, что они компилируются, и те, которые не компилируются, я уже упоминал.Я модифицировал многие из них для компиляции с GNU compilers
(gcc
, g++
и gfortran
). Я сделал MakeFile
, которые вы можете прочитать, чтобы узнать, как вы можете называть индивидуальные подпрограммы Fortran/FORTRAN
в программе C
или C++
. Я также поставил некоторые инструкции по установке для mac и linux (извините, ребята из Windows!). Я также сделал некоторые файлы bash
.sh
для автоматической компиляции некоторых из этих библиотек.
Но переход на другой Ваш вопрос: BLAS
и LAPACK
довольно API
не специфичный для SDK
s. Это всего лишь список спецификаций или языковых расширений, а не реализаций или библиотек. С учетом сказанного, есть оригинальные реализации от Netlib в FORTRAN 77
, о которых большинство людей ссылаются (смешно!), Когда говорят о BLAS
и LAPACK
. Поэтому, если вы видите много странных вещей при использовании этих API
, это потому, что вы на самом деле вызывали FORTRAN
процедуры в C
, а не C
библиотеки и функции. ATLAS
и OpenBLAS
- некоторые из лучших реализаций BLAS
и LACPACK
, насколько я знаю. Они соответствуют оригиналу API
, хотя, насколько мне известно, они реализованы на C/C++
с нуля (не уверен!). Существуют также специфические для вендоров реализации, оптимизированные для определенного оборудования или платформы, и я категорически не рекомендую их использовать.
Моя рекомендация для тех, кто хочет учиться, используя BLAS
и LAPACK
в C
чтобы узнать FORTRAN-C
смешанного программирования первым. Первая глава упомянутого репо посвящена этому вопросу, и там я собрал много разных примеров.
См. Также http://scicomp.stackexchange.com/questions/8052/what-is-the-relationship-of-blas-lapack-and-other-linear-algebra-libraries –