Obecnie próbuję utworzyć aplikację Java, która używa funkcjonalności CUDA. Połączenie między CUDA i Javą działa dobrze, ale mam inny problem i chciałem zapytać, czy moje przemyślenia na ten temat są poprawne.Przekazywanie wskaźników między C i Java przez JNI
Kiedy wywołuję natywną funkcję z Java, przekazuję do niej niektóre dane, funkcje obliczają coś i zwracają wynik. Czy jest możliwe, aby pierwsza funkcja zwróciła referencję (wskaźnik) do tego wyniku, który mogę przekazać do JNI i wywołać inną funkcję, która wykonuje dalsze obliczenia z wynikiem?
Mój pomysł polegał na zmniejszeniu narzutu, który pochodzi z kopiowania danych do i od GPU, pozostawiając dane w pamięci GPU i po prostu przekazując odniesienie do niego, aby inne funkcje mogły z niego korzystać.
Po wypróbowaniu trochę czasu, pomyślałem sobie, to nie powinno być możliwe, ponieważ wskaźniki są usuwane po zakończeniu aplikacji (w tym przypadku, gdy funkcja C kończy działanie). Czy to jest poprawne? A może po prostu źle w C, aby zobaczyć rozwiązanie?
Edytuj: Cóż, aby nieco rozszerzyć pytanie (lub wyraźniej): Czy pamięć przydzielona przez natywne funkcje JNI jest przydzielana po zakończeniu funkcji? Czy nadal mogę uzyskać do niego dostęp, dopóki nie zakończy się aplikacja JNI lub gdy zwolnię ją ręcznie?
Dzięki za wejście :)
także https://stackoverflow.com/q/5802340/632951 – Pacerier