我正在用 C++ 为我的数学博士学位写一个科学应用程序,它基于一些重线性代数,主要是 BLAS 3 级例程。所用矩阵的大小差异很大,理想情况下,我希望能够处理 10000 或更高阶的非常大的矩阵。到目前为止,我已经使用了多线程的英特尔 MKL,可以很好地扩展到 8 个内核。我的算法产生正确的结果,但是在双精度算术中非常不稳定,这是由于采用高功率导致的累积误差。此外,由于我可以访问大型超级计算机集群,并且我的算法可以轻松地跨多个节点扩展,我想使用 MPI 将应用程序扩展到数百个节点。
我的目标是找到一个模板化的 BLAS 库:
支持多精度算术,支持多线程,支持MPI
到目前为止我的发现:MTL4 - Matrix Template library 4 似乎完成了上述所有工作,但是开源版只能在一个内核上运行,而超级计算版的成本相当高。
Eigen - 似乎不支持多核?如果与 MKL 链接,它是否支持多核和 MPI?
犰狳 - 以上所有吗?
我将不胜感激任何见解和建议
亲切的问候,
玛丽亚