有谁知道用于计算尺寸为A x N和N x B的两个矩阵之间的GEMM样式汉明距离的优化CUDA内核吗?这个问题与GEMM几乎相同,但是它为每个向量{1 ... N}计算sum(a_n!= b_n),而不是对每个向量元素进行乘法和求和。
我想在编写自己的代码之前先进行验证,因为这个问题相对普遍,但是我还没有成功找到它的代码。修改代码的建议也将非常出色。
编辑:
除了以下kangshiyin的建议外,我发现优化SGEMM实现的本演练对理解CUDA C编程指南中基本共享内存矩阵乘法示例之外的步骤也非常有帮助。
没错,您可以通过修改gemm()
代码来编写内核。CUDA示例具有的简单实现gemm()
,但这太简单了。性能受共享内存访问的限制,在开普勒设备上仅提供约250 Gflops。为了获得更高的性能,您可能需要检查gemm()
MAGMA中的代码。
http://icl.cs.utk.edu/magma/index.html
这两篇论文还告诉您如何实现和调整gemm()
。
http://www.netlib.org/lapack/lawnspdf/lawn267.pdf
与gemm()
FMA指令的硬件支持快速乘法和加法运算不同的是,所需的比较和加法运算可能需要更多指令,因此性能应较低。考虑到gemm()
开普勒的峰值性能约为3 Tflops。汉明距离矩阵计算可能会获得0.5〜2 Tflops。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句