代码之家  ›  专栏  ›  技术社区  ›  Daniel MoÅ¡mondor

GPU编程-传输瓶颈

  •  4
  • Daniel MoÅ¡mondor  · 技术社区  · 14 年前

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

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

    无论如何,有这样的基准应用程序吗?我的意思是,为了测量主存储器的gpu传输吞吐量…

    编辑(问题澄清):

    有一次你启动了一个应用程序,它给出了两个数字:

    1. 主存储器与显卡存储器之间的MB/s传输速率,从主存储器到图形,纹理上传

    2. 主存储器与图形卡存储器之间的MB/s传输速率,从图形到主存储器,纹理下载

    我只想再一次把手放在上面。

    又一次编辑(发现了一些东西):

    在这里 http://www.benchmarkhq.ru/english.html?/be_mm.html (搜索texbench)是一个应用程序,可以单向测量吞吐量…

    3 回复  |  直到 14 年前
        1
  •  2
  •   Tom    14 年前

    要测量主机到设备的内存带宽,可以使用 bandwidthTest cuda sdk的示例(从 CUDA site )

        2
  •  1
  •   artaak    14 年前

    首先:全局(GPU)内存和纹理的区别是由缓存定义的。纹理有它,全局内存-没有。

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

    第三:从主机到(GPU)设备的传输速率随GPU的生成而变化,并由PCI Express总线和数据大小决定。

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

        3
  •  0
  •   Anycorn    14 年前

    您可以使用CUDA配置文件告诉您在CUDA函数中花费的时间,包括内存传输时间。您可以编写非常简单的传输测试用例并对其进行度量。在我看来,当您测量您的特定测试用例时,这会更好。

    查找cuda_配置文件及其使用方法。 http://www.drdobbs.com/cpp/209601096?pgno=2

    你的问题有点难理解,你想测量主机和GPU之间的传输(纹理缓存实际上与之无关)还是内核内部的纹理读取?

    推荐文章