- PVSM.RU - https://www.pvsm.ru -

Запускаем Java-программы на GPU

На Github выложен исходный код компилятора Rootbeer [1], с помощью которого можно почти любой Java-код запустить на графическом процессоре, а также легко разделить Java-программу на фрагменты для CPU/GPU.

Компилятор опубликован под свободной лицензией GNU GPLv3, он прошёл тщательное тестирование и вполне пригоден для использования. По словам автора, это самый продвинутый транслятор байткода Java на платформу CUDA. Судя по всему, OpenCL тоже поддерживается [2].

Автор программы — преподаватель Сиракузского университета Фил Пратт-Желига [3] (Phil Pratt-Szeliga).

Нужно пояснить, что в GPU нет никакой магии, и некоторые программы на GPU работают значительно медленнее, чем на CPU. Другое дело, если программа способна запустить большое количество параллельных потоков. Для этого нужно написать специальный алгоритм с оптимизацией для массового параллелизма.

Если в Java-программе есть параллелизм, то Rootbeer обнаружит его автоматически. В этом случае на специфических задачах прибавка производительности может составить десятки раз. Например, во время тестирования [4] умножение плотных матриц 4096х4096 на Java с Rootbeer ускорилось в 67 раз, преобразование Фурье (не FFT) — в 54 раза.

Rootbeer использует инструмент для статического анализа и преобразования Java-байткода Soot [5].

Список неподдерживаемых функций Java в компиляторе: сборщик мусора, нативные методы, отражения (рефлексия), динамический вызов методов.

Автор: alizar


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/13112

Ссылки в тексте:

[1] Rootbeer: https://github.com/pcpratts/rootbeer1

[2] тоже поддерживается: https://github.com/pcpratts/rootbeer1/tree/master/src/edu/syr/pcpratts/rootbeer/generate/opencl

[3] Фил Пратт-Желига: http://www.computehub.net/

[4] тестирования: https://raw.github.com/pcpratts/rootbeer1/master/doc/hpcc_rootbeer.pdf

[5] Soot: http://www.sable.mcgill.ca/soot/