0

次のように共有メモリを使用して CUDA コードを作成しました。

__global__ void matrix_mul_shared(float *ad,float *bd,float *cd,int N)
{
    float pvalue=0;
    int TILE=blockDim.x;
    int ty=threadIdx.y;
    int tx=threadIdx.x;

    //allocate shared memory per block
    __shared__ float ads[1][1];
    __shared__ float bds[1][1];

 .

. . }

このコードは機能しますが、次のコードは失敗します。

__global__ void matrix_mul_shared(float *ad,float *bd,float *cd,int N)
{
    float pvalue=0;
    int TILE=blockDim.x;
    int ty=threadIdx.y;
    int tx=threadIdx.x;

    //allocate shared memory per block
    __shared__ float ads[TILE][TILE];
    __shared__ float bds[TILE][TILE];

 .
. 
.
}

コンパイラは、共有メモリを割り当てている行で一定の何かを期待しています。それは言います(正確なエラーを忘れましたが、次のようなものです):

パラメータは定数でなければなりません

printf を使用して TILE の値を出力できましたが、1 が出てきました。では、なぜこのエラーが発生するのでしょうか。

4

1 に答える 1