形状のあるfloat32の多数の配列を作成し、(64, 128)
それをGPUに送信したいと思います。それ、どうやったら出来るの?カーネル関数はどの引数を受け入れる必要がありますか?float** myArray
?
配列をそのままGPUに直接送信しようとしましたが、pycudaはオブジェクトがアクセスされていると文句を言います...
形状のあるfloat32の多数の配列を作成し、(64, 128)
それをGPUに送信したいと思います。それ、どうやったら出来るの?カーネル関数はどの引数を受け入れる必要がありますか?float** myArray
?
配列をそのままGPUに直接送信しようとしましたが、pycudaはオブジェクトがアクセスされていると文句を言います...
numpy/PyCUDA の 2 次元配列は、デフォルトでピッチ付き線形メモリに行優先順に格納されます。したがって、次のようなカーネルが必要なだけです。
__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