LINUX.ORG.RU

QtOpenCL

 ,


0

0

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

QtOpenCL — это обёртка для OpenCL 1.0 API, предоставляющая интерфейс в Qt-стиле. Она позволяет автоматизировать такие шаги, как инициализация OpenCL, компиляция и запуск программ. Кроме того, QtOpenCL предоставляет функции для конвертирования между структурами данных Qt (такими, как QImage) и OpenCL.

QtOpenCL находится в ранней стадии разработки, и распространяется как отдельный модуль.

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



Проверено: isden ()

Будем с надежой ждать момента, когда сабж будет включен в Qt. Начинание, думаю, правильное и более чем злободневное.

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

ага, мне особенно вот это нравится:

OpenCL управляет распределением нагрузки между всеми ядрами CPU и GPU

isden ★★★★★ ()

Будет круто если они сделают на ОпенКЛ масштабирование картинок (пачками) и заргузку JPG. А сама обертка с моей точки зрения ни о чем.

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

> масштабирование картинок

это же тупо средствами OpenGL можно сделать, не?

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

>это же тупо средствами OpenGL можно сделать, не?

Качество очень хреновое.

theos ★★★ ()

Круто! Всё больше хороших низкоуровневых библиотек дружат с Qt.

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

> Будет круто если они сделают на ОпенКЛ масштабирование картинок (пачками) и заргузку JPG. А сама обертка с моей точки зрения ни о чем.

Без обертки невозможна интеграция поддержки OpenCL в Qt. Так что ребята всё правильно делают, это первый шаг в нужном направлении.

Relan ★★★★★ ()

А по-моему сабж офигенен! Надеюсь, оно допилится, и это будут использовать.

pevzi ★★★★★ ()

Будет ли мое приложение, запускаемое на 24 ядрах работать быстрее, чем на одном? Или эта библиотека позаботилась и об этом?

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

>Без обертки невозможна интеграция поддержки OpenCL в Qt.

?! Апи то у него под все платформы вроде как одинаковое.

theos ★★★ ()

радость_быдлокодера.жпг

Ненужная сущность

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

Не будет, так как не согласуется с идеологией другой близкой библиотеки — QtOpenGL. Qt управляет только созданием и управлением контекстом, которое невозможно сделать кроссплатформенно, а все остальные остальные операции делает пользователь руками.

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

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

ну это может быть направлением развития. Хотя и как отдельная библиотека вполне неплохо.

dotbg ★★★★ ()

Очень, очень хорошо!

AP ★★★★★ ()

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

Novell-ch ★★★★★ ()

Вот у меня вопрос. Карты nvidia и ati уже вовсю могут использовать gpu для конвертации видео из одного формата в другой. Делается это либо при помощи драйвера либо при помощи сторонней утилиты. Так вот работает вся эта красота ( а она реально работает) только под виндой. А когда такое же будет под линуксом? То что изложено в новости - это утопия которая скорее всего если и будет претворена в жизнь, то в сильно кастрированном виде.

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

anonymous ()
Ответ на: комментарий от Novell-ch

> будет запускаться за минусовое время

Предугадывать желания юзера что ли?

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

>А когда такое же будет под линуксом?

никогда. оставайся на винде.

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

> а как там с качеством кодирования?

Звезд с неба не хватает, но в целом неплохо

anonymous ()

OpenCL Няшка! хотеть кодеки, ядро и большинство приложений на нем! +)

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

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

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

> просто процесс кодирования у меня как-то не ассоциируется с простой числодробилкой

Может быть просто нашлись люди которые оторвали жопу от стула и смогли запрячь простую, как вы изволили выразится, числодробилку для нужд видеокодирования. Если вы этого не смогли это не значит что никто этого не смог.

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

>А когда такое же будет под линуксом?

никогда. оставайся на винде.

Можно и остаться на винде. А что винда противоречит вашим религиозным убеждениям?

anonymous ()

>OpenCL управляет распределением нагрузки между всеми ядрами CPU и GPU

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

p.s. Новость однозначно позитивная.

EtherealPhantom ()
Ответ на: комментарий от Novell-ch

> если libastral скомпилировать то вполне.

ты хотел сказать - слинковаться с libastral?

val-amart ★★★★★ ()
Ответ на: комментарий от EtherealPhantom

> Многоядерный процессор, например, видится как одно устройство

