На данный момент я пытаюсь создать Java-приложение, которое использует CUDA-функциональность. Связь между CUDA и Java работает нормально, но у меня есть еще одна проблема и я хочу спросить, правильно ли мои мысли об этом.
Когда я вызываю собственную функцию из Java, я передаю ей некоторые данные, функции вычисляют что-то и возвращают результат. Возможно ли, чтобы первая функция вернула ссылку (указатель) на этот результат, который я могу передать JNI и вызвать другую функцию, которая выполняет дальнейшие вычисления с результатом?
Моя идея состояла в том, чтобы уменьшить накладные расходы, связанные с копированием данных на GPU и с него, оставив данные в памяти графического процессора и просто передав ссылку на него, чтобы другие функции могли его использовать.
После некоторого времени, подумал я сам, это не должно быть возможным, потому что указатели удаляются после завершения приложения (в этом случае, когда C-функция завершается). Это верно? Или я просто плохой на C, чтобы увидеть решение?
Изменить: Ну, чтобы немного расширить вопрос (или сделать его более понятным): Является ли память, выделенная встроенными функциями JNI, освобожденной при завершении функции? Или я могу получить доступ к нему до тех пор, пока приложение JNI не закончится или я не освобожу его вручную?
Спасибо за ваш вклад:)