首页 > 编程知识 正文

确认测试以什么作为基本测试单元(mpi测试)

时间:2023-05-05 03:43:15 阅读:79742 作者:4046

BLAS表示基本线性代数子程序,与扩展的LAPACK -线性代数包一起构成了大多数机器学习算法的数学库。 在任何ML程序的最低级别,所有内容都可以转换为一系列数字、数组、矩阵、舒适的咖啡豆以及这些结构上的数学操作。 这些数学运算构成了ML的基本原子元素。

因为我们正在讨论ML的基础层,所以在这个水平上发生的任何加速都会推动几乎所有使用它的算法。 因此,为了在性能和效率方面击败市场上的机器学习解决方案,DataThings花费了大量时间和精力来理解、实验和测试此库的各种实现。

本博文提供了在四个不同的BLAS实现中测试六个数学操作的结果。

我们的基准测试BLAS实现了以下:

OpenBLAS (最优秀、最有名的BLAS库之一(Eigen 3.3.4)线性代数的c模板库(CuBLAS CuSolver ) Nvidia的BLAS和LAPACK的GPU实现) bey

基准

此处显示基准和结果操作。 对每个矩阵大小执行100次模拟,并对每个操作、每个矩阵大小和每个BLAS库所花的时间进行平均。 最短的时间显然是最好的。 用绿色强调显示。 第二个最好的选择是橙色,最后一个选择是红色。

矩阵乘法(ML中最常用的操作几乎无处不在) )。

求矩阵的逆(用于具有多个未知数的方程式求解器) ) ) ) ) ) ) )。

QR分解(用于具有多个未知数的方程式求解器) ) ) ) ) ) ) ) )。

LU分解(用于具有多个未知数的方程式求解器) )

SVD分解(用于在PCA等算法中查找参数以减少数据空间) ) ) ) ) ) ) ) ) ) )。

EVD分解(用于在PCA等算法中查找参数并减少数据空间) ) ) ) ) ) ) ) ) ) )。

结论

对于小矩阵的大小,Eigen是最快的。 在大多数情况下,在某个阈值矩阵的大小后,Cuda会继承(除了矩阵求逆和奇异值分解以外)。 我认为这是因为cuda库还在开发中,并非所有函数都已优化。

这些基准显示,为了支付将数据从CPU传输到GPU的成本并在Cuda上执行计算,至少需要100x100的矩阵大小。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。