Запустить приложение C на OpenCL с использованием Java - возможно?
Я знаю только Java для NeuralNetworks, GA и некоторые графические интерфейсы работают. У меня есть простой вопрос о том, что возможно с OpenCL + Java + C. Я знаю, что вы можете запускать C на Java, однако я хотел бы запустить стороннее приложение C (для которого у меня нет через Java, достаточно просто - но я бы хотел, чтобы приложение C запускалось на графическом процессоре с использованием OpenCL из-за большого количества вычислений - возможно ли это? Я знаю, что есть некоторые библиотеки, такие как JavaCL и т. Д.
В идеале рабочий процесс должен выглядеть примерно так:
1.Java-приложение заставляет приложение C запускаться на GPU с использованием OpenCL.
2. Java-приложение отправляет команды приложению C с данными и параметрами
3.Java-приложение использует библиотеку OpenCL для управления потоками приложений на языке C.
4.Java приложение может инициализировать несколько экземпляров приложения C?
5.C Приложение обрабатывает данные и возвращает их в приложение Java.
6.Java приложение визуализирует данные.
Спасибо за любую помощь или совет. Ура, Патрик.
2 ответа
Нет, если у вас есть сторонняя бинарная программа, написанная на простом C, нет способа запустить эту программу на GPU, используя OpenCL (или любой другой метод). В этом двоичном файле будет использоваться набор команд ЦП (x86, ARM и т. Д.), Который не будет совместим с каким-либо набором команд, которые использует графический процессор. Вам потребуется переписать вычислительно дорогой код, используя OpenCL (или другой язык с поддержкой GPU + API), чтобы запустить его на GPU.
Я знаю, что это не идеально, так как у вас нет исходного кода, но у вас может быть ядро или вы можете его получить? Я использую LWJGL для своих нужд Java OpenCL, и он работает очень хорошо и очень прост в использовании с почти точной реализацией C++ -> Java.
Источник: http://lwjgl.org/wiki/index.php?title=OpenCL_in_LWJGL