Mientras que hace, cuando empecé a hacer un poco de álgebra lineal en C
, que me llegó como una sorpresa ver que hay tan pocos tutoriales para BLAS
, LAPACK
y otros fundamentales API
s, a pesar de que de alguna manera son las piedras angulares de muchas otras bibliotecas. Por eso empecé a coleccionar todos los ejemplos / tutoriales que pude encontrar en todo el Internet para BLAS
, CBLAS
, LAPACK
, CLAPACK
, LAPACKE
, ATLAS
, OpenBLAS
... en este repo Github .
Bueno, debo advertirte que, como ingeniero mecánico, tengo poca experiencia en la gestión de un repositorio de git o GitHub. Primero les parecerá un completo desastre a ustedes. Sin embargo, si logra superar la estructura desordenada, encontrará todo tipo de ejemplos e instrucciones que podrían ser de ayuda. He probado la mayoría de ellos, para asegurarme de que compilan. Y los que no compilan he mencionado. He modificado muchos de ellos para que sean compilables con GNU compilers
( gcc
, g++
y gfortran
). He hecho MakeFile
s que se puede leer para aprender cómo se puede llamar individuales Fortran/FORTRAN
rutinas en una C
o C++
programa. También he puesto algunas instrucciones de instalación para mac y linux (¡lo siento, chicos de Windows!). También he hecho algunosbash
.sh
archivos para la compilación automática de algunas de estas bibliotecas.
Pero yendo a su otra pregunta: BLAS
y LAPACK
más bien API
no son específicos SDK
. Son solo una lista de especificaciones o extensiones de lenguaje en lugar de implementaciones o bibliotecas. Dicho esto, existen implementaciones originales de Netlib en FORTRAN 77
que la mayoría de la gente se refiere a (confusamente!) Cuando se habla de BLAS
y LAPACK
. Entonces, si ve muchas cosas extrañas al usar estos API
s es porque en realidad estaba llamando a FORTRAN
rutinas en C
lugar de C
bibliotecas y funciones. ATLAS
y OpenBLAS
son algunas de las mejores implementaciones de BLAS
y LACPACK
que yo sepa. Se ajustan al original API
, aunque, a mi entender, se implementan enC/C++
desde cero (¡no estoy seguro!). Hay implementaciones de GPGPU de los API
s que usan OpenCL
: CLBlast , clBLAS , clMAGMA , ArrayFire y ViennaCL para mencionar algunas. También hay implementaciones específicas de proveedores optimizadas para hardware o plataforma específicos, lo que desaconsejo encarecidamente que cualquiera las use.
Mi recomendación para cualquiera que quiera aprender usando BLAS
y LAPACK
en C
aprender FORTRAN-C
primero es la programación mixta. El primer capítulo del repositorio mencionado está dedicado a este asunto y allí he recopilado muchos ejemplos diferentes.
PD: He estado trabajando en la rama de desarrollo del repositorio de vez en cuando. ¡Parece un poco menos desordenado!