Кем, простите, видится? Сборщиком компьютера?

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

>> Без обертки невозможна интеграция поддержки OpenCL в Qt.

?! Апи то у него под все платформы вроде как одинаковое.

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

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

>> Многоядерный процессор, например, видится как одно устройство

Кем, простите, видится? Сборщиком компьютера?

OpenCL-ем, при опросе доступных в системе устройств через API.

EtherealPhantom ()

Хорошо, как только доделает переделаю работы на сабж.

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

>>> Многоядерный процессор, например, видится как одно устройство

Кем, простите, видится? Сборщиком компьютера?

OpenCL-ем, при опросе доступных в системе устройств через API.

А почему так? Какой смысл различать физические процессоры и логические?

Relan ★★★★★ ()

вооот ,а если бы не галлиум - то даже надеятся на опенсл было бы глупо

mikhalich ★★ ()

Не надо программировать - надо бухать )))

yantux ()

Теперь-то можно посмеяться над теми, кто учил openmp и mpi2?

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

>Теперь-то можно посмеяться над теми, кто учил openmp и mpi2?

чой-то я не понял, разве openmp и opencl решают одну и ту же задачу??

openmp - это распараллеливание задачи на несколько процессоров (ядер), а opencl - это возможность использовать одновременно графический и основной процессор. или не?

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

>А почему так? Какой смысл различать физические процессоры и логические?

Вот и я тоже хотел бы знать...

Суть в том, что балансировать нагрузку между физическими GPU, судя по описанию API и работе OpenCL, нужно вручную. Балансировка внутри библиотеки идет только между логическими процессорами. Возможно, двухчиповые видеокарты и многопроцессорные системы (с несколькими физическими процессорами на разных чипах) будут тоже представляться через API одним устройством, но эти варианты проверить не на чем.

EtherealPhantom ()

Объясните плз нафига оно нужно? OpenCL и так имеет кроссплатформенный API, уж я то знаю, писал пару helloworld'ов с использованием OpenCL. Нет там платформозависимых кусков. Вердикт: сабж - велосипед.

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

> Теперь-то можно посмеяться над теми, кто учил openmp и mpi2?

Ну я в своё время учил MPI. У нас в универе был курс программирования на кластерах. ИМХО один из самых полезных курсов, т.к. позволяет изучить проблемы распараллеливания алгоритмов и балансировки нагрузки, причем на живом кластере, где всё гораздо сложнее и интереснее, чем на банальном ПК. Кстати на том кластере, на котором мы гоняли свои поделки, была гента.

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

OpenGL тоже кроссплатформенный, но QtOpenGL есть и используется

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

>penGL тоже кроссплатформенный, но QtOpenGL есть и используется

Это потому что в OpenGL непосредственно вывод графики не является кроссплатформеным. OpenCLю же GUI не нужен.

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

> OpenGL тоже кроссплатформенный, но QtOpenGL есть и используется

В OpenGL помимо самого OpenGL требуется ещё и инициализация окна куда будет всё рисоваться, либо какого ещё буфера, нужно создать контекст перед этим ещё, а это всё платформозависимый код. в OpenCL такого нет - ВЕСЬ, пишу капсом ещё раз, для тех кто в танке, ВЕСЬ API кроссплатформенный, и в нём есть всё, что нужно и для инициализации, деинициализации, и собственно для полезных вычислений, грубо говоря. Там нет такой необходимости в костылях. Там вообще никакой необходимости в костылях нет. Я ж говорю, я щупал OpenCL, и OpenGL тоже кстати. Как под виндами, так и под линуксом.

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

>Теперь-то можно посмеяться над теми, кто учил openmp и mpi2?

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

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

ну как минимум Qt это C++, а не plain C. Кроме того наверняка они завернули некоторые сущности в QObjectы, чтобы заиспользовать сигналы/слоты. вобщем все правильно делают.

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

пишу капсом ещё раз, для тех кто в танке, ВЕСЬ API кроссплатформенный, и в нём есть всё, что нужно и для инициализации, деинициализации, и собственно для полезных вычислений, грубо говоря. Там нет такой необходимости в костылях. Там вообще никакой необходимости в костылях нет.


плюсую

Boy_from_Jungle ★★★★ ()

Отличная новость пред сном грядущим! Qt 5.0 ждем в ядре :}

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