全局内存释放和内核范围内共享数据的一个疑惑

有两个内核 kernel1 kernel2,先执行kernel1,后执行kernel2

我声明了三个全局变量: ie
constant int key1 ;
device int *d_data1 ;
device char * d_data2;

上面的三个值是kernel1 用到的,我的问题:
(1) kernel1 运行结束后,三个变量的空间怎么释放。google了一下,发现以下的理解,不知对否?
constant生命周期是应用程序生命周期,所以不能在kernel1 运行结束后释放
全局变量某种程度代表静态值,按C 的风格,也是不用显式释放资源

(2)因为kernel2 需要很大的空间,所以在kernel1 运行结束后,想把在kernel1 工作期间的“全局值”(d_data1 、d_data12)
释放,给kernel2 足够的空间。哪么,该如何安排kernel1 d_data1 d_data12 kernel2

多谢!

没用过多个kernel的,关于他们的变量周期问题也不甚清楚

留名记录

呵呵

main()
{

kernel1<<<grid, block>>> ();
cudaThreadSynchronize();
cudaFree(d_data1);
cudaFree(d_data2);
d_data1 = d_data2 = NULL;
kernel2<<<grid, block>>>();

}
不知道楼主是不是想要这样的效果

问题已解决
多谢各位