纹理上传的速度是多少?

时间:2011-05-11 14:34:18

标签: performance image-processing cuda gpu-programming

我想将两个图像上传到GPU内存,我感兴趣的是我能做多快?

事实上 - 将RAM中的两个位图与CPU进行比较,或者将它们上传到GPU并使用GPU并行性来实现它会更快吗?

3 个答案:

答案 0 :(得分:2)

如果您运行CUDA设备带宽示例,您将获得上传速度的基准。

假设DDR3三通道1600MHz RAM,你将获得38 GB / s的内存带宽。

使用像GTX460这样的典型中端卡,你将获得84 GB / s的内存带宽。请注意,您必须在总线上跳跃,理论上是8GB / s,实际上是PCI-E2.0 x16链路的5.5。

请注意,kotlinski的答案并不完全正确。您可以进行并行比较,然后进行并行缩减,在这种情况下,更大的GPU设备带宽最终可以胜出。

我认为答案可能是:上传到GPU并进行一次比较。如果进行多次比较(例如,在GPU上保留和修改),则可能获得增益。

编辑:

多次比较是指您是否原位修改了GPU内存中的图像。因此,它值得进行另一次比较(缓存不会削减它),而不会导致另一个副本在整个总线上受到惩罚。

答案 1 :(得分:1)

由于内存访问是这里的瓶颈,因此在CPU中执行此操作的速度极快。让它并行运行不太可能给你任何东西,内存访问本质上是一个串行操作。

答案 2 :(得分:0)

这个问题的答案是值得商榷的,完全取决于您的系统配置。这意味着您必须自己完成基准测试。可能影响您情况的因素:

  1. 你的RAM速度
  2. GPU总线的速度
  3. 您是否在GPU和Linux之间共享RAM? CPU
  4. 但是,我认为在一般情况下(例如,使用GB / s顺序的busspeeds),将图像上传到GPU并在那里进行差异比较会更快。