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 の両方を一緒に収容することはできません。ただし、それぞれを個別に収容できます(テスト済み)。2 番目のパスでは、プログラムは shared_nodes を認識できません (1 番目のパスと同じです) が、共有メモリに十分なスペースがないというエラーが表示されます。そのため、shared_nodes 変数にまだスペースが割り当てられているようです。その割り当てを破棄する方法はありますか (cudaFree など)? または他の提案はありますか?