我有一个使用大约 2GB 本地内存的内核。如果我之前运行它,我cudaMalloc
尝试分配 2.5GB 内存的方法会失败kernel_func
。
跑完发现还有2GB内存被占用kernel_func
,我的cudaMalloc
. 有没有人有解决方案或解释?
我知道使用全局内存kernel_func
可以解决问题,但由于某种原因,我需要为那个巨大的本地静态数组使用本地内存。
__global__ kernel_func() {
// The huge static array goes here
short my_array[50000];
}
int main() {
kernel_func<<<64, 128>>>();
// my_array is still occupying memory are this point
// This cudaMalloc will fail with insufficient memory
cudaMalloc(/* 2.5GB data */);
}