Cuda 在共享内存中创建阵列,不使用PyOpenCL中的模板
如何在共享内存中创建一个数组,而不使用中所示的模板修改内核。还是使用模板是官方的方式 在PyOpenCL中,我可以通过设置内核参数在本地内存中创建一个数组Cuda 在共享内存中创建阵列,不使用PyOpenCL中的模板,cuda,pycuda,Cuda,Pycuda,如何在共享内存中创建一个数组,而不使用中所示的模板修改内核。还是使用模板是官方的方式 在PyOpenCL中,我可以通过设置内核参数在本地内存中创建一个数组 kernel.set_arg(1,numpy.uint32(a_width)) ... KERNEL_CODE = """ __kernel void matrixMul(__local float* A_temp,...) { ...} """ 我不完全理解这个问题。我不使用Python,但非常了解OpenCL 在OpenCL
kernel.set_arg(1,numpy.uint32(a_width))
...
KERNEL_CODE = """
__kernel void matrixMul(__local float* A_temp,...)
{ ...} """
我不完全理解这个问题。我不使用Python,但非常了解OpenCL 在OpenCL中,有两种可能创建共享/本地内存缓冲区: 1) 您添加了一个内核参数,因为您有问题。 2) 请在内核内部静态定义缓冲区,如下所示:
__local buffer[1024];
使用OpenCL没有其他机会做到这一点。如何创建内核代码字符串以将其传递给OpenCL是另一个与Python相关的问题。我不是这方面的专家。我不完全理解这个问题。我不使用Python,但非常了解OpenCL 在OpenCL中,有两种可能创建共享/本地内存缓冲区: 1) 您添加了一个内核参数,因为您有问题。 2) 请在内核内部静态定义缓冲区,如下所示:
__local buffer[1024];
使用OpenCL没有其他机会做到这一点。如何创建内核代码字符串以将其传递给OpenCL是另一个与Python相关的问题。我不是这方面的专家。CUDA支持内核运行时的动态共享内存分配,但机制与OpenCL稍有不同。在CUDA运行时API中,使用动态分配/调整大小的共享内存的内核和调整内存大小的启动使用以下语法:
__global__ void kernel(...)
{
extern __shared__ typename buffer[];
....
}
....
kernel <<< griddim, blockdim, sharedmem, streamID >>> (...)
将共享内存分配大小传递给
prepare
方法。CUDA支持内核运行时的动态共享内存分配,但机制与OpenCL稍有不同。在CUDA运行时API中,使用动态分配/调整大小的共享内存的内核和调整内存大小的启动使用以下语法:
__global__ void kernel(...)
{
extern __shared__ typename buffer[];
....
}
....
kernel <<< griddim, blockdim, sharedmem, streamID >>> (...)
将共享内存分配大小传递给
prepare
方法。您的标记错误。你在寻找OpenCL的帮助,而不是CUDA。我在寻找PyCUDA中的特性,它存在于PyOpenCL和CUDA中。我试图将其标记为“PyCUDA”,但该标记尚不存在。我一直想为PyCUDA添加一个标记。现在完成。你的标签错了。你在寻找OpenCL的帮助,而不是CUDA。我在寻找PyCUDA中的特性,它存在于PyOpenCL和CUDA中。我试图将其标记为“PyCUDA”,但该标记尚不存在。我一直想为PyCUDA添加一个标记。现在完成。