如何在CUDA内核函数中获得数组的大小?
我有一个CUDA内核函数,如下所示:如何在CUDA内核函数中获得数组的大小?,cuda,Cuda,我有一个CUDA内核函数,如下所示: __global__ void kernel(int a, int b) { extern __shared__ unsigned char array[]; //int size = /*size of array*/; = 16 } 在函数main中,我称之为: sharedMemSize = 16; kernel<<<gridSize, blockSize, sharedMemSize>>>(1, 2); sha
__global__ void kernel(int a, int b)
{
extern __shared__ unsigned char array[];
//int size = /*size of array*/; = 16
}
在函数main中,我称之为:
sharedMemSize = 16;
kernel<<<gridSize, blockSize, sharedMemSize>>>(1, 2);
sharedMemSize=16;
内核(1,2);
如何获取共享内存阵列的大小?
这是我第一次对StackOverflow有问题:)谢谢 是否将其作为内核参数传递
kernel<<<gridSize, blockSize, sharedMemSize>>>(1, 2, sharedMemSize);
内核(1,2,sharedMemSize);
您可以使用:sizeof(array)
或模板参数动态分配共享内存的模板参数获取数组的大小(以字节为单位)?为什么不?大多数内核实际启动时通常只有非常有限的共享内存大小,因此大小的模板参数和两个编译时实例可以覆盖这些大小。通过改进编译器优化,拥有一个已知常量可以大大提高性能。然后可以一起删除动态分配,并用模板化的静态分配替换。您可以对int*pa
这样的数组执行此操作吗?不,因为这是一个指针。问题中名为array
的变量实际上是一个数组,而不是指针。