【问题标题】:Improving Memory Access time in OpenCL改善 OpenCL 中的内存访问时间
【发布时间】:2014-11-18 18:27:15
【问题描述】:

对于全局内存中的数组 X,我需要在每次内核执行中写入两个值。

X[p]=mul1+mul2;
X[p+a]=mul1-mul2;

这里的“a”可以从 0 到非常高的值。我观察到这两个写入在很大程度上减慢了我的内核。

  1. 在 OpenCL 中提高内存写入性能的最佳方法是什么?
  2. 合并内存写入是否只能用于内核内部写入?

【问题讨论】:

  • 'p' 值是线程相关的,'a' 是内核常量吗?
  • 是的,p 取决于线程 ID,a 是一个常数。
  • 您的操作方式非常理想。唯一能以有意义的方式帮助您的另一件事是使用内存更快的设备。

标签: opencl pyopencl


【解决方案1】:

假设p 与您的线程 ID 线性相关,那么您正在以正确的方式做事。您可以尝试将X+a 作为第二个参数传递给您的内核以执行Y[p]=mul1-mul2; 而不是X[p+a]=mul1-mul2;,但我怀疑它会更快。 关于第二个问题,如果您正在考虑拥有两个内核,一个执行加法,另一个执行减法并同时启动它们,您不能确定它们会并行运行。我再次怀疑它最终会更快。

【讨论】:

    猜你喜欢
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2016-04-11
    相关资源
    最近更新 更多