有什么方法可以释放在同一个 CUDA 内核中预先分配的共享内存?例如,在内核内部,我曾经定义过
__shared__ unsigned char flag;
__shared__ unsigned int values [ BLOCK_DIM ];
稍后在代码内部,我需要定义一个数组,考虑到先前定义的共享内存超过为块设置的共享内存限制。如果没有重复使用先前定义的共享内存的肮脏工作,我怎么能做到这一点?或者 NVCC 足够聪明,可以识别内核跟踪中的依赖关系,并在使用共享变量完成时释放它?我的设备是 GeForce GTX 780 (CC=3.5)。