URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 86069
[ Назад ]

Исходное сообщение
"Oracle планирует задействовать в Java VM вычисления на сторо..."

Отправлено opennews , 20-Авг-12 00:05 
Разработчики HotSpot Java VM из компании Oracle и участники сообщества  OpenJDK  из компании AMD анонсировали (http://mail.openjdk.java.net/pipermail/discuss/2012-August/0...) проект по интеграции в виртуальную машину Java (JVM) средств для ускорения работы за счёт переноса определённых вычислительных задач с CPU на плечи GPU. При этом прирост производительности скажется не только на Java, но на других языках, использующих для своего выполнения JVM, таких как Groovy, Scala и JRuby.


Возможности по задействованию GPU планируется добавить в Hotspot JVM, в котором уже имеются встроенные механизмы оценки производительности выполняемого кода. В JVM планируется добавить поддержу генерации кода для GPU, обеспечить сборку мусора для этого года и адаптировать runtime-компоненты для выполнения кода на стороне GPU. Дополнительно планируется подготовить серию расширений для Java API, позволяющих управлять выполнением функций с использованием GPU.


URL: http://www.theregister.co.uk/2012/08/16/java_gpu_hardware_ac.../
Новость: http://www.opennet.me/opennews/art.shtml?num=34613


Содержание

Сообщения в этом обсуждении
"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 20-Авг-12 00:05 
Сборку мусора надо обязательно переложить на GPU. Аутсорс, так сказать. Процессор будет весь в белом на белом коне, а GPU будет за ним подметать.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено ВовкаОсиист , 20-Авг-12 00:24 
А ещё можно прикрутить руки себе на место и юзать new/delete. И тогда никаких белых коней ненужно.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 20-Авг-12 00:32 
В этом случае процессор будет сразу удалять ненужные объекты - а это затраты времени.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено ВовкаОсиист , 20-Авг-12 01:14 
Да что ты говоришь. А если включить свой моск и подумать, когда обьект удалять так, чтобы это не сказалось на производительности? Хотя постой, о чём ты вообще? Освободить указатель в пуле - дело наносекунд. Это же в вашей жабе даже удаление обьекта из памяти занимает пол часа :-D Совсем уже одеревенели от своих жаб. Будто-бы сборщики мусора дают прирост производительности :-D Ох уж эти школьники) Кстате, минусаторы, бегите бегом, на святое позарились. Криворукие^W Жабисты в шоке!!

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Anonymouses , 20-Авг-12 01:35 
А деструкторы для объектов выполняються в священном эфире и CPU не грузят?
Клево у вас, в параллельной вселенной!

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено ВовкаОсиист , 20-Авг-12 01:58 
Так говорите, будто бы на С/С++ я обьекты не могу освобождать паралельно в отдельном треде) Интересно, что-же вы в деструкторах такого наворотить придумали, чтобы оно тормозило о_О

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено BratSinot , 20-Авг-12 02:39 
А по поводу высвобождения памяти в другом потоке, это вы аккуратнее.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено pavlinux , 20-Авг-12 02:49 
Аллокать во всей программе, а треду-уборщику скивыдваешь указатель и сигнал.
Сигналы ставятся в очередь, проц. освободится - сигнал c обработчиком отработают.
Только не проще ли сделать free()/delete[]

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено iZEN , 20-Авг-12 08:34 
> Аллокать во всей программе, а треду-уборщику скивыдваешь указатель и сигнал.

Чем это отличается от GC? Тем, что из программы на Java нельзя послать прямой сигнал GC, что пора бы прибраться, а из C++ можно?
А ваш тред-уборщик в параллельной вселенной работает и не занимает ресурсы CPU в этой совсем-совсем?


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 20-Авг-12 11:42 
Таки можно послать и в жаве. Ежели надо.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено iZEN , 21-Авг-12 14:13 
> Таки можно послать и в жаве. Ежели надо.

