知方号

知方号

优化批量矩阵乘法opencl代码

优化批量矩阵乘法opencl代码

你的第一个测试之所以快得多,是因为每个测试的工作量不同。实际上是50倍的倍数。

方阵乘法的大O为O(n^3)。请看:why is the time complexity of square matrix multiplication defined as O(n^3)?因此,10k平方矩阵的乘法实际上比单个100x100乘法多100万倍的工作量。您20000次执行100x100乘法并不能弥补一次将大矩阵相乘所需的大量工作。

矩阵乘法只是许多点积,你的算法只是将点积分成几组以便于处理,并且在下面的计算中没有使用任何特殊的技巧来减少数字。

对于您的小型矩阵测试:

代码语言:javascript复制Total dot products: 10^4MADs per dot product: 10^2Total matrix-multiply operations: 20000 = 2*10^4Total multiply-adds: 2* 10^(4+2+4) = 2*10^10 = 20,000,000,000

200亿。

大矩阵测试:

代码语言:javascript复制Total dot products: 10^8MADs per dot product: 10^4Total multiply operations: 1 (or 10^0)Grand total multiply-adds: 10 ^ (8 + 4 + 0) = 10^12 = 1,000,000,000,000

1000亿。

从技术上讲,您的10000x10000测试运行速度更快--只需40倍的运行时间即可处理50倍以上的操作。

在这里阅读

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。