我已经创建float32s的numpy的阵列形状(64, 128)
我想将其发送到GPU。 我怎么做? 应我的内核函数接受什么样的参数? float** myArray
?
我曾尝试直接发送阵列,因为它是对GPU,但pycuda抱怨说,被访问的对象...
我已经创建float32s的numpy的阵列形状(64, 128)
我想将其发送到GPU。 我怎么做? 应我的内核函数接受什么样的参数? float** myArray
?
我曾尝试直接发送阵列,因为它是对GPU,但pycuda抱怨说,被访问的对象...
在numpy的/ PyCUDA二维阵列默认存储在投线性存储器以行优先顺序。 所以,你只需要拥有一个内核是这样的:
__global__
void kernel(float* a, int lda, ...)
{
int r0 = threadIdx.y + blockDim.y * blockIdx.y;
int r1 = threadIdx.x + blockDim.x * blockIdx.x;
float val = a[r0 + r1*lda];
....
}
访问numpy的ndarray
或PyCUDA gpuarray
通过参考从Python的内核通过。