2
我有一個關於CUDA C++編程的問題。我正在使用共享內存。但我需要更大的共享內存。所以我試圖重用共享內存。我的代碼如下:CUDA中的共享內存重新分配
__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)?或任何其他建議?
如果一號通功能和第二通功能不相關的對方,你可以試試分離這些功能。 – ardiyu07