ポインタを渡して配列を指すと、follエラーが発生します。 引数float型のfloat の引数は互換性がありません型のパラメータを持つ「フロート()[32768]CUDA:float *型の引数がfloat型のパラメータと互換性がありません[32768]
私のコードの関連するスニペットは、次のとおりです。?
#define N 32768
__global__ void op(float k_a[][N])
{
//some operation
}
float *ptr_a=(float*)malloc(N*N*sizeof(float));
float *d_ptr_a;cudaMalloc((void**)&d_ptr_a,N*N*sizeof(float));
cudaMemcpy(d_ptr_a,ptr_a,N*N*sizeof(float),cudaMemcpyHostToDevice);
op<<<nblocks,nthreadsperblock>>>(d_ptr_a)
いくつかは、私はCUDAに初心者です間違っていただきました!教えてもらえます
エラーメッセージは非常に明示的です。引数として渡すタイプは、カーネルが要求するタイプと同じではありません。 – talonmies
私はこれをCUDAとは関係がないと言います。通常の 'void op(float k_a [] [N])'を定義し、それに 'float *'引数を渡すだけで、同じ(または類似の)エラーメッセージが出ます。 Clangは引数 '1'を 'void op(float(*)[32768])'に 'エラー:' float * 'を' float(*)[32768] 'に変換できません' – CygnusX1
そして、なぜ 'k_a'これは "奇妙な"ことでしょうか? 「浮動*してもうまくいかない? – Matso