Открыт код Rootbeer, компилятора байткода Java в представление для выполнения на GPU
В отличие от Java-биндингов для CUDA и OpenCL, Rootbeer не требует от разработчика преобразования сложных иерархий объектов в набор примитивных типов и отдельного написания GPU-ядра на CUDA или OpenCL. Rootbeer позволяет автоматически и в прозрачном режиме преобразовать произвольную иерархию Java-объектов в инструкции GPU и обеспечить написание GPU-ядра целиком на Java. Возможность автоматической генерации кода CUDA на основании произвольного кода Java обеспечена благодаря использованию методов статического анализа байткода Java. Статический анализ выполняется с использованием наработок проекта Soot.
Из не поддерживаемых в Rootbeer возможностей Java отмечаются рефлексия, нативные методы, засыпание в режиме мониторинга, динамическое обращение к методам. На стадии разработки находится код для обеспечения работы сборщика мусора. С позиции производительности, многое зависит от типов решаемых задач. Например, в тестах на умножения матриц высокой размерности и подбор элементов ряда Фурье, Rootbeer позволил ускорить выполнение программ в 67 раз и 58 раз, но в тесте наложения фильтра на изображение наблюдалось замедление в 3.8 раза.
С практической стороны использование сводится к трансляции Java-кода в представление, задействующее вычисления на стороне GPU: "java -jar Rootbeer.jar InputJar.jar OutputJar.jar". После чего преобразованный jar-архив может быть запущен как обычная программа: "java -jar OutputJar.jar".
Источник: http://www.opennet.ru/opennews/art.shtml?num=34558
|
0 | Tweet | Нравится |
|