我正在用 C++ 编写一个用于双曲偏微分方程的软件。几乎所有的符号都是向量和矩阵的。最重要的是,我需要线性代数求解器。是的,向量和矩阵的大小可以有很大差异(从 1000 到只能通过分布式内存计算解决的大小,例如集群或类似架构)。如果我生活在乌托邦,我就会有线性求解器,它可以很好地扩展到集群、GPU 和多核。
在考虑应该表示变量的数据结构时,我想到了 boost.ublas 和 MTL4。两个库都兼容 blas 3 级,MTL4 实现了稀疏求解器,并且比 ublas 快得多。它们都没有实现对多核处理器的支持,更不用说分布式内存计算的并行化了。另一方面,MTL4 的开发依赖于 2 个开发人员的单独努力(至少据我所知),我确信 ublas 存在于 boost 库中是有原因的。此外,英特尔的 mkl 库包括将其结构与 ublas 绑定的示例。我想将我的数据和软件绑定到将长期坚如磐石、开发和维护的数据结构。
最后,问题。您在使用 ublas 和/或 mtl4 方面有何经验,您会推荐什么?
谢谢,mightydodol