Estoy escribiendo un software para ecuaciones diferenciales parciales hiperbólicas en C++. Casi todas las anotaciones son vectoriales y matriciales. Además de eso, necesito el solucionador de álgebra lineal. Y sí, los tamaños del vector y de la matriz pueden variar considerablemente (desde, por ejemplo, 1000 hasta tamaños que solo pueden resolverse mediante computación de memoria distribuida, por ejemplo, clusters o arquitectura similar). Si hubiera vivido en la utopía, hubiera tenido un solucionador lineal que se adapta muy bien para clusters, GPU y multinúcleos.biblioteca de plantillas ublas vs. matriz (MTL4)
Al pensar en la estructura de datos que debería representar las variables, llegué accros al boost.ublas y MTL4. Ambas bibliotecas son compatibles con Blas nivel 3, MTL4 implementa soluciones dispersas y es mucho más rápido que ublas. Ambos no tienen implementado soporte para procesadores multinúcleo, sin mencionar la paralelización para cálculos de memoria distribuida. Por otro lado, el desarrollo de MTL4 depende del único esfuerzo de 2 desarrolladores (al menos como yo lo entendí), y estoy seguro de que hay una razón por la que las ublas están en la biblioteca de impulso. Además, la biblioteca mkl de Intel incluye el ejemplo para unir su estructura con ublas. Me gustaría vincular mis datos y software a la estructura de datos que será sólida como una roca, desarrollada y mantenida durante un largo período de tiempo.
Finalmente, la pregunta. ¿Cuál es su experiencia con el uso de ublas y/o mtl4, y qué recomendaría?
dar gracias, mightydodol
grande gracias por las respuestas ... – dodol
@mightydodol: eres bienvenido. Agregué un enlace a un documento que estaba buscando todo el día. Puede que le resulte interesante. También corrigió un error fáctico relacionado con ScaLAPACK. – stephan
gracias para señalar a eigen. @stephan Sí, el documento fue realmente interesante. Casi el mismo problema que el mío. – dodol