В то время назад, когда я начал делать некоторую линейную алгебру в 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являются скорее APIS не конкретные SDKs. Это просто список спецификаций или языковых расширений, а не реализации или библиотеки. С учетом сказанного, есть оригинальные претворением Netlib в FORTRAN 77, которые большинство людей относятся к (смутно!) , Когда речь идет о BLASи LAPACK. Итак, если вы видите много странных вещей при использовании этих APIs, это потому, что вы на самом деле вызывали FORTRANподпрограммы, Cа не Cбиблиотеки и функции. ATLASи OpenBLASявляются одними из лучших реализаций BLASи LACPACK, насколько я знаю. Они соответствуют оригиналу API, хотя, насколько мне известно, они реализованы наC/C++с нуля (не уверен!). Есть GPGPU реализации APIс использованием OpenCL: CLBlast , clBLAS , clMAGMA , ArrayFire и ViennaCL говоря уже о некоторых из них . Существуют также реализации конкретных производителей, оптимизированные для конкретного оборудования или платформы, и я настоятельно не рекомендую их использовать.
Я рекомендую всем, кто хочет научиться использовать BLASи LAPACKв первую очередь, Cизучить FORTRAN-Cсмешанное программирование. Этому посвящена первая глава упомянутого репо, в которой я собрал много разных примеров.
PS Я время от времени работаю над dev-веткой репозитория . Это кажется немного менее беспорядочным!