Java i OpenCL

0

Czy używał ktoś OpenCL w jawie? Z tego co patrzę jest kilka różnych bibliotek, które to realizują. Nie wiem co wybrać, dlatego fajnie by było, jakby ktoś doświadczony mi coś podpowiedział. Chodzi mi o zupełne podstawy, co zainstalować, jak zacząć i jak napisać przysłowiowy "Hello world" w tym OpenCL.
Druga sprawa to taka: czy jest sens używać OpenCL w jawie, czy może lepiej (znacznie lepiej) działa to w innym języku. Domyślam się, że w jawie to będzie robione przez JNI lub JNA, czyli dochodzi kolejna warstwa aplikacji.

1

Ja się bawiłem używając: http://www.jocl.org/ (oparne na JNI)
Ta biblioteka w dużej mierze odzwierciedla API do C, wobec czego niby jest toporne, ale za to łatwo jest przerobić kod z tutoriali dla języka C.

JNI to pewna dodatkowa warstwa, ale są do dyspozycji Direct Buffers. Ich obsługa jest mało przyjemna (moim zdaniem), ale są one alokowane poza stertą JVM, dzięki czemu mają znacznie mniejszy narzut niż używanie tablic Javowych. Nie mówiąc już o tym, że GC się nimi nie zajmuje i nie trzeba się przejmować wielkością sterty i jej poszczególnych generacji.

OpenCL powinien działać zauważalnie lepiej (ale nie mam pojęcia w jakim % przypadków) w językach z niezarządzaną pamięcią (i bez trików typu sprytne wskaźniki, bo OpenCL tego nie obsługuje), czyli np C/ C++/ Pascal/ itd no ale znowu pisanie w takich językach jest mniej przyjemne niż w Javce.

Poza tym, najważniejsza sprawa to to, że bindingi do OpenCLa służą tylko i wyłącznie do odpalania kerneli i zarządzania nimi. Logikę aplikacji i tak piszesz bez użycia OpenCLa, a kernele są niezależne od aplikacji która nimi zarządza. API OpenCLa służy tylko jako klej pomiędzy kernelami a logiką programu, więc może się okazać, że kod łączący aplikację z OpenCLem będzie relatywnie mały.

1 użytkowników online, w tym zalogowanych: 0, gości: 1