Есть ли библиотека Java для ускоренных векторных вычислений?

Я ищу библиотеку Java, которая позволяет выполнять некоторые быстрые вычисления с вектором (и, возможно, с матрицами).

Под быстрым я подразумеваю использование преимуществ обработки GPU и/или инструкций SSE. Мне интересно, можно ли найти что-то более портативное, насколько это возможно. Я понимаю, что JVM обеспечивает толстый уровень абстракции аппаратного обеспечения.

Я наткнулся на JCUDA, но есть недостаток: на компьютере без видеокарты Nnvidia ее надо запускать в режиме эмуляции (поэтому я пришел к выводу, что это будет неэффективно, как ожидалось). Кто-нибудь уже пробовал?


person rano    schedule 08.12.2010    source источник
comment
Вы можете взглянуть на OpenCL.   -  person pablosaraiva    schedule 08.12.2010
comment
+1 Вы также можете найти привязки Java здесь: jocl.org   -  person barti_ddu    schedule 08.12.2010
comment
упс, только что увидел ваши комментарии .. мой ответ был в основном таким же :/   -  person Jack    schedule 08.12.2010
comment
OpenCL имеет гораздо больше смысла, чем CUDA   -  person rano    schedule 08.12.2010


Ответы (3)


А как насчет OpenCL? Это должно стать хорошей отправной точкой для такого рода оптимизированных операций.

Существует множество привязок для Java, начиная с jocl (но также поищите на JavaCL или LWJGL что добавило поддержку из 2.6)

person Jack    schedule 08.12.2010

Если под быстрым вы подразумеваете высокую скорость, а не поддержку вашего конкретного оборудования, я бы рекомендовал Colt. Векторы называются одномерными матрицами. в этой библиотеке.

person Fred Foo    schedule 08.12.2010
comment
Вычисляет ли Colt векторные операции сразу или вместо этого циклически перебирает все элементы? - person rano; 08.12.2010
comment
Поскольку это чистая Java, вероятно, она написана как цикл. Точная реализация будет зависеть от вашей JVM. Измерьте его производительность, чтобы быть уверенным. - person Fred Foo; 08.12.2010

Я рекомендую использовать UJMP (обертывает большинство, если не все высокоскоростные матричные библиотеки Java) и ждать для него должна быть написана достойная реализация GPGPU (я некоторое время назад начал взламывать его с помощью JavaCL, но он нуждается в серьезной переработке, возможно, с использованием ScalaCLv2, который находится в разработке).

person zOlive    schedule 05.01.2011