Запустить приложение 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

Другие вопросы по тегам