我试图为矩阵乘法声明一个变量,如下所示:
__shared__ float As[BLOCK_SIZE][BLOCK_SIZE];
Run Code Online (Sandbox Code Playgroud)
我试图让它成为用户可以输入矩阵的大小来计算,但这意味着改变BLOCK_SIZE.我改变了它但是我收到了编译器错误:"错误:常量值未知".我调查了它,它与这个帖子类似.所以我尝试过:
__shared__ int buf [];
Run Code Online (Sandbox Code Playgroud)
但后来我得到:"错误:不允许不完整的类型"
谢谢,Dan更新代码(几乎遵循本指南和盯着cuda指南):通过询问用户矩阵的大小来传递块大小.他们进入x和y.块大小仅为x,现在它必须接受与x和y相同的大小.
__global__ void matrixMul( float* C, float* A, float* B, int wA, int wB,size_t block_size)
{
// Block index
int bx = blockIdx.x;
int by = blockIdx.y;
// Thread index
int tx = threadIdx.x;
int ty = threadIdx.y;
// Index of the first sub-matrix of A processed
// by the block
int aBegin = wA * block_size * by;
// Index of the last sub-matrix of …
Run Code Online (Sandbox Code Playgroud)