Таки нельзя.


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено ДяДя , 20-Авг-12 11:45 
>Чем это отличается от GC? Тем, что из программы на Java нельзя послать прямой сигнал GC, что пора бы прибраться, а из C++ можно?

Runtime.getRuntime().gc();


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено iZEN , 21-Авг-12 14:12 
>>Чем это отличается от GC? Тем, что из программы на Java нельзя послать прямой сигнал GC, что пора бы прибраться, а из C++ можно?
> Runtime.getRuntime().gc();

Это асинхронная нотификация (непрямой сигнал). Не факт, что GC после этого вызова начнёт что-то там подчищать.



"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено JL2001 , 24-Авг-12 19:46 
>> Runtime.getRuntime().gc();
> Это асинхронная нотификация (непрямой сигнал). Не факт, что GC после этого вызова
> начнёт что-то там подчищать.

так и там "Сигналы ставятся в очередь, проц освободится - сигнал c обработчиком отработают." - синхронности не замечено


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено ВовкаОсиист , 20-Авг-12 16:32 
Там где человек может оптимизировать код статически, сборщики мусора тупо собирают тонны рамы, а потом освобождают с огромадными задержками. Плюс ко всему ещё и утечки имеются, от кривости рук программиста. Зачем тогда вообще нужен сборщик?

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 25-Сен-12 06:30 
Однако в плюсах утечки памяти случаются куда как чаще чем в джаве.
А как вы с фрагментацией памяти боретесь например?

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено grondek , 20-Авг-12 06:58 
+100. Можно много невнятных ошибок хапнуть.

Так-то удаление объектов занимает немалое время, если выделение было сделано штатными средствами, поэтому объекты выделять/удалять надо как можно реже. А вот если пошаманить с аллокаторами, то можно все существенно ускорить.


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено AnonyMouse , 20-Авг-12 10:30 
Ой, а как Ви таки боретесь с фрагментацией кучи за наносекунды?

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Kroz , 20-Авг-12 11:00 
Погуглите по ключевому слову slab .

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Mna , 20-Авг-12 01:14 
вопрос что лучше открытые минимальные затраты на очистку, либо забыть почистить до 3го пришествия, когда памяти позарез надо а ее нет и вызывается сборщик и вся машина столл-ается


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено жабабыдлокодер , 20-Авг-12 08:23 
Открою Вам 2 страшных тайны:
1) В яве нет delete. Вообще нет. Там есть сборщик мусора. Иногда это доставляет некоторые неудобства.
2) Сборщик мусора запускается в отдельном потоке, причем можно оставить его на усмотрение jvm, а можно запускать в нужное время и в нужном месте.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено ВовкаОсиист , 20-Авг-12 16:34 
Ой спасибо, я даже не знал что в жабе нет делит. А если бы вы ещё прочитали повнимательней, то вообще бы поняли что я с сарказмом намекал на ненужность жабы.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Nuzhny , 20-Авг-12 01:00 
Сборку мусора видеопамяти, а не системной. И осуществляться эта сборка будет (сюрприз-сюрприз!) на CPU. Потому что внутри GPU кода выделение видеопамяти (а системной тем более) невозможно (кроме регистровой и маленькой кеш-памяти).
Но это всё мелочи по сравнению с тем, что можно получить на выигрыше с ускоренными вычислениями. Глядишь, скоро можно будет и тяжёлую математику на Яве писать, всякую обработку изображений, видео и звука. А для функциональных языков типа Скалы это будет тем более плюсом: кратко, выразительно и быстро писать программы.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 25-Сен-12 06:35 
> Сборку мусора видеопамяти, а не системной. И осуществляться эта сборка будет (сюрприз-сюрприз!)
> на CPU. Потому что внутри GPU кода выделение видеопамяти (а системной
> тем более) невозможно (кроме регистровой и маленькой кеш-памяти).
> Но это всё мелочи по сравнению с тем, что можно получить на
> выигрыше с ускоренными вычислениями. Глядишь, скоро можно будет и тяжёлую математику
> на Яве писать, всякую обработку изображений, видео и звука. А для
> функциональных языков типа Скалы это будет тем более плюсом: кратко, выразительно
> и быстро писать программы.

