Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 什么';纹理上传的速度是多少?_Performance_Image Processing_Cuda_Gpu - Fatal编程技术网

Performance 什么';纹理上传的速度是多少?

Performance 什么';纹理上传的速度是多少?,performance,image-processing,cuda,gpu,Performance,Image Processing,Cuda,Gpu,我想上传两个图像到GPU内存,我感兴趣的是我能多快做到这一点 事实上,使用CPU比较RAM中的两个位图会更快吗?或者将它们上传到GPU并使用GPU并行性来完成吗?由于内存访问是这里的瓶颈,因此仅在CPU中完成很可能会更快。使其并行运行不太可能给您带来任何好处,内存访问本质上是一种串行操作。这个问题的答案非常有争议,完全取决于您的系统配置。这意味着您必须自己进行基准测试。可能影响您处境的因素: 公羊的速度 GPU总线的速度 是否在GPU和CPU之间共享RAM 然而,我确实认为在一般情况下(例如,总

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


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

由于内存访问是这里的瓶颈,因此仅在CPU中完成很可能会更快。使其并行运行不太可能给您带来任何好处,内存访问本质上是一种串行操作。

这个问题的答案非常有争议,完全取决于您的系统配置。这意味着您必须自己进行基准测试。可能影响您处境的因素:

  • 公羊的速度
  • GPU总线的速度
  • 是否在GPU和CPU之间共享RAM

  • 然而,我确实认为在一般情况下(例如,总线速度为GB/s),将图像上传到GPU并在GPU上进行差异比较会更快。

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

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

    拿一个典型的中端卡(如GTX460)来说,您将获得84 GB/s的内存带宽。请注意,对于PCI-E2.0 x16链路,您必须在总线上进行一次跳跃,这在理论上是8GB/s,实际上是5.5

    请注意,科特林斯基的答案并不完全正确。你可以做并行比较,然后做并行缩减,在这种情况下,更大的GPU设备带宽最终会成功

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

    编辑:


    多次比较是指您是否在GPU内存中原位修改图像。因此,它值得再进行一次比较(缓存不会减少它),同时不会招致另一个副本的惩罚。

    前两个答案,两个相反的观点。是否有一个基准可以显示上传速度?我不知道你如何从巴士速度得出最后一句话。CPU的计算量通常大于带宽,CPU-GPU的带宽通常较小(如果共享,则等于)。那么,将所有数据移动到GPU到底有什么帮助呢?@Bahbar我在处理过程中考虑了GPU端的实际并行性,但整个问题都非常依赖于系统,并且可以很容易地双向解决。例如,核心计数和SIMD实现肯定会有助于CPU。当然,真正的问题是他需要处理多少数据才能开始。GPU的速度更快,包括CPU的传输,意味着CPU没有足够的计算能力来有效利用其可用带宽(因为CPU-GPU的b/w比可用的CPU小,我们讨论的是每个内存项的一个差异。这一点很关键)。我是说没有一个系统具有这些特性(真的,如果CPU永远不能全部计算,为什么要给CPU加这么多b/w?)如果你想多次比较,最好是缓存结果。。。