LINUX.ORG.RU

Вышла спецификация OpenCL 1.1, позволяющая использовать GPU для параллельных вычислений

 , , , ,


0

0

Технологическая группа Khronos объявила о выходе обновлённой версии открытого языка для кросс-платформенных параллельных вычислений OpenCL 1.1.

OpenCL определяет API и расширения языка C для параллельного программирования, предусматривая возможность задействовать для решения задач GPU видеокарт. Спецификация OpenCL 1.1 предоставляет увеличенную производительность и функциональность и является обратно совместимой с предыдущей версией.

Работа по написанию новой версии OpenCL заняла около полутора лет. В работе над стандартом приняло участие более 30 компаний, среди которых: IBM, NVIDIA, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments, Toshiba, Intel, национальная лаборатория Los Alamos, Nokia.

Основные изменения в спецификации:

  • Новые типы данных, включая трёхкомпонентные векторы и дополнительные графические форматы;
  • Обработка команд и буферов с нескольких хостов и на нескольких устройствах одновременно;
  • Операции на регионах буфера, включая чтение, запись и копирование 1D, 2D и 3D прямоугольных регионов;
  • Расширенное использование события для управления потоком исполнения команд;
  • Дополнительные встроенные Си-функции, такие как целочисленный clamp, shuffle и асинхронные разряженные копии;
  • Улучшено взаимодействие с OpenGL путём эффективного взаимного использования изображений и буферов и связывания событий OpenCL и OpenGL.

Подробности;

Обзор OpenCL;

>>> Подготовлено по материалам opennet.ru

Вот это отличная новость. Хотеть много софта на опенцл!

Хотя что то мне подсказывает, что не все так просто будет. Наверняка майкрософт придумает(или уже?) аналогичные инструменты, завязанные на их платформе, как, например, Direct3D.

Lindows ()

Вопрос, который я задавал, но так и не ответили:
Есть ли возможность использовать OpenCL для декодирования видео при помощи видеокарты?

Ttt ☆☆☆☆☆ ()
Ответ на: комментарий от Ttt

да, но зачем?
vdpau (nvidia) и uvd (ati, intel?) как раз этим и занимаются

note173 ★★★★★ ()
Ответ на: комментарий от Ttt

> Есть ли возможность использовать OpenCL для декодирования видео при помощи видеокарты?

Программа MovieGate для MacOS X Snow Leopard использует OpenCL для кодирования и декодирования видео.

http://nvworld.ru/news/new-433/

http://www.apple.com/downloads/macosx/video/moviegate.html

confluent_anonymous ()
Ответ на: комментарий от note173

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

Ttt ☆☆☆☆☆ ()
Ответ на: комментарий от confluent_anonymous

>Программа MovieGate для MacOS X Snow Leopard использует OpenCL для кодирования и декодирования видео.

Она, как я понял, конвертирует видео или что-то типа того. А меня интересовало декодирование «в реальном времени», для воспроизведения.

Ttt ☆☆☆☆☆ ()

Если стоит задача манипуляции(*) с большим количеством матриц 100x100 чисел с плавающей запятой, то уместно ли использование OpenCL?

(*) Пробежаться, посчитать сумму строк/столбцов, проверить связанность по корреляционной формуле, добавить/выбросить лишние строки, всё в таком духе.

eveel ★★ ()
Ответ на: комментарий от eveel

> Пробежаться, посчитать сумму строк/столбцов, проверить связанность по корреляционной формуле

Если нужно это сделать один раз, то заталкивание данных на видеокарту будет дольше, чем вычисление. Т.е. как и в случае с процессором вы упрётесь в пропускной канал оперативной памяти. Если нужно это делать для одних и тех же данных много раз - то по идеи выигрыш может быть, т.к. пропускной канал, например Radeon HD 5970 есть GDDR5 4 ГГц QDR * 256 бит * 2. У оперативной памяти и шина меньше и частоты ниже.

чисел с плавающей запятой

