Ускорение GPU приходит на Java, по словам докладчиков на ежегодной конференции JavaOne.
Новости о поддержке ускорителей GPU в Java поступили из двух источников — от главного технологического директора IBM по Java Джона Дуймовича и Марка Рейнхольда, главного архитектора Oracle, группы платформ Java.
В своем программном выступлении, показанном в видео, Джон Дуймович объявил, что ускорение GPU приходит на платформу Java и что невероятная вычислительная мощность графических процессоров ускорит как клиентские, так и серверные системы.
Он отметил, что ускорители GPU «обладают невероятной вычислительной мощностью» и что использование их 10-кратного ускорения для рабочих нагрузок Java может ускорить сложные вычисления, которые обрабатывают много данных.
В своем докладе Дуймович показал влияние ускорения GPU на сортировку стандартных массивов Java, при этом время сортировки увеличивается в два раза до 48 раз в зависимости от длины массива.
В докладе Дуймовича, Сумит Гупта из NVidia сказал, что преимущества возможны в Java JDK 8, используя преимущества существующих библиотек CUDA для ускорения библиотек Java для параллельных операций. CUDA-это платформа параллельного программирования и модель программирования, реализованная на языках C, C++, Fortran и Python.
По словам Дуймовича, IBM включит время выполнения IBM для серверных ускорителей GPU и изучит ускорение в обычных рабочих нагрузках в рамках существующих API.
В своем техническом докладе на JavaOne Марк Рейнхольд подробно рассказал о том, что может содержать Java SE9. Здесь снова упоминались графические процессоры. Рейнхольд сказал, что, поскольку графические процессоры все чаще используются для обработки больших данных, было бы неплохо заставить Java работать непосредственно с графическим процессором, а не вызывать какой-то примитивный интерфейс. В OpenJDK под названием Sumatra есть люди, работающие над этим.
Другие вещи на будущее, по словам Рейнхольда, включают в себя необходимость овеществления и устранения “раздражающей дихотомии между примитивными и ссылочными типами”, которые будут иметь ценность. Это обеспечило бы альтернативу тому, как дженерики Java в настоящее время основаны на понятии стирания для обеспечения совместимости с миграцией, но это ограничивает то, что может быть выражено в типах.
Рейнхольд также поднял тему JNI (Java Native Interface) 2.0 и сказал::
“Просто не должно быть так сложно интегрировать Java с машинным кодом после всех этих лет.”
Эффективные структуры данных памяти, которые позволяют загружать больше данных в память, были еще одной областью для потенциального улучшения, и Рейнхольд сказал, что “весь этот бокс и погоня за указателями затрудняют хорошую работу с большими данными. Мы могли бы иметь меньше бокса и погони за указателями и загружать гораздо больше данных в память.”
Последней перспективной мыслью было создание действительно модульной платформы:
“Компактный профиль в Java 8-это начало, но он недостаточно гибкий. Нам необходимо продолжить унификацию платформ Java SE и Java ME.”