Biblioteca MKL

De MateWiki
Saltar a: navegación, buscar
Warning.png Este artículo está en versión beta. El autor de este artículo no lo ha terminado todavía, por favor no lo edites hasta que elimine este mensaje.


MKL[1] es una biblioteca desarrollada por Intel para realizar operaciones relacionadas con álgebra numérica. Esta biblioteca es muy rápida sobre procesadores Intel. Es la biblioteca que emplea MATLAB para realizar las operaciones de álgebra numérica. También puede usarse con otros entornos de cálculo numérico como GNU Octave o R.

1 ¿Qué es una biblioteca?

En programación, una biblioteca es un conjunto de funciones que se agrupan en módulos, para que se utilicen en otros programas, sin necesidad de tener que escribir de nuevo esas funciones. Por ejemplo, las denominadas toolboxes de MATLAB son bibliotecas de programación.

Normalmente las bibliotecas se refieren a un tema muy específico. Hay bibliotecas para estadística, para métodos numéricos, para tratamiento de imágenes, para procesar ficheros de audio, para generar gráficos, etc.

2 ¿Qué es MKL?

La biblioteca Intel Math Kernel Library contiene funciones optimizadas para realizar diferentes operaciones matemáticas en procesadores fabricados por Intel. Se emplea mucho en entornos científicos, de ingeniería y financieros, ya que puede resolver sistemas lineales con diferentes tipos de matrices (densas, sparse), transformada rápida de Fourier y cualquier operación que requiera manipular vectores y matrices.

La biblioteca está disponible para sistemas Windows, GNU/Linux y Mac. En Windows y Mac es necesario adquirir una licencia comercial para poder emplear la biblioteca[2]. En cambio, en GNU/Linux puede conseguirse una licencia personal sin coste[3].

Hay dos maneras de usar esta biblioteca para acelerar nuestros programas:

  • Podemos usarla directamente escribiendo nuestros programas en C, C++ o FORTRAN. Este modo es complejo, y los programas tienen que ser escritos a muy bajo nivel.
  • Podemos emplear un programa que enlace con la biblioteca, y nos permita usarla de manera transparente y sencilla.

Por ejemplo, cuando estamos realizando cualquier operación con matrices en MATLAB, en realidad estamos empleando la biblioteca MKL de manera inadvertida. En cambio, cuando usamos otros programas, emplean otras bibliotecas que no funcionan de manera optimizada en procesadores Intel. Por este motivo, programas como GNU Octave son más lentos en la mayoría de operaciones que MATLAB.

Para que un programa de cálculo como GNU Octave o R funcione con la biblioteca MKL no es necesario cambiar los programas, sino simplemente recompilar el programa para que emplee la biblioteca.

2.1 ¿Por qué funciona la biblioteca simplemente recompilando?

Los nombres de las funciones contenidas en una biblioteca y los parámetros de entrada y salida de cada función se conocen con el término 'interfaz y determinan cómo hay que llamar a una biblioteca desde un programa. Normalmente, bibliotecas diferentes tendrán interfaces diferentes. Pero en el caso de métodos numéricos hay tipos específicos de bibliotecas que tienen la misma interfaz, aunque internamente funcionen de manera diferente (por ejemplo, usando métodos optimizados para un procesador, como el caso de la MKL).

En estos casos, si la interfaz de la biblioteca no cambia, se puede usar una nueva biblioteca sin tocar ni una sola línea de código de nuestros programas. En el caso de programas interpretados (como los escritos en lenguaje MATLAB, por ejemplo), bastaría con volver a ejecutar el programa para que usara la nueva biblioteca. En el caso de programas compilados, es necesario generar de nuevo el ejecutable (recompilar) para que emplee la nueva biblioteca.

En concreto, de todas las funciones que están contenidas en la MKL, la interfaz que ofrece a los programas es la denominada Basic Linear Algebra Subprograms[4]. Existen otras bibliotecas que usan la misma interfaz, como por ejemplo la biblioteca LAPACK[5], que es la biblioteca que usan GNU Octave y R por defecto.

En sistemas GNU/Linux, dado que es posible adquirir una licencia personal para propósitos no comerciales, es posible recompilar tanto GNU Octave[6] como R[7] para usar la biblioteca MKL, y conseguir rendimientos similares a MATLAB en operaciones con matrices.

3 Influencia de la arquitectura

Artículos principales: arquitectura de un ordenador, complejidad de un algoritmo, eliminación gaussiana.

El rendimiento de los métodos numéricos para álgebra lineal no dependen ya de la complejidad del algoritmo. Los algoritmos están muy establecidos, y no hay margen para avances en la complejidad. La mejora del rendimiento se ha debido a cambios en la arquitectura de los ordenadores donde se implementan.

La secuencia de operaciones es más importante que la cantidad de operaciones.

Arquitectura Von Neumann. Análisis de Von Neumann de la eliminiación gaussiana[8]


4 Cómo compilar Octave con MKL

[1]

5 Referencias

  1. Math Kernel Library (software.intel.com)
  2. Intel MKL purchase (software.intel.com)
  3. Intel Non-Commercial Software Development (software.intel.com)
  4. Basic Linear Algebra Subprogramas (BLAS) (Wikipedia EN)
  5. LAPACK (Wikipedia EN)
  6. Using Intel MKL in GNU Octave (software.intel.com)
  7. http://software.intel.com/en-us/articles/build-r-301-with-intel-c-compiler-and-intel-mkl-on-linux Build R 3.01 with MKL on Linux] (software.intel.com)
  8. Grcar, Joseph F. John von Neumann's Analysis of Gaussian Elimination and the Origins of Modern Numerical Analysis. SIAM Review, 53(4), pp. 607–682, 2011. (enlace a PDF sin suscripción)