En ce moment, j'essaie de créer une application Java qui utilise la fonctionnalité CUDA. La connexion entre CUDA et Java fonctionne bien, mais j'ai un autre problème et je voulais savoir si mes pensées à ce sujet sont correctes.
Lorsque j'appelle une fonction native depuis Java, je lui passe des données, la fonction calcule quelque chose et renvoie un résultat. Est-il possible de laisser la première fonction renvoyer une référence (pointeur) à ce résultat que je peux passer à JNI et appeler une autre fonction qui effectue d'autres calculs avec le résultat ?
Mon idée était de réduire les frais généraux liés à la copie de données depuis et vers le GPU en laissant les données dans la mémoire du GPU et en passant simplement une référence à celles-ci pour que d'autres fonctions puissent les utiliser.
Après avoir essayé pendant un certain temps, je me suis dit que cela ne devrait pas être possible, car les pointeurs sont supprimés après la fin de l'application (dans ce cas, lorsque la fonction C se termine). Est-ce correct ? Ou suis-je simplement trop mauvais en C pour voir la solution ?
Modifier : Eh bien, pour élargir un peu la question (ou la rendre plus claire) : La mémoire allouée par les fonctions natives JNI est-elle désallouée lorsque la fonction se termine ? Ou puis-je encore y accéder jusqu'à ce que l'application JNI se termine ou que je la libère manuellement ?
Merci pour votre contribution :)