目前,我正在尝试创建一个使用CUDA功能的Java应用程序。CUDA和Java之间的连接工作得很好,但我有另一个问题,我想问一下,我的想法是否正确。
当我从Java调用一个本机函数时,我将一些数据传递给它,这些函数计算一些东西并返回一个结果。有没有可能让第一个函数返回一个指向这个结果的引用(指针),我可以将它传递给JNI,然后调用另一个函数对结果进行进一步的计算?
我的想法是通过将数据留在GPU内存中,并只传递对它的引用,以便其他函数可以使用它,从而减少从GPU复制数据所产生的开销。
在尝试了一段时间后,我自己认为这是不可能的,因为指针在应用程序结束后被删除(在本例中,当C函数终止时)。这是正确的吗?或者我只是在C中做得太差了,看不到解决方案?
Edit:好吧,稍微扩展一下这个问题(或者说得更清楚一些):JNI本机函数分配的内存是否在函数结束时释放?或者,我是否仍然可以访问它,直到JNI应用程序结束或手动释放它?
感谢您的意见:)
https://stackoverflow.com/questions/1632367
复制相似问题