GPU编程 - 转移瓶颈

时间:2010-03-10 18:09:38

标签: benchmarking cuda gpu-programming

由于我希望我的GPU为我做一些计算,我对测量'纹理'上传和下载速度的主题感兴趣 - 因为我的'纹理'是GPU应该紧缩的数据。

我知道从主内存到GPU内存的传输是首选的方式,所以我希望这样的应用程序只有在需要处理大量数据且回读的结果很少的情况下才能有效。

无论如何,任何此类基准测试应用程序?我的意思是,用于测量主存储器> GPU传输吞吐量...

编辑(问题澄清):

有一个应用程序,你开始了,它给出了2个数字:

  1. mb / s主存和显卡内存之间的传输速率,从主TO图,纹理上传

  2. 主内存和显卡内存之间的mb / s传输速率,从图形到主要,纹理下载

  3. 我只想再次举手。

    另一个编辑(找到了一些东西):

    此处http://www.benchmarkhq.ru/english.html?/be_mm.html(搜索TexBench)是一款以一种方式衡量吞吐量的应用...

3 个答案:

答案 0 :(得分:2)

要测量主机到设备的内存带宽,您可以使用CUDA SDK中的bandwidthTest示例(从CUDA site下载)。

答案 1 :(得分:1)

首先:全局(GPU)内存和纹理之间的差异由缓存定义。纹理有它,全局记忆 - 没有。

第二:从主机到(GPU)设备的传输速率对于纹理和全局存储器是相同的。

第三:从主机到(GPU)设备的传输速率因GPU生成而异,由PCI-express总线和数据大小决定。

例如,请参阅:http://www.accelereyes.com/wiki/index.php?title=GPU_Memory_Transfer

答案 2 :(得分:0)

您可以使用cuda配置文件告诉您在cuda功能上花费的时间,包括内存传输时间。您可以编写非常简单的传输测试用例并进行测量。在您衡量特定测试用例时,我认为这会更好。

查找CUDA_PROFILE以及如何使用它。 http://www.drdobbs.com/cpp/209601096?pgno=2

你的问题有点难以理解,你想测量主机和GPU之间的传输(纹理缓存与真正相关)或内核中的纹理读取吗?