На nvidia, по крайней мере, которая у меня, блоков вычисления double float в 8 раз мешьше, чем одинарных float. Иногда это нужно учитывать.

HexGhost ()
Ответ на: комментарий от eveel

Если задача хорошо разлагается на параллельные потоки с одинаковым кодом, то смысл есть. Если нет - то нужно смотреть, можно упереться в передачу данных и в serialization. Последнее - это когда разные плечи if будут выполняться последовательно, и толку от десятков процессоров в рабочей группы будет чуть больше, чем от одного.

eliterr ()

> 1D, 2D и 3D прямоугольных регионов;

прямоугольных регионов

1D

непАнятнА... (-__-" )

anonymous ()

Яблы сказали, что гордятся тем, что их спеки теперь официальный стандарт, и у них первая реализация, полностью отвечающая этому стандарту.

Демки, как всегда, внушали.

adarovsky ★★★★ ()
Ответ на: комментарий от Ttt

>Есть ли возможность использовать OpenCL для декодирования видео при помощи видеокарты?

Да можно использовать как для расчёта компенсации изображения так и для ключевых кадров. Правда только в последней версии можно будет избежать двойной передачи данных при выводе изображения через OpenGL.

Другой вопрос, что нужно переписывать декодеры на OpenCL и не факт, что для всех форматов будет прирост производительности (вспомним WMV со своим float point) особенно там где много логики и мало последовательных вычислений.

На видео карточках не много-поточные вычисления, там одно поточные (почти строго последовательные) применимые одновременно ко многим данным и любой if в системе будет серьёзно понижать производительность так как ветвления так такого на GPU нету (выполняем 2 ветки программы, а потом откидываем то, что не нужно). Короче параллелизм по данным но не по программе.

Это я всё к тому, что от CPU в данных процессах мы ещё не скоро откажемся.

stalkerg ★★★★★ ()

Я вот одного не могу понять, если вычисления на GPU это так круто, и все так делают, и производительность в разы выше, чем на CPU, то зачем в компьютерах всё еще есть этот самый CPU?

Viglim ()

Ммм.Рад.Надеюсь мануал нормализовали.

aptyp ★★★★ ()
Ответ на: комментарий от Viglim

Viglim> Я вот одного не могу понять, если вычисления на GPU это так круто, и все так делают, и производительность в разы выше, чем на CPU, то зачем в компьютерах всё еще есть этот самый CPU?

Затем, зачем компьютер состоит не из звуковой карты.

Quasar ★★★★★ ()
Ответ на: комментарий от Viglim

Почитать про то какие именно вычисления делаются на GPU не судьба?

Reset ★★★★★ ()

Интересно, кто нибудь вообще пишет на нем? Когда то давно, еще до выхода первой Куды, мыла мысль написать че нибудь использующее шейдерные процессоры для вычислений, но так руки и не дошли по нормальному разобраться, с OpenCL это должно быть получше... Кто нибудь щупал, как оно?

anonymous ()

новость, конечно, хорошая.

Можно ли OpenCL «пощупать» в качестве числодрбилки на встроенной ati x1250 или он только для новых поколений карт?

Genuine ★★★ ()
Ответ на: комментарий от note173

>vdpau (nvidia)

в свободных дровах нет и не планируется. Так что выкручиваются кто как может.

mikhalich ★★ ()
Ответ на: комментарий от Viglim

Внимательнее читать надо. Сто раз уже про это говорилось. GPU - это просто очень много параллельных вычислителей, молотилок. В нём практически полностью отсутствует сложная управляющая логика: управление программой, виртуальная адресация, переключение задач, нет предсказания ветвлений и т. д. Никакую ОС на нём в жизни не запустишь. В отличие от CPU

anonymous ()

Обьясните популярно какой реальный профит можно сейчас с этого поиметь?

P.S. Video - NVIDIA Quadro NVS 320M

GoNaX ★★★ ()
Ответ на: комментарий от GoNaX

Профит есть на макоси. А в этих ваших линуксах - врядли.

theos ★★★ ()
Ответ на: комментарий от GoNaX

Обьясните популярно какой реальный профит можно сейчас с этого поиметь?

P.S. Video - NVIDIA Quadro NVS 320M

В вашем случае проще использовать Куду. На мой субъективный взгяд там нужно существенно меньше телодвижений для адаптации программы, чем в случае с OpenCL.

Vudod ★★★★★ ()
Ответ на: комментарий от Viglim

>Я вот одного не могу понять, если вычисления на GPU это так круто, и все так делают, и производительность в разы выше, чем на CPU, то зачем в компьютерах всё еще есть этот самый CPU?

Во первых, это специфичные и именно вычисления.

во вторых, видеокарта дополняет процессор, а не заменяет его.

AVL2 ★★★★★ ()
Ответ на: комментарий от Vudod

Согласен. Программу изначально удобно писать и оптимизировать под CUDA. А потом, если есть смысл, то можно и на OpenCL перенести. Хотя смысла пока нет, ибо OpenCL нормально пока только на nvidia работает :)

