我创建了一个带有 shape 的 float32s numpy 数组(64, 128)
,我想将它发送到 GPU。我怎么做?我的内核函数应该接受哪些参数?float** myArray
?
我曾尝试直接将数组原样发送到 GPU,但 pycuda 抱怨正在访问对象......
我创建了一个带有 shape 的 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];
....
}
从 Python 访问通过引用传递给内核的 numpyndarray
或 PyCUDA 。gpuarray