【问题标题】:random access gpgpu performance drop?随机访问gpgpu性能下降?
【发布时间】:2018-09-13 03:20:06
【问题描述】:

我听说在 GPU 上使用随机访问的数组执行计算时性能会下降。

我的问题是这种性能下降有多严重?

搜索一些 cmets 似乎意味着代码在 cpu 上运行得更快。但是看到 gpus 和 cpus 在 int 和 flop 上的巨大差异,似乎很难相信性能会下降这么糟糕。

【问题讨论】:

  • 做一个实验。以合并的方式添加两个数组,然后不合并。
  • 当我拿到我的新卡,出售当前卡以期待 rtx 并且目前在 igpu 上运行时会尝试。

标签: cuda gpgpu


【解决方案1】:

我认为这与缓存丢失有关。 GPU 也有 L1 L2 缓存,如果你命中随机内存空间,那么你将有更多机会丢失缓存。也因为 GPU 具有称为内存合并的特殊内存访问模式。它正在访问范围广泛的内存。这就是为什么 GPU 在运行 SIMD 友好代码时如此之快的原因。但是如果你访问随机内存空间,它会破坏内存合并。我认为最好阅读 cuda 文档以了解 GPU 的工作原理。

【讨论】:

  • 谢谢。我将阅读有关文档的更多信息以进行澄清。问题是我正在开发一个数组位置可能在运行时发生变化的程序,并且想知道性能下降的严重程度。因为如果 gpus 上的性能下降足够严重,我认为它可能被设计或拆分为在 cpu 中执行随机访问操作步骤和在 gpu 上执行非随机访问计算。
猜你喜欢
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 2019-04-27
  • 2018-08-20
  • 1970-01-01
  • 2017-05-04
  • 2014-06-08
相关资源
最近更新 更多