我有一个关于CUDA C++编程的问题。我正在使用共享内存。但是我需要更大的共享内存。所以我尝试重复使用共享内存。我的代码如下:
__global__ void dist_calculation(...){
..........
{
//1st pass
__shared__ short unsigned int shared_nodes[(number_of_nodes-1)*blocksize];
............
}
{
//2nd pass
__shared__ float s_distance_matrix[(number_of_nodes*(number_of_nodes-1))/2];
........
}
}
共享内存无法同时容纳 shared_nodes
和 s_distance_matrix
。但是可以分别容纳它们(我已经测试过)。在第二次传递中,程序无法识别 shared_nodes
(因为它来自第一次传递),但却显示了一个错误,指出共享内存没有足够的空间。所以看起来,仍然分配了一些空间给 shared_nodes
变量。有没有办法销毁这个分配(比如 cudaFree
)?或者有其他建议吗?