找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 59|回复: 4

指令和内存吞吐量

[复制链接]
发表于 2018-7-7 21:40:37 | 显示全部楼层 |阅读模式
ESC4000G3
分析CUDA程序的性能,结果显示如下:
微信图片_20180707213337.jpg
我想问一下Low Memcpy Throughput是什么意思?该如何解决这个问题呢?我有点击后面的more,显示的是使用页锁定内存,可是我的程序中本来就是使用的页锁定内存,我的程序如下:
360截图161908268781125.png
我该从哪方面解决Low Memcpy Throughput这个问题呢?

另外,还想问一下指令吞吐量和内存吞吐量是什么意思吗?一直没搞懂它们的含义,还有就是怎么看它们的峰值性能?
回复

使用道具 举报

发表于 2018-7-7 22:14:17 | 显示全部楼层
Jetson TX2
你好,

请查看是否进行了很多次很小大小的传输, 如果是这样的情况, 请尽量尝试将他们合并成一次较大的大小的传输。有助于提高效率。

但很多时候可以无视这个提示的,甚至需要反着来, 例如原本一次大传输,你想利用异步传输能力,此时可以考虑将原本的大传输拆分成N份,每份只有1/N大小(你会得到profiler的警告),但却可以让计算和部分传输并行进行,此时对于整体性能有好处,则可以无视警告。

以及,对于一些kernel的结果的回传(你这里的cufft我不懂),可以考虑使用zero-copy buffer来容纳需要被回传的结果,可以可以进一步的让回传和计算并行,很多时候具有很正面的好处(相比单独一次计算+单独一次传输)的提升的,因为后者只能前后串行,而直接kernel回写到内存却可以让线程内部的计算和回传,或者线程间的计算和回传并行进行。

关于最后的“指令吞吐量”和“内存吞吐量”这个不清楚,一般我们说的是访存的吞吐”率“(一般是GB/s)和计算的吞吐率(浮点一般是GFlops), 关于吞吐量,请提供您看到的它们的上下文。

周末快乐。
屠戮人神。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-8 10:58:46 | 显示全部楼层
Tesla P100
屠戮人神 发表于 2018-7-7 22:14
你好,

请查看是否进行了很多次很小大小的传输, 如果是这样的情况, 请尽量尝试将他们合并成一次较大的 ...

谢谢您周末帮我解答疑问,周末愉快
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
屠戮人神 发表于 2018-7-7 22:14
你好,

请查看是否进行了很多次很小大小的传输, 如果是这样的情况, 请尽量尝试将他们合并成一次较大的 ...

你好,我还想再问您一个问题,就是上面的那个分析报告中,最后一个栏中显示“Low Computs Utilization”  ——The multiprocessors of one or more GPUs are mostly idle. 可是我查看GPU的利用率可以达到80%-90%,这是为什么?
cb62e1e8dafd696d433b26c3525a6aeb_213528cbjzc432xbjbbvbg.jpg
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
CC_Cassiel 发表于 2018-7-12 11:26
你好,我还想再问您一个问题,就是上面的那个分析报告中,最后一个栏中显示“Low Computs Utilization”  ...

本来不想回复这个的。

这就如同你的被提示Low Memcpy Throuput一样,一些profiler的提示其实不需要管的。

Low Compute Utilization这个, 如果不能你的程序一上去就开始启动kernel。 例如你单独抽取测试某个kernel的时候,准备工作用了20s,kernel运行了1s, 则profiler就会报告你只有个位数的Ultilization. 但是这种情况无视就好。它是用的整个进程的运行时间来算的。不代表你的具体kernel的运行期间的GPU使用率。无需太过紧张。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表