(Отказ от ответственности: я являюсь автором 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 .