La biblioteca de plantillas de matrices (MTL) es una biblioteca de álgebra lineal para programas en C++ .
El MTL utiliza programación por plantillas , lo que reduce considerablemente la longitud del código. Todas las matrices y vectores están disponibles en todos los formatos numéricos clásicos: float, double, complex<float>o complex<double>.
Además, la programación genérica permite el uso de tipos arbitrarios siempre que proporcionen las operaciones necesarias. Por ejemplo, se pueden usar formatos de enteros arbitrarios (por ejemplo, unsigned short), tipos para aritmética de intervalos (por ejemplo, boost::interval) de las bibliotecas Boost C++ , cuaterniones (por ejemplo, boost::quaternion), tipos de mayor precisión (por ejemplo, la biblioteca GNU Multi-Precision ) y tipos definidos por el usuario apropiados.
MTL admite varias implementaciones de matrices densas y matrices dispersas . MTL2 fue desarrollado por Jeremy Siek y Andrew Lumsdaine. [ 1 ]
La última versión, MTL4, fue desarrollada por Peter Gottschling y Andrew Lumsdaine. Contiene la mayor parte de la funcionalidad de MTL2 y añade nuevas técnicas de optimización como la meta-optimización; por ejemplo, el desenrollado de bucles de contenedores de tamaño dinámico se puede especificar en la llamada a la función. La escalabilidad del rendimiento, independiente de la plataforma, se logra mediante estructuras de datos y algoritmos recursivos. [ 2 ]
Las aplicaciones genéricas se pueden escribir en notación natural, por ejemplo v += A*q - w;, mientras que la biblioteca se encarga de los algoritmos apropiados: productos matriz-vector frente a productos matriz-vector frente a productos escalar-vector, etcétera. El objetivo es encapsular los problemas de rendimiento dentro de la biblioteca y proporcionar a los científicos una interfaz intuitiva. MTL4 se utiliza en diferentes paquetes de elementos finitos y volúmenes finitos , por ejemplo, el proyecto FEniCS . [ 3 ]
Véase también
Referencias
- ↑ JG Siek y A. Lumsdaine: The Matrix Template Library: A Generic Programming Approach to High Performance Numerical Linear Algebra . ISCOPE 1998. Archivado el 12 de mayo de 2008 en Wayback Machine.
- ↑ P. Gottschling, DS Wise y MD Adams: Algoritmos matriciales transparentes a la representación con rendimiento escalable. ICS '07: Actas de la 21.ª conferencia internacional sobre supercomputación, págs. 116-125, ACM Press, Nueva York, 2007. Archivado el 20 de julio de 2008 en Wayback Machine.
- ↑ Página web de Dolfin dentro del proyecto FEniCS. Archivada el 4 de enero de 2009 en Wayback Machine.
Enlaces externos
- Página principal de MTL
- Página principal de MTL4
- Bibliotecas numéricas de C++