The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Открыт код Rootbeer, компилятора байткода Java в представление для выполнения на GPU

12.08.2012 23:12

В рамках проекта 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.

Из не поддерживаемых в Rootbeer возможностей Java отмечаются рефлексия, нативные методы, засыпание в режиме мониторинга, динамическое обращение к методам. На стадии разработки находится код для обеспечения работы сборщика мусора. С позиции производительности, многое зависит от типов решаемых задач. Например, в тестах на умножения матриц высокой размерности и подбор элементов ряда Фурье, Rootbeer позволил ускорить выполнение программ в 67 раз и 58 раз, но в тесте наложения фильтра на изображение наблюдалось замедление в 3.8 раза.

С практической стороны использование сводится к трансляции Java-кода в представление, задействующее вычисления на стороне GPU: "java -jar Rootbeer.jar InputJar.jar OutputJar.jar". После чего преобразованный jar-архив может быть запущен как обычная программа: "java -jar OutputJar.jar".

  1. Главная ссылка к новости (http://developers.slashdot.org...)
  2. OpenNews: NVIDIA выпустила многоплатформенную среду разработки CUDA-приложений
  3. OpenNews: NVIDIA передала CUDA Compiler в руки сообщества LLVM
  4. OpenNews: В рамках проекта Gdev подготовлена открытая реализация фреймворка CUDA
Лицензия: CC-BY
Тип: К сведению
Короткая ссылка: https://opennet.ru/34558-cuda
Ключевые слова: cuda, java, rootbeer, compile, gpu
Поддержать дальнейшую публикацию новостей на OpenNET.


Обсуждение (64) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Xasd (ok), 00:47, 13/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > java -jar Rootbeer.jar InputJar.jar OutputJar.jar

    ништяг..

    ..на входе один блоб (возможо проприетарный?) а на выходе другой :-D

    вот до чего дошли blob-технологии!

     
     
  • 2.45, Crazy Alex (ok), 14:55, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А что не нравится? Инструмент открытый. Опять же - это значит, что можно любой, даже чужой, код попытаться так обработать. Ну и джава - это, вообще говоря, полублоб - не зря без применения специальных мер она декомпилириуется чуть ли не идеально.
     
  • 2.48, Аноним (-), 15:32, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну так jar это не совсем блог
     
  • 2.51, Avator (ok), 17:02, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы бы хоть посмотрели, что такое jar.
     

  • 1.2, Аноним (-), 00:53, 13/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И что это даёт?
     
     
  • 2.4, VoDA (ok), 03:05, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Использование GPU в программах на Java. Дальше могут всяческие число-дробилки на этом делать или массово-параллельные системы.
     
     
  • 3.74, Аноним (-), 12:01, 14/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Уже 1,5 года есть Diablo Miner, использующий OpenCL. Какое расширение используется я не знаю.
     
     
  • 4.87, Аноним (-), 18:30, 14/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Уже 1,5 года есть Diablo Miner, использующий OpenCL. Какое расширение используется я не знаю.

    ...а потом пришел Кон Коливас и показал всем как надо майнеры писать. Разом заткнув поделия на яве и питоне и по скорости и по скромности нецелевого пожирания ресурсов :)


     
  • 2.5, pavlinux (ok), 03:23, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > И что это даёт?

    Оправдание покупки NVIDIA Tesla  :)

     
     
  • 3.20, Аноним (-), 09:19, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Почему потомки Николы Тесла не подали иск на Nvidia за нарушение копирайтов ?
     
     
  • 4.26, Andrey Mitrofanov (?), 10:15, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Почему потомки Николы Тесла не

    Может, потому что детей у него не было?

     
     
  • 5.39, gabin (ok), 12:40, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    а жаль
     
  • 4.52, кевин (?), 17:40, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    они уже у тесла моторс... или как там компанию которая суперэлектрокары делать.
     

  • 1.3, Аноним (-), 01:20, 13/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Жалко, с рефлексией не работает, удобная штука.
     
     
  • 2.7, Anonus (?), 03:39, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А что это за рефлекция такая?
     
     
  • 3.8, pavlinux (ok), 03:58, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    http://en.wikipedia.org/wiki/Reflection_(computer_programming)
     
     
  • 4.58, Anonus (?), 22:04, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > http://en.wikipedia.org/wiki/Reflection_(computer_programming)

    Ответ не верный ! В статье ясно написано - рефлексия, а это означает следующее:

    Рефле́ксия (от позднелат. reflexio — обращение назад) — междисциплинарное понятие с многовековой историей, обращение внимания субъекта на самого себя и на своё, в частности, на продукты собственной активности, а также какое-либо их переосмысление.

    ( http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84 )

    А твоя ссылка говорит о reflection, по-русски это называется - ОТРАЖЕНИЕ. Термин давно устоявшийся и поэтому его и нужно применять, а не выдумывать свой, никому ненужный "фольклёр".

     
     
  • 5.60, piteri (ok), 22:49, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Не встречал ещё программистов использующих термин "отражение" в данном случае.
    Лично вам могу посоветовать изучить правописание слова "фольклор".
     
     
  • 6.61, arisu (ok), 22:52, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    эти так называемые «программисты» и функционалы у программ находят заместо фнкциональности. больные люди, что возьмёшь…
     
  • 6.66, Anonus (?), 00:57, 14/08/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Не встречал ещё программистов использующих термин "отражение" в данном случае.

    Гуглим следующее словосочетание: "java отражение", обращаем внимание на даты
    написания статей и книг.

    > Лично вам могу посоветовать изучить правописание слова "фольклор".

    Именно поэтому слово "фолклёр" взято в кавычки


     
     
  • 7.68, piteri (ok), 10:42, 14/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >Гуглим следующее словосочетание: "java отражение", обращаем внимание на даты написания статей и книг.

    Первые 2 страницы гугля (дальше смотреть не стал) выдали вот эти книги:
    Зеркальное отражение - Клэнси Том
    Отражение во мгле - Цормудян Сурен
    Скачать книгу Отражение Ворона
    Сборник рассказов "Зеркала, отражения"
    Казаков Д.- Идеальное отражение

    Касательно жавы только статьи, форумы и вики с 2008 по 2012.

    Я думаю вам стоит пояснить свою мысль.

     
     
  • 8.90, Anonus (?), 01:40, 15/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Гугление по java отражения первой же ссылкой выдаёт вот это Java магия отра... текст свёрнут, показать
     
     
  • 9.91, piteri (ok), 10:11, 15/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    У меня не первой, да и гуль почему то подписал её как 2011, а внутрь не лазил Т... текст свёрнут, показать
     
     
  • 10.92, Anonus (?), 02:49, 16/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Напрасно, надо было заглянуть Заглянул в классику жанра Философия Java Библ... текст свёрнут, показать
     
     
  • 11.93, Anonus (?), 02:50, 16/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    FIX В главе 10 ОпределЕНИЕ типов на странице 397 читаем название ... текст свёрнут, показать
     
  • 3.10, arisu (ok), 04:49, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А что это за рефлекция такая?

    http://ru.wikipedia.org/wiki/Рефлексия

    скайнет не за горами.

     
     
  • 4.11, pavlinux (ok), 05:03, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Какой нафиг Скайнет, java-программы как носки - носить может только хозяин,
    при переносе на другой компьютер они полностью нарушают микрофлору.

    Собственно, для работы жава-приложений компьютер надо подстраивать под
    программу, а не наоборот, ибо бесполезно. По этому, чтоб снизить ущерб
    психике пользователя, программисты, на всякий случай, суют в дистрибутив
    своей поделки, версию JVM c которой у них работало.  

     
     
  • 5.13, arisu (ok), 05:18, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Какой нафиг Скайнет

    ну дык рефлексии же. а там, говорят, и до разума недалеко. правда, боюсь, что ИИ на жабе будет ложку в ухо нести. соседу.

     
     
  • 6.14, pavlinux (ok), 05:32, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Какой нафиг Скайнет
    > ну дык рефлексии же.

    Как бы они этого не хотели, но программа не может сама себя менять,
    хотя бы из-за того, что программа не знает смысла своего существования
    и отсутствия главного инстинкта.

     
     
  • 7.15, arisu (ok), 06:03, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    многие жаба-кодеры не сильно отличаются — а живут же…
     
  • 7.27, Аноним (-), 10:16, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Как бы они этого не хотели, но программа не может сама себя менять,

    Полиморфные вирусы смотрят на тебя как на ... :)

     
     
  • 8.57, filosofem (ok), 20:56, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Тролли смотрят на тебя как на еду ... текст свёрнут, показать
     
     
  • 9.86, Аноним (-), 18:27, 14/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Это ты павлину с его опрометчивыми заявлениями скажи ... текст свёрнут, показать
     
  • 5.19, Аноним (-), 09:16, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    судя по вышесказанному, вы хреновенько владеете java-окружением
     
     
  • 6.28, Аноним (-), 10:17, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > судя по вышесказанному, вы хреновенько владеете java-окружением

    Судя по вышесказанному они ненавязчиво троллят наивных чукотских жабистов :)

     
  • 5.21, piteri (ok), 09:25, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    http://en.wikipedia.org/wiki/Write_once,_run_anywhere не?
     
     
  • 6.23, Af. (?), 09:34, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > http://en.wikipedia.org/wiki/Write_once,_run_anywhere не?

    Кмк интереснее объектная-ориентированность и способность легче описывать сложные системы. В пику Сям. Тогда существование и версия модулька JRE дело маловажное.

     
     
  • 7.25, arisu (ok), 10:02, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Кмк интереснее объектная-ориентированность

    это ж откуда она там взялась? Алан Кей делает даблфэйспалм.

     
     
  • 8.62, piteri (ok), 22:55, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    это куда ж она оттудва делась Джеймс Гослинг в недоумении ... текст свёрнут, показать
     
     
  • 9.64, arisu (ok), 23:00, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    вот именно до сих пор в недоумении, как на этом его вы 8230 высокотехнологичн... текст свёрнут, показать
     
     
  • 10.69, piteri (ok), 10:53, 14/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А может всё таки не потеряли Это не троллфейс - это врождённое уродство ... текст свёрнут, показать
     
  • 7.31, piteri (ok), 10:56, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ладно, в этой ветке и так мало связанный сообщений. Но что такое кмк?

    Гугуль:
    КМК — аббревиатура, может расшифровываться как
    Карманный мультимедийный компьютер
    Кемеровский молочный комбинат
    Киржачский машиностроительный колледж
    Кировский медицинский колледж
    Кировский молочный комбинат
    Коломенский медицинский колледж
    Костромской медицинский колледж
    Кузнецкий металлургический комбинат
    Культура многоваликовой керамики
    Как мне кажется
    +Красноярская мебельная компания

     
     
  • 8.35, Аноним (-), 11:41, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Как мне кажется ... текст свёрнут, показать
     
  • 3.22, Af. (?), 09:27, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > А что это за рефлекция такая?

    У переводчика Хорстона - отражение. На лету получать и использовать имена переменных, функций, классов, их значения. Можно в пяток строк вызвать 250 функций, зная принцип построения имён (имея заранее список). И т.п.

     
  • 3.24, Аноним (-), 09:51, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Получение данных о классах, полях, методах и т.д. на ходу и работа с ними.

    Например, использование приватных полей:
    SomeClass obj = new SomeClass();
    try{
        Field f = obj.getClass().getDeclaredField("someValue");
        f.setAccessible(true);
        System.out.println(f.get(obj));//Тут будет 1.
        f.set(obj, 2);
        System.out.println(f.get(obj));// А тут уже 2.
    }catch(Exception e){
        e.printStackTrace();
    }
    public class SomeClass{
        private int someValue;
        public SomeClass(){
            someValue = 1;
        }
    }

     

  • 1.6, pavlinux (ok), 03:31, 13/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ахтунг не арбайтен

    $ ant

    ...

    [javadoc] Standard Doclet version 1.6.0_29
      [javadoc] Building tree for all the packages and classes...
      [javadoc] /tmp/rootbeer1/src/edu/syr/pcpratts/rootbeer/generate/misc/BasicBlock.java:81: warning - @return tag has no arguments.
      [javadoc] /tmp/rootbeer1/src/edu/syr/pcpratts/rootbeer/generate/opencl/body/OpenCLBody.java:59: warning - @param argument "body" is not a parameter name.
      [javadoc] /tmp/rootbeer1/src/edu/syr/pcpratts/rootbeer/runtime/remap/Random.java:75: warning - Tag @link: reference not found: java.util.concurrent.ThreadLocalRandom
      [javadoc] /tmp/rootbeer1/src/edu/syr/pcpratts/jpp/typetable/Combinatorics.java:24: warning - @return tag has no arguments.
      [javadoc] /tmp/rootbeer1/src/edu/syr/pcpratts/rootbeer/generate/bytecode/FieldReadWriteInspector.java:78: warning - @return tag has no arguments.
      [javadoc] /tmp/rootbeer1/src/edu/syr/pcpratts/rootbeer/generate/bytecode/FieldReadWriteInspector.java:90: warning - @return tag has no arguments.
      [javadoc] Building index for all the packages and classes...
      [javadoc] Building index for all classes...
      [javadoc] Generating /tmp/rootbeer1/dist/javadoc/stylesheet.css...
      [javadoc] 6 warnings


    $ ./pack-rootbeer
    java.lang.NullPointerException
            at pack.Main.findJarFilesInDirectory(Main.java:85)
            at pack.Main.runOnDirectory(Main.java:79)
            at pack.Main.run(Main.java:31)
            at pack.Main.main(Main.java:18)

     
     
  • 2.16, pavlinux (ok), 06:08, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Короча там косяк мелкий, собирать надо так

    $ git clone git://github.com/pcpratts/rootbeer1.git
    $ cd rootbeer1/
    $ mkdir dist/lib
    $ ant
    $ ./pack-rootbeer

    Пускать так:
    $ java -jar ./Rootbeer.jar /some/where/some/Blob.jar SuperBlob.jar;


     
     
  • 3.32, hg user (?), 11:26, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    git хранит только файлы, пустые директории никак? )
     
     
  • 4.55, arisu (ok), 19:13, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > git хранит только файлы, пустые директории никак? )

    нет. и не надо. пусть их система сборки создаст при необходимости, или софтина после запуска.

     
  • 4.76, анонимус (??), 13:42, 14/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Поэтому прогрессивное человечество придумало файлики .keep
     
  • 3.34, hg user (?), 11:32, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Похоже они уже закоммитили исправление сборки, у меня сразу собралось. Монструозный конечно jar - на 13 мегабайт.
     
     
  • 4.37, hg user (?), 12:01, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Мало того, что Rootbeer.jar монструозный, так он еще после конвертации каждый jar проекта увеличивает на эти 13 мегабайт, в итоге проект на котором тестировал, разросся с 8 мегабайт до 170.
     

  • 1.9, Аноним (-), 04:35, 13/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Они знают толк в извращениях... особенно улыбнуло "наблюдалось замедление в 3.8 раза". Крутая у жабистов акселерация. Я так тоже что-нибудь акселерировать могу :)
     
     
  • 2.12, pavlinux (ok), 05:14, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Через строку читаешь?

    > Например, в тестах на умножения матриц высокой размерности и подбор элементов ряда Фурье,
    > Rootbeer позволил ускорить выполнение программ в 67 раз и 58 раз,
    > но в тесте наложения фильтра на изображение наблюдалось замедление в 3.8 раза.

    Умножение матриц в 67, Фурье в 58 раз, а вот с наложением не проканало.

     
     
  • 3.30, Аноним (-), 10:46, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    очень смешно, особенно в свете того, что код выполняют разные устройства
     
     
  • 4.40, none_first (ok), 13:35, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    какой код - прочитайте внимательно
    разный! код выполняют разные устройства ;)
     
     
  • 5.46, Аноним (-), 15:10, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > какой код - прочитайте внимательно
    > разный! код выполняют разные устройства ;)

    ну так раз устройства разные - как можно вообще разы считать? и говорить об эффективности? гпу и цпу разные бывают...

     
     
  • 6.47, pavlinux (ok), 15:28, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Трактор и Ферарри можно сравнивать?
     
     
  • 7.54, arisu (ok), 19:11, 13/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Трактор и Ферарри можно сравнивать?

    конечно: отстой эта ваша фераря, на поле сразу угрузла и ни бибип.

     

  • 1.18, Аноним (-), 09:13, 13/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    alparapi вроде как подобным образом работает (прадва, больше в сторону ati уклон - хотя и nvidia должна отрабатывать в теории); цифры не приведу, но пробовал - неплохой результат
     
  • 1.33, Аноним (-), 11:26, 13/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Оракл еще спит? Или после многолетней тяжбы с  уже не хочется?
     
  • 1.67, pavlinux (ok), 07:26, 14/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я SWT и Azureus конвертнул, теперь качаю торренты на GPU :D
    А если витую пару распаять под DVI, и воткнуть в видюху, быстрее качать будет???
     
     
  • 2.81, Аноним (-), 18:00, 14/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > А если витую пару распаять под DVI, и воткнуть в видюху, быстрее качать будет???

    Накаркал, бл: ethernet является куском нового стандарта HDMI. Ну то-есть линк HDMI до кучи умеет еще и эзернетом выступать. Ы? :)

     

  • 1.94, Loooooker (ok), 11:38, 16/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Реквест на впиливание в Огнелис и Хромиум!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру