Uso de librerías de álgebra optimizadas (I)

Enlace de descarga al programa.

Las librerías CUBLAS están basadas en las librerías BLAS (Basic Linear Algebra Subprograms). Las librerías BLAS por su parte han sido desarrolladas y optimizadas durante años hasta ser hoy día el estándar de facto en la industria y la investigación cuando lo que se pretende es obtener aplicaciones eficientes y muy rápidas.

Las librerías BLAS o LAPACK (os dejo el enlace al final) están divididas en tres niveles, cada uno de ellos contiene un conjunto de operaciones, las primeras tratan con vectores unidimensionales y constantes y las otras dos se ocupan de operaciones con matrices. La bibliografía explica mucho mejor de lo que yo puedo hacerlo todo esto, así que consultarla.

Si sois curiosos en el ámbito de la HPC o de la programación en GPU seguramente sabréis de la existencia de multitud de librerías que contienen elementos para la manipulación de matrices o vectores (a fin de cuentas la mayor parte de los cálculos de interés práctico acaban siendo matrices o transformadas…). Para alguien que no tiene un conocimiento avanzado de los lenguajes de programación puede resultar incómodo muchas veces leer la documentación tratando de orientarse, pero os puedo decir que merece la pena y que hay que enfrentarse a ello si se quiere ser productivo.

Las librerías que nos ocupan están escritas en Fortran 90 pero pueden llamarse desde C/C++, el precio que hay que pagar es adaptar nuestras matrices o vectores a la forma en la que trabaja Fortran. Esto puede suponer al principio algún pequeño lío pero una vez que se asimila no supone mayores complicaciones.

Os dejo un pequeño programita con anotaciones. Jugad con todo, sobre todo con los parámetros de la función y con la forma en la que rellenamos los huecos de la matriz.

Id practicando, iré tocando alguna librería más y a ver si consigo sacar algo en claro de MAGMA para resolver sistema y hacer comparaciones con algoritmos híbridos.

Como siempre, para cualquier duda están los comentarios.

Página de LAPACK/BLAS.
Referencias de CUBLAS.

Esta entrada fue publicada en C/C++, CUDA, matemáticas. Guarda el enlace permanente.

2 respuestas a Uso de librerías de álgebra optimizadas (I)

  1. david dijo:

    hey hola, como pedo invertir una matriz en cuda

    • Samuel dijo:

      Hola David, es algo complejo porque es dependiente del tipo de tu matriz (dispersa, tridiagonal, ortogonal…) pero en el caso general lo mejor es hacer una descomposición previa y terminar la resolución en la GPU, es lo más simple. Si la matriz no cabe en memoria el caso es mucho más complejo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s