哪个内存适合这个OpenCL内核?

哪个内存适合这个OpenCL内核?,opencl,pyopencl,Opencl,Pyopencl,我一直在尝试在OpenCL中进行FFT。它对我来说是这样的内核 __kernel void butterfly(__global float2* twid, __global float2* X, const int n,} { /* Butterfly structure*/ } 我无数次地调用这个内核。因此,对全局内存的读/写需要花费太多的时间。twid(float2)数组只是读取的,从不进行操作,数组

我一直在尝试在OpenCL中进行FFT。它对我来说是这样的内核

     __kernel void butterfly(__global float2* twid, __global float2* X,
                    const int n,}
     {

        /* Butterfly structure*/
     }
我无数次地调用这个内核。因此,对全局内存的读/写需要花费太多的时间。twid(float2)数组只是读取的,从不进行操作,数组X是数组的读写类型

1.哪种类型的内存最适合此应用? 2.如果我使用本地内存,我是否能够将其作为参数传递给另一个内核,而不将其复制到全局内存


我是OpenCL的初学者

本地内存仅在工作组内可用;它不能被其他工作组看到,也不能被其他内核使用。只有全局内存和图像,并做这些事情


将本地内存视为用户管理的缓存,用于加速对工作组中相同全局内存的多次访问。

如果您正在对小内存进行FFT,则可以将其放入专用内存中。否则,正如Dithermaster所说,使用本地内存


此外,我还实现了一些FFT内核,并强烈建议您避免使用蝴蝶模式,除非您100%确信它。由于矢量化和良好的内存访问模式,简单的方案(甚至矩阵乘法)可能会显示更好的结果。蝶形方案针对顺序处理进行了优化。在GPU上,它可能表现出较差的性能。

使用优化的蝴蝶,性能甚至超过CUDAFFT!它的运行速度比标准OpenCL PyFFT快!私有内存和常量内存不一样吗?