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