Как сравнить JavaCL и JogAmp JOCL? - PullRequest
17 голосов
/ 10 января 2011

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/

Ответы [ 3 ]

8 голосов
/ 11 августа 2013

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

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

8 голосов
/ 10 января 2011

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

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

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

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

  • прозрачный #include файлов из пути к классам Java или с любого URL
  • автоматическое и прозрачное кэширование двоичных файлов программы
  • утилиты сокращения
  • линейная алгебра использует
  • генератор случайных чисел (библиотека, а не демонстрация!)
  • приятный графический интерфейс для экспериментов с изображениемпреобразуйте ядра за считанные секунды
  • плагин maven, который анализирует ядра OpenCL (находится в src / main / opencl) и генерирует классы типизированных программ с одним типизированным Java-методом на ядро ​​(обеспечивая корректность списка аргументов ввремя компиляции)

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

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

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

РЕДАКТИРОВАТЬ: JavaCL теперь охвачен главой в книге Мэтью Скарпино OpenCL in Action .

6 голосов
/ 13 января 2011

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

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

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

- Майкл (ведущий JOCL, сопровождающий JOGL)

...