Забавно но на последних тестах Scala не только идет вровень с джавой но и местами её обгоняет. Особенно это заметно на параллельном коде. Кроме того на скале *уже* можно писать под GPU (т.е. все итеративные места компилятором при помощи плагина будут пересены с CPU на GPU) http://code.google.com/p/scalacl/


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 20-Авг-12 01:44 
для этого нужен отдельный сопроцессор

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Капитан , 21-Авг-12 00:54 
Им потихоньку становится ГПУ.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено lucentcode , 20-Авг-12 00:58 
Ну и изобретатели. Для некоторых задач и типов вычислений использование GPU более чем оправданно. Но на многих задачах GPU будет тормозить почище чем CPU. Как их JVM будет определять какой код на чем выполнить, что-бы получить прирост производительности?

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Nuzhny , 20-Авг-12 01:12 
Так в новости же сказано, что грядёт расширение API для управления. Это наверняка будет перечисление доступных устройств, их выбор и определение функций, которые будут выполняться на GPU. Иначе и смысла нет.
Вообще говоря, всё это идёт в продолжении тренда:
1. шейдеры только для видеокарт;
2. CUDA от Нвидии для своих видеокарт и сопроцессоров;
3. OpenCL уже для гетерогенных устройств (и дискретных видеокарт, и встроенных, для обычных х86 CPU, уже и на ARM);
4. появление HSA как упрощение внедрения низкоуровневого OpenCL.

Последнее делается в основном той же AMD, которая хочет снизить влияние Нвидиевской CUDA, а теперь помогает явистам. Думаю, многие языки и фреймворки скоро получат высокоуровневые средства генерации кода для высокопараллельных систем, а не на кластеры, что сейчас довольно развито уже. Возможно даже, что такой мелко и крупнозернистый параллелелизм удастся объединить под каким-нибудь одним стандартом. Что было бы хорошо, но я пока не представляю как.


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено lucentcode , 20-Авг-12 01:28 
Будет хорошо, если общий стандарт создадут Intel и AMD. А то NVidia любит vendor lock-in решения. Он в этом на Microsoft похожи.


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 20-Авг-12 05:52 
ну так есть такой стандарт, OpenCL зовётся

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Anonymouses , 20-Авг-12 01:33 
Учитывая, что код для GPU должен обладать одним основным свойством: куча одинаковых действий над различными данными (SIMD), выделить его не сложно. Тем более имея в наличии байткод и комментарии выставленные явовским компилятором.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено жабабыдлокодер , 20-Авг-12 08:25 
То есть, теперь будут новости типа: "Для обеспечения роста производительности критические участки кода были переписаны на Java"? :)

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 20-Авг-12 09:03 
Предлагаю переложить сборку мусора на облачные сервисы на серверах Оракол.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено o , 20-Авг-12 09:07 
Теперь в серваки придется игровые видеокарты втыкать?
Дешевле таки просто не юзать яву.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено жабабыдлокодер , 20-Авг-12 09:13 
Вас не возмущает необходимость втыкать в серваки специализированные процессоры? Или Вы таки держите серверы с процессорами Целерон?

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 21-Авг-12 02:06 
он одминит локалхосты, очевидно же

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 25-Сен-12 06:42 
На амазоне например уже два года как

