目前,我正在尝试创建一个使用CUDA功能的Java应用程序。CUDA与Java之间的连接工作正常,但是我还有另一个问题,想问一下我对此是否正确。
当我从Java调用本机函数时,我将一些数据传递给它,这些函数计算出一些东西并返回结果。是否可以让第一个函数返回对此结果的引用(指针),我可以将其传递给JNI并调用另一个对结果进行进一步计算的函数?
我的想法是通过将数据保留在GPU内存中并仅将引用传递给它,以便其他功能可以使用它,从而减少往返于GPU的数据复制所带来的开销。
经过一段时间的尝试,我自己想,这是不可能的,因为在应用程序结束后(在这种情况下,当C函数终止时)指针被删除。这个对吗?还是我对C语言很不好而看不到解决方案?
编辑:好吧,将问题扩大一点(或更清楚地说):函数结束时是否由JNI本机函数分配的内存被释放了?或者在JNI应用程序结束或手动释放它之前,我是否仍可以访问它?
感谢您的输入 :)