library c++ scientific-computing

library - armadillo c++



Armadillo vs. Blitz++ (4)

Como siempre en este caso, cuando se trata de álgebra lineal y C ++, sugiero con gusto echar un vistazo a Eigen.

http://eigen.tuxfamily.org/index.php?title=Main_Page

Probablemente una de las mejores bibliotecas de álgebra lineal de C ++ que se haya escrito en mi opinión.

Estoy iniciando un nuevo proyecto de computación científica en C ++ y, como se incluyen muchos procedimientos numéricamente extensos, estoy considerando usar Armadillo o Blitz ++ para un manejo efectivo de matriz / matriz / tensor. ¿Cuál es mejor usar?


Estamos muy contentos con Armadillo, que Rcpp a R usando el paquete de integración Rcpp R / C ++, el paquete resultante es RcppArmadillo

Conrad es muy útil y comprometido, y Armadillo está en desarrollo activo. Según mi entendimiento, Blitz ++, aunque rompe caminos en su tiempo y es muy influyente para el álgebra lineal con plantilla, ya no se desarrolla activamente.

Editar 2012-06-28 : Aparentemente hay un nuevo desarrollo de Blitz ++ en curso en el sitio de Sourceforge para Blitz .

Edit 2017-12-16 : Parece que Blitz++ ahora está en GitHub.


Para completar: recomendaría encarecidamente a Boost :: uBLAS, en caso de que alguien lo esté considerando. Lo he usado y el API es engorroso, y el rendimiento en general es inferior al de http://eigen.tuxfamily.org/index.php?title=Main_Page y Armadillo ; esto incluso se menciona en la sección de uBLAS frecuentes de uBLAS

P: ¿Debo usar uBLAS para nuevos proyectos?

R: Al momento de escribir (09/2012) hay muchas bibliotecas de matriz disponibles, por ejemplo, MTL4, armadillo, eigen ... uBLAS ofrece un buen rendimiento (pero no excepcional). Por otro lado, la última mejora importante de uBLAS fue en 2008 y no se realizó ningún cambio significativo desde 2009. Por lo tanto, uno debería hacerse algunas preguntas para ayudar a la decisión: ... ¿Fácil de usar? uBLAS es fácil de usar para cosas simples, pero necesita un conocimiento decente de C ++ cuando deja el camino. ¿Actuación? Hay alternativas más rápidas. ¿Innovador? uBLAS tiene más de 10 años y se perdió todo lo nuevo de C ++ 11.

"Estoy empezando un nuevo proyecto científico-computacional ..."

La API de Armadillo intenta imitar la sintaxis de MATLAB, que supongo que estás familiarizado.


Una cosa que encontré al trabajar con Ublas es que no brinda la opción de realizar operaciones como max(u,0) , u+1 , abs(u) donde u es un vector. Además, la sintaxis de Boost Ublas es complicada de escribir en comparación con ARMADILLO. También hay comparación de velocidad [clic] ( Comparar blitz ++, armadillo, boost :: MultiArray ) Por lo tanto, recomiendo Armadillo.