http://aws.amazon.com/about-aws/whats-new/2010/11/15/announc.../


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 20-Авг-12 10:27 
Я до сих пор помню, как Oracle Corp. уничтожили кучу отличных открытых проектов и разогнали сообщества пользователей и разработчиков :(((
Вечная Память.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 20-Авг-12 11:44 
Ну вот докатились: теперь новые видеокарты будут покупать не для игр, а чтобы джава не тормозила.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено АнониМ , 20-Авг-12 11:47 
Попытка залезть на проигранный десктоп?
Лучше бы делом как-нить занялись ...

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Crazy Alex , 20-Авг-12 19:54 
Попытка усидеть на сервере. Довольно удачная, между прочим. В принципе, это чуть ли не первый вменяемый плюс байткодовых платформ - до этого все их "оптимизации" в лучшем случае позволяли получать скорость натива. А вот здесь есть шанс многократно ускорить даже то, к чему исходники сто лет назад как потеряли, просто за счёт установки нового рантайма.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 21-Авг-12 18:27 
Это сильно вряд ли, потому что из серии "а давайте все автоматически распараллелим" (что было модно лет эдак 25 назад, на этой волне появилось множество функциональных языков с упором на чистоту).

Чтобы получить какой-либо прирост, работать с GPU надо вручную.


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено JL2001 , 27-Авг-12 10:43 
> Это сильно вряд ли, потому что из серии "а давайте все автоматически
> распараллелим" (что было модно лет эдак 25 назад, на этой волне
> появилось множество функциональных языков с упором на чистоту).
> Чтобы получить какой-либо прирост, работать с GPU надо вручную.

вас не удручает что в семействе современных х86 инструкции паралелятся автоматически по блокам исполнения а не ручками ?


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено ram_scan , 20-Авг-12 16:23 
Феерично. Сначала придумали жабу, с лозунгом "подгузник - здесь ж0пу себе вытирать не надо", потом выяснили что ан все-таки памперсы менять накладно, да и ж0па в памперсе все одно остается грязная, теперь наняли GPU, который раз в 15 минут обходит весь детский сад и всем ж0пу вытирает, вне зависимости от того погадил киндер или нет. Что завтра придумают чтобы ж0пу не вытирать когда это нужно и не вытирать когда не нужно ?

Я вот все думаю, неужто вся эта автоматика проще и гигиеничнее чем самому бумагой туалетной пользоваться ?


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено ВовкаОсиист , 20-Авг-12 16:37 
Абсолютная правда. Только вот те гики которые считают себя программистами, не слышали про делит вообще. Типа "Освобождать память? Не, не пробовал"

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Аноним , 20-Авг-12 19:05 
delete хорош и крайне полезен, когда речь идёт про C++(аналогично retaiin/release в Objective C и free в plain C).

Если поделитесь, как использовать delete в Java — буду очень признателен


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Crazy Alex , 20-Авг-12 19:56 
Это к чему вообще? Очевидно же, что к сборке памяти GPU вообще никакого отношения иметь не будет.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено ram_scan , 20-Авг-12 22:51 
Вы новость читали вообще ? Цитирую: "В JVM планируется добавить поддержу генерации кода для GPU, обеспечить сборку мусора для этого кода".

Сборщик мусора, "теперь и банановый" (ц).


"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено Nuzhny , 21-Авг-12 11:29 
Потому что память выделяется на видеокарте. Кто по твоему должен её освобождать? Стандартный сборщик мусора это не умеет, разумеется, надо добавлять поддержку. Что в этом такого страшного?
Кроме того, видеопамять не будет выделяться часто и мелкими блоками. Как правило, это происходит крайне редко: при начале и окончании потока вычислений. И выделяются сразу большие буферы для матриц, изображений, буферов обработки звука и т.д. и т.п. Сборка мусора для таких вещей будет оказывать практически нулевой эффект на производительность.

"Oracle планирует задействовать в Java VM вычисления на сторо..."
Отправлено sneer , 21-Авг-12 15:17 
господи какой деский сад. И про задержки в т.ч. погуглите azul JVM. Никаких там мега пауз нет. Кто вам сказал что GPU будет мусор собирать?