首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CUDA矩阵乘法的实现

CUDA矩阵乘法的实现
EN

Stack Overflow用户
提问于 2014-12-05 17:29:41
回答 2查看 1.7K关注 0票数 2

如果你能帮我澄清一些GPU性能的细节,那就太好了,因为我已经在这里呆了几个星期了。另外,我很抱歉我的英语很差,但我会尽力解释这个问题。

关于我的问题。让我们看一看非常简单的程序--使用共享内存的密集矩阵乘法。据我所知,Nvidia在cuda编程指南中提供了它的实现之一(以下是链接):http://docs.nvidia.com/cuda/cuda-c-programming-guide/#shared-memory

这很简单,我想每个熟悉数据自动化系统的人都已经看到了。但是让我们来衡量一下这个内核的性能(Gflops)。使用"Nvprof“实用程序,我们可以度量一些度量来计算浮点操作的计数,而使用cuda事件,我们可以度量内核的执行时间。

因此,对于平方矩阵乘法(每个矩阵中的2048x2048浮点),我们有(1.7180e+10)/(0.054 * 10^9) Gflpos = 318 Gflops。

现在重要的是,我使用的是GeForce GTX泰坦卡,其峰值性能在单精度上大约为3.1TFLOPS。因此,我们仅达到峰值性能的1/10左右,但我们已经使用了我从大学CUDA课程中了解到的所有优化(共享内存、合并内存访问等等)。在这里,我猜想这是因为它是内存限制问题,但据我所知,这是不对的。例如,cuBlas(如果我是对的) SGEMM函数达到了峰值性能的71%左右。当然,我知道要达到cuBlas成绩是很困难的,但是为什么我连一次也达不到呢?

因此,问题是:

( 1)我的推理正确吗?

( 2)为什么我不能达到顶峰的一半,主要原因是什么?

3)我还可以使用哪些其他优化?(在这里,你所知道的一切都是非常有用的--文章、建议等等)

感谢您的关注!

EN

Stack Overflow用户

回答已采纳

发布于 2014-12-05 19:00:13

看一下您所提到的代码,代码只是一个简单的解释示例,但不能实际使用,因为它不考虑其他优化因素。在我的学习经验中,从这类例子中优化性能是没有效果的。

当然,您看不到cuBlas的源代码,但是很少有开源项目(包括岩浆 )具有矩阵乘法的实际实现。MAGMABLAS文件夹中的MAGMABLAS源代码包含了它的BLAS实现,这对我学习矩阵乘法是如何实际实现的很有帮助。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27321505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档