布拉斯特区+多个精度+ MPI
BLAS+Multiple Precision+MPI
我正在用c++为我的数学博士学位写一个科学应用程序,它是基于一些繁重的线性代数,主要是BLAS 3级例程。所用矩阵的大小变化很大,理想情况下,我希望能够处理10000阶或更高阶的非常大的矩阵。到目前为止,我已经使用了英特尔MKL,多线程,很好地扩展到8核。我的算法产生正确的结果,但是在双精度算法中,由于采用高功率导致的累积误差,因此非常不稳定。此外,由于我可以访问大型超级计算机集群,并且我的算法可以轻松地跨多个节点扩展,因此我希望使用MPI来跨数百个节点扩展应用程序。
我的目标是找到一个模板化的BLAS库:
支持多精度算术,支持多线程,支持MPI
我到目前为止的发现:MTL4 -矩阵模板库4似乎完成了上述所有功能,但是开放源代码版只能在一个核心上运行,而且超级计算版相当昂贵。
Eigen -似乎不支持多核?如果与MKL连接,它是否支持多核和MPI ?
犰狳-做以上所有?
我将非常感谢任何见解和建议
亲切的问候,玛丽亚
根据您的矩阵问题,Trilinos的Tpetra包可能值得一看。它是在标量类型上模板化的,因此可以使用多个精度类型。它的目标是超级计算机上的大规模应用,因此人们可以期待良好的并行性能。
希望有帮助!
编辑:而且是免费的!
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 正在将csv文件读取为双精度矢量
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 如何在C++中的同一函数中使用字符串和双精度
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- MPI突然停止了对多个核心的操作
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 如何打印boost多精度128位无符号整数
- 检查是否以特定精度给出双精度
- 设置 Visual Studio for MPI: 找不到标识符错误
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- C 字符串返回字符串的整数/双精度/长整型值
- 为什么将双精度转换为 int 似乎在第 16 位数字之后将其四舍五入?
- 如何使双精度值的 C++ 和 C# 中的结果相同
- 使用浮点数和双精度数的非常小数字的数学
- 布拉斯特区+多个精度+ MPI