BLAS+多精度+MPI

Posted

技术标签:

【中文标题】BLAS+多精度+MPI【英文标题】:BLAS+Multiple Precision+MPI 【发布时间】:2013-01-21 14:27:09 【问题描述】:

我正在用 C++ 为我的数学博士学位编写一个科学应用程序,它基于一些重线性代数,主要是 BLAS 3 级例程。所用矩阵的大小差异很大,理想情况下,我希望能够处理 10000 或更高阶的非常大的矩阵。到目前为止,我已经使用了多线程的英特尔 MKL,可以很好地扩展到 8 个内核。我的算法产生正确的结果,但是在双精度算术中非常不稳定,这是由于采用高功率导致的累积误差。此外,由于我可以访问大型超级计算机集群,并且我的算法可以轻松跨多个节点扩展,我想使用 MPI 将应用程序扩展到数百个节点。

我的目标是找到一个模板化的 BLAS 库:

支持多精度算术, 支持多线程, 支持 MPI

到目前为止我的发现: MTL4 - Matrix Template library 4 似乎可以做到以上所有,但是开源版只能运行在一个内核上,而超级计算版的成本相当高。

Eigen - 似乎不支持多核?如果与 MKL 链接,它是否支持多核和 MPI?

犰狳 - 以上所有都可以吗?

如果有任何见解和建议,我将不胜感激

亲切的问候,

玛丽亚

【问题讨论】:

如果您确定 MTL4 完全满足您的需求,我建议您直接联系 MTL4 销售人员并索取一个免费教育许可证。 【参考方案1】:

根据您的矩阵问题,Tpetra package of Trilinos 可能值得一看。它以标量类型为模板,因此您可以使用多种精度类型。它针对超级计算机上的大规模应用程序,因此可以期待良好的并行性能。

希望对你有帮助!

编辑:而且它是免费的!

【讨论】:

以上是关于BLAS+多精度+MPI的主要内容,如果未能解决你的问题,请参考以下文章

MPI_Allgather 产生不一致的结果

Boost 的多精度模拟低精度快速浮点数

多精度加法的意外表现

全局多标签性能评估的平均精度/召回率是不是正确?

提升多精度随机生成器种子误差

提升多精度 cpp_int 乘以浮点数