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