Открыт код Rootbeer, компилятора байткода Java в представление для выполнения на GPU
12 августа 2012 года
В рамках проекта Rootbeer GPU Compiler подготовлен открытый компилятор, позволяющий разработчикам программировать GPU на языке Java или организовать выполнение существующего Java кода с задействованием GPU. Принцип работы Rootbeer сводится к трансляции байткода Java в формат CUDA-приложения, выполняемого с использованием GPU. Код Rootbeer распространяется под лицензией MIT. Проект разработан при поддержке Национального научного фонда США.
В отличие от Java-биндингов для CUDA и OpenCL, Rootbeer не требует от разработчика преобразования сложных иерархий объектов в набор примитивных типов и отдельного написания GPU-ядра на CUDA или OpenCL. Rootbeer позволяет автоматически и в прозрачном режиме преобразовать произвольную иерархию Java-объектов в инструкции GPU и обеспечить написание GPU-ядра целиком на Java. Возможность автоматической генерации кода CUDA на основании произвольного кода Java обеспечена благодаря использованию методов статического анализа байткода Java. Статический анализ выполняется с использованием наработок проекта Soot (Архивная копия от 28 декабря 2008 на Wayback Machine).
Из не поддерживаемых в Rootbeer возможностей Java отмечаются рефлексия, нативные методы, засыпание в режиме мониторинга, динамическое обращение к методам. На стадии разработки находится код для обеспечения работы сборщика мусора. С позиции производительности, многое зависит от типов решаемых задач. Например, в тестах на умножения матриц высокой размерности и подбор элементов ряда Фурье, Rootbeer позволил ускорить выполнение программ в 67 раз и 58 раз, но в тесте наложения фильтра на изображение наблюдалось замедление в 3.8 раза.
С практической стороны использование сводится к трансляции Java-кода в представление, задействующее вычисления на стороне GPU: "java -jar Rootbeer.jar InputJar.jar OutputJar.jar". После чего преобразованный jar-архив может быть запущен как обычная программа: "java -jar OutputJar.jar".
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.