改进OpenCL中的内存访问时间

改进OpenCL中的内存访问时间,opencl,pyopencl,Opencl,Pyopencl,对于全局内存中的数组X,我需要在每次内核执行中写入两个值 X[p]=mul1+mul2; X[p+a]=mul1-mul2; 此处“a”的范围从0到非常高的值。我发现这两次写操作在很大程度上降低了我的内核速度 在OpenCL中提高内存写入性能的最佳方法是什么? 合并内存写入是否仅适用于内核内写入? 假设p与线程ID成线性关系,那么您的做法是正确的。您可以尝试向内核传递第二个参数X+aas来执行Y[p]=mul1-mul2;而不是X[p+a]=mul1-mul2;但我怀疑它是否真的会更快。 关于

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

X[p]=mul1+mul2;
X[p+a]=mul1-mul2;
此处“a”的范围从0到非常高的值。我发现这两次写操作在很大程度上降低了我的内核速度

在OpenCL中提高内存写入性能的最佳方法是什么? 合并内存写入是否仅适用于内核内写入? 假设p与线程ID成线性关系,那么您的做法是正确的。您可以尝试向内核传递第二个参数X+aas来执行Y[p]=mul1-mul2;而不是X[p+a]=mul1-mul2;但我怀疑它是否真的会更快。
关于你的第二个问题,如果你想有两个内核,一个执行加法,另一个执行减法,并同时启动它们,你不能确定它们会并行运行。我再一次怀疑它最终会更快

“p”值依赖于线程,而“a”是内核常量吗?是的,p依赖于线程ID,而a是常量。这样做是非常理想的。另一个可以帮助你的方法是使用内存更快的设备。