Какой код Java можно перенести в графический процессор?
С помощью rootbeer возможно программирование на GPU для Java.
Какой код Java следует использовать для rootbeer, и какой код лучше запускать на собственной виртуальной машине Java?
Или другой: какой код создает больше накладных расходов, и это не имеет смысла?
4 ответа
В дополнение к другим ответам: Есть также некоторые Java-функции, которые не поддерживаются для перевода с помощью rootbeer jet.
- нативные методы
- отражение
- динамический вызов метода
- спать внутри монитора.
- вывоз мусора(!)
Вы должны избегать кода с этими функциями.
Выполняются обновления для Rootbeer, чтобы обеспечить сборку мусора и другие недостающие функции Java.
Это немного глупо, но очевидным ответом будет "для проблем, при которых графический процессор лучше, чем центральный процессор". Современные графические процессоры имеют более тысячи ядер, но сравнительно мало памяти, поэтому в целом это означает то, что хорошо подходит для распараллеливания и не занимает слишком много памяти.
Г. Бах упомянул в комментариях атаки грубой силы против криптовалют, это хороший пример. Научное моделирование является еще одним хорошим примером. Фактически, несколько лет назад в нескольких исследовательских институтах (в частности, в NASA) были кластеры запущенных симуляций Playstation 3. Статья Википедии о вычислениях GPGPU перечисляет несколько применений этой технологии.
Чтобы получить ускорение с помощью графических процессоров, вам нужно много вычислений для каждого элемента данных, потому что передача данных очень медленная. Обычно вам нужно 2 или 3 вложенных цикла, которые выполняются на GPU с как минимум 1000 потоков.
Одно из ограничений текущего графического процессора заключается в том, что он может загрузить один простой метод для каждого ядра и выполнить его одновременно. Процессоры общего назначения могут загружать больше кода и данных и выполнять их независимо.
Есть код в векторном стиле, который может быть быстрее на графическом процессоре, и я вижу, что это однажды вариант, но большая часть кода (по объему, если не по вычислительной мощности) будет на процессорах.