Reset ★★★★★ ()

>NVIDIA, AMD, Intel

лучше бы дрова пилили.

IBM, ARM, Qualcomm, Texas Instruments, Toshiba, Nokia

лучше бы железом занимались и его поддержкой в линукс

Apple Electronic Arts, национальная лаборатория Los Alamos

жалкие неудачники.

AVL2 ★★★★★ ()
Ответ на: комментарий от Reset

Появится ли что-нибудь посложнее чем blas?

Zodd ★★★★ ()
Ответ на: комментарий от AVL2

лучше бы дрова пилили

Это поважнее будет, профита больше.

Zodd ★★★★ ()

Apple работает. Точнее платит

namezys ★★★★ ()
Ответ на: комментарий от AVL2

>> Apple Electronic Arts, национальная лаборатория Los Alamos

жалкие неудачники.

Которые его и сделали. И убедили всех им пользоваться. И распостранили это не весь мир open source

namezys ★★★★ ()

Кстати, кто-нибудь объяснить убогому, зачем эта штука понадобилась Qualcomm?

Насколько я понимаю, OpenCL позиционируется как уровень абстракции над конкретным вычислителем, но ARM и GPU настолько различны по своей природе (вернее по специфике вычислений, которые на них стоит гонять), что общий смысл сего стандарта от меня ускользает.

vaulter ()
Ответ на: комментарий от vaulter

Во первых - openCL должен работать даже, если отсутсвует специфичный GPU. Во вторых - кто мешает рядом с ARM вешать сопроцессор (как это сделали creative)

namezys ★★★★ ()
Ответ на: комментарий от namezys

>И убедили всех им пользоваться. И распостранили это не весь мир open source

безудержные фантазии.

AVL2 ★★★★★ ()
Ответ на: комментарий от Ttt

>Она, как я понял, конвертирует видео или что-то типа того. А меня интересовало декодирование «в реальном времени», для воспроизведения.

а смысл? для этого есть спец. интерфейсы типа vdpau. Они ускоряют не только просчет, но и вывод.

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

AVL2 ★★★★★ ()
Ответ на: комментарий от anonymous

> GPU - это просто очень много параллельных вычислителей, молотилок.

Вот когда наконец-то ядро GPU посадят рядом с CPU, чтобы он получил прямой доступ ко всем этим дробилочкам! Вот тогда!..

gag ★★★★★ ()
Ответ на: комментарий от AVL2

И как поведет себя код на cuda, если нет видюхи от nvidia?

namezys ★★★★ ()
Ответ на: комментарий от AVL2

>а смысл? для этого есть спец. интерфейсы типа vdpau. Они ускоряют не только просчет, но и вывод.

Вот будет единый интерфейс для карт разных производителей и появится возможность добавлять поддержку других форматов (или хотя бы выйдут карты с поддержкой VP8) — то пожалуйста. А сейчас либо OpenCL, либо вообще рассчитывать только на CPU.

Ttt ☆☆☆☆☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.