Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在CUDA内核函数中获得数组的大小?_Cuda - Fatal编程技术网

如何在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

我有一个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);
sharedMemSize=16;
内核(1,2);
如何获取共享内存阵列的大小?
这是我第一次对StackOverflow有问题:)谢谢

是否将其作为内核参数传递

kernel<<<gridSize, blockSize, sharedMemSize>>>(1, 2, sharedMemSize);
内核(1,2,sharedMemSize);

您可以使用:
sizeof(array)

或模板参数动态分配共享内存的模板参数获取数组的大小(以字节为单位)?为什么不?大多数内核实际启动时通常只有非常有限的共享内存大小,因此大小的模板参数和两个编译时实例可以覆盖这些大小。通过改进编译器优化,拥有一个已知常量可以大大提高性能。然后可以一起删除动态分配,并用模板化的静态分配替换。您可以对
int*pa
这样的数组执行此操作吗?不,因为这是一个指针。问题中名为
array
的变量实际上是一个数组,而不是指针。