Подтвердить что ты не робот

Как сравнить JavaCL и JogAmp JOCL?

JavaCL использует JNA, вместо этого JOCL использует JNI, поэтому я ожидаю, что JavaCL продемонстрирует лучшую кросс-платформенную совместимость, в то время как JOCL, как правило, будет иметь лучшую производительность. JOCL тестируется вместе с JOGL2, что должно облегчить использование объектов GL в CL и наоборот. JavaCL может генерировать свой контекст из текущего контекста GL. JavaCL защищен GPL, JOCL распространяется под лицензией BSD.

Что еще можно сказать об этих двух подходах? Есть ли хорошие сравнения там?

JavaCL: http://code.google.com/p/javacl/

JOCL: http://jogamp.org/jocl/www/

4b9b3361

Ответ 1

JOCL в своем дизайне очень похож на JOGL или JOAL и (как и все http://jogamp.org проекты), напрямую созданные из заголовка спецификации OpenCL файлы во время сборки. Вот почему мы предоставляем API на двух уровнях: спецификация 1:1 соответствует низкоуровневому связыванию, а в руке написано гораздо менее подробное связывание на высоком уровне. Связывание на основе JNI статично и оптимизировано для минимальных затрат времени выполнения. Мы предоставляем (тестируемые) сборки для всех общих комбинаций os-arch, а также скоро для нескольких мобильных устройств.

Марко Хаттер JOCL.org также основан на JNI, но полностью написан на руке и довольно низком уровне (как уже упоминалось ранее).

С наилучшими пожеланиями,

-michael (ведущий JOCL, поддерживающий JOGL)

Ответ 2

(Отказ от ответственности: я являюсь автором JavaCL и BridJ)

В дополнение к своей версии на основе JNA JavaCL имеет полностью функциональный порт BridJ, который полностью лицензирован под BSD (так как BridJ сам лицензирован BSD).

FYI BridJ предлагает значительно меньшие накладные расходы для каждого вызова, чем JNA, приближаясь к производительности JNI, хотя он все еще очень портативен (в настоящее время он выпущен с 32 и 64-битные двоичные файлы для Windows, Linux и MacOS X, но другие платформы запланированы).

Однако выполнение низкоуровневых привязок - это не единственное, что нужно учитывать. Хотя объектно-ориентированные API JavaCL и JOCL выглядят одинаково, вы должны следить за дополнительными положительными эффектами. Я не знаю о JOCL, но JavaCL поставляется с:

JavaCL также используется ScalaCL (универсальные коллекции с поддержкой OpenCL + Scala плагин компилятора для оптимизации кода), который это хороший способ избежать написания любого ядра вообще (хотя он все еще находится в тяжелом развитии на момент написания этой статьи).

Еще одна вещь, которую следует учитывать, - это простая доступность двоичных файлов для стандартных платформ (как минимум, Windows, Linux и MacOS X) и интеграция для создания таких систем, как Maven. JavaCL был лучшим IMHO, но все могло измениться (и наверняка изменится).

Наконец, Марко Хаттер JOCL является еще одним связыванием OpenCL, но без API высокого уровня. Однако это может оказаться быстрее, чем OpenCL4Java (JavaCL) или JOCL для низкоуровневых вызовов.

EDIT: JavaCL теперь покрывается главой в книге Matthew Scarpino OpenCL in Action.

Ответ 3

Ракель Медина Домингес написала статью для своей "Ingeniería en Informática" степени "Оценка различных привязок Java для OpenCL". В этой статье сравниваются JogAmp JOCL, JOCL и JavaCL. Он оценивает проекты деревьев по производительности, простоте использования и потреблению памяти. В документе содержатся инструкции по настройке, которые помогут вам начать работу с любой из трех реализаций связывания Java OpenCL.

http://e-archivo.uc3m.es/handle/10016/17183?locale=en - Оценка различных привязок Java для OpenCL PDF: http://e-archivo.uc3m.es/bitstream/10016/17183/5/finalversionPFC_Raquel_Medina.pdf Выводы на стр. 40.