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

Исходное сообщение
"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "

Отправлено opennews , 19-Дек-17 18:49 
Доступен (https://sourceforge.net/p/pocl/mailman/message/36162579/) релиз проекта PoCL 1.0 (http://portablecl.org/)  (Portable Computing Language OpenCL), развивающего  реализацию стандарта OpenCL, независимую от производителей графических ускорителей и позволяющую использовать различные бэкенды для выполнения OpenCL-ядер на разных типах графических и центральных процессоров. Код проекта распространяется (https://github.com/pocl/pocl/) под лицензией MIT.
Поддерживается работа на платформах X86_64, MIPS32, ARM v7, AMD HSA APUs и различных специализированных TTA-процессорах (Transport Triggered Architecture (https://ru.wikipedia.org/wiki/Transport_triggered_architectu... c архитектурой VLIW (https://ru.wikipedia.org/wiki/VLIW).

Реализация компилятора ядер OpenCL построена на базе LLVM, а в качестве фронтэнда для OpenCL C используется Clang. Для обеспечения должной переносимости и производительности компилятор ядер OpenCL может генерировать комбинированные  функции, которые могут использовать различные аппаратные ресурсы для распараллеливания выполнения кода, такие как VLIW, суперскалярность, SIMD, SIMT, многоядерность и многопоточность. Имеется поддержка ICD-драйверов
(Installable Client Driver). Присутствуют бэкенды для обеспечения работы через CPU, ASIP (TCE/TTA), GPU на базе архитектуры HSA (https://en.wikipedia.org/wiki/Heterogeneous_System_Architect... и GPU NVIDIA (CUDA).

В новой версии (https://github.com/pocl/pocl/releases/tag/v1.0)  добавлена экспериментальная поддержка GPU NVIDIA через новый бэкенд CUDA. В бэкенде, использующем CPU, полностью реализована спецификация OpenCL 1.2, а также поддержка отдельных элементов стандарта OpenCL 2.0. Проведена оптимизация производительности на многоядерных системах при выполнении большого числа мелких ядер OpenCL. Реализована возможность использования выпусков LLVM/Clang 4.0 и 5.0. Обновлён бинарный формат, в котором нарушена совместимость с прошлыми выпусками. Улучшена поддержка инструкций AVX512.

URL: http://portablecl.org/pocl-1.0.html
Новость: http://www.opennet.dev/opennews/art.shtml?num=47766


Содержание

Сообщения в этом обсуждении
"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Аноним , 19-Дек-17 18:49 
А Радеоны планируют?

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Вся правда , 19-Дек-17 19:43 
Только для nvидеокарт.

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Аноним , 19-Дек-17 19:48 
Поверх OpenCL?

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено letsmac , 19-Дек-17 22:04 
Пролистал сайт проекта - но никак не нашел ЗАЧЕМ они это делают :-) И как привязанный к бинарным драйверам проект может быть portable?

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Аноним , 19-Дек-17 22:30 
Пока они это писали, слово Portable приобрело другой смысл?

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Ordu , 20-Дек-17 01:30 
> как привязанный к бинарным драйверам проект может быть portable?

Он не привязан к бинарным драйверам. Он вполне может выполняться на CPU без драйверов вообще. Поэтому и portable.

> не нашел ЗАЧЕМ они это делают

Мне это тоже не совсем понятно. Они на сайте, что одна из целей -- экспериментирование с самой идеей подобных вычислений, но, мне кажется, эта цель не объясняет того количества усилий, которое вложено в PoCL. Может быть фишка в том, что имея софтварную реализацию, можно затем использовать любое доступное устройство, для того, чтобы её ускорить? Взять например видяшку, которая не может в OpenCL, но может в OpenGL, и тогда можно использовать шейдеры для того, чтобы часть работы всё же переложить с CPU на GPU?
Сложно сказать, короче. Я думаю, подобные вопросы надо задавать авторам.


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено EHLO , 20-Дек-17 01:44 
>имея софтварную реализацию, можно затем использовать любое доступное устройство, для того, чтобы её ускорить

Намекаешь на майнинг на ботнетах?


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено letsmac , 20-Дек-17 01:44 
>>Он вполне может выполняться на CPU без драйверов вообще. Поэтому и portable.

На VLIW ? Без адаптации компилятора под конкретный проц ничего не выйдет. Так умер itanium, так умер Cell, только HP с его спецпроцами и Эльбрус немного дышат. Mac весь в OpenCL, но по прежнему это не помогает против винды с Direct-ами. Они в разы быстрее.


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено pavlinux , 20-Дек-17 02:02 
> Так умер itanium, так умер Cell

Давно Cell стал VLIW?  

> Mac весь в OpenCL, но по прежнему это не помогает против винды с Direct-ами. Они в разы быстрее.

Народ тупеет. Раньше каждый программер хоть на Васике, хоть на Лиспе с Фортраном и Адой знал ассемблер.
Сейчас они даже не осилят банальные сдвиги: x = 3|3 >> 3|3 << 3|3 >> 3|3; , причём только неделю буду учить приоритеты.


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено letsmac , 20-Дек-17 02:47 
>>Давно Cell стал VLIW?

ИМХО фактически оно и есть. Только маршалер мощный прикрутили,  но всю оптимизацию опять свалили на компилятор.  

>>причём только неделю буду учить приоритеты.

Да,  а раньше за 6 дней управлялись. Правда и процессоры содержали примерно на 3 порядка меньше транзисторов :-)


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Аноним , 20-Дек-17 07:37 
>>>Давно Cell стал VLIW?
> ИМХО фактически оно и есть.

пруфы давай, а не своё имхо, заменяющее факты


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено letsmac , 20-Дек-17 21:00 
>>>>Давно Cell стал VLIW?
>> ИМХО фактически оно и есть.
> пруфы давай, а не своё имхо, заменяющее факты

Школьникам в школу - арихитектуру процов смотри в в техманах. Сам PowerPC уже имеет зачатки VLIW с его логикой условных переходов на уровне компилятора. SPE у CELL изначально было VLIW чистым, но потом переделали под гибрида VLIW/SIMD, тк не справлялись к выходу.    PPE фактически хитрожопый блок конвейера с возможностью распределять команды по блокам (таки извращенный VLIW маршалер выходит).


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено pavlinux , 21-Дек-17 02:34 
> Сам PowerPC уже имеет зачатки VLIW

Початки, йопт. Ты будешь теперь любой проц. не совместимый с x86 подогонять под VLIW?  
Cell обычный SIMD - куча SSE регистров/команд в одной коробке.
Программирование под Cell - есть линейная алгебра.
Чтоб сложить два вектора или вектор с матрицей нужно определить все их элементы.
От этого он не становиться VLIW.  


> SPE у CELL изначально было VLIW чистым.

Хватит уже фантазий, не было ни изначально, ни первоначально.
Был IBM Cell BE, в плейстейшоне и в блейдах. Всё.
Остальное - лабораторные метания, которые никто не видел.    

> условных переходов на уровне компилятора.

Я те открою тайну if (a == 1) { goto label; }... появилось ещё в 40-е годы.
Переход по адресу программили ещё в MSDOS, для драйверов это обычная практика.


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Аноним , 21-Дек-17 15:01 
> Я те открою тайну if (a == 1) { goto label; }... появилось ещё в 40-е годы.

скобок небыло (областей видимости) ;)...


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено letsmac , 22-Дек-17 00:52 
>>Cell обычный SIMD - куча SSE регистров/команд в одной коробке.

Там вообще-то PPE которым таки компилятор мог отправить несколько команд на SPE и он распределял их по блоком. Прямая упаковка команд минуя конвейер. Не было реализовано фактически.

>>Cell обычный SIMD - куча SSE регистров/команд в одной коробке.

Там вообще был общий доступ к памяти всех узлов - полностью когерентный и не потокобезопастный. Это уже не SIMD - он может только когерентный доступ предоставить, а RISC так вообще про оперативную память знать не должен.

>>Я те открою тайну if (a == 1) { goto label; }... появилось ещё в 40-е годы.

ты не путай пусторылый jump с вычислением вероятности перехода. Еще и скажи, что тогда ret выходил сразу на хвост рекурсии и не шаманил стэк.  

Я тебя тайну открою - While и for в компиляторе для Power имели доп признак условного перехода, до того как Intel вылизало свой предсказатель ветвлений на уровне декодера. Фактически каждый вызов содержал две команды для проца.


ЗЫ: Спасибо за разговор, приятно поспорить.  


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Школьник , 20-Дек-17 09:36 
>Mac весь в OpenCL, но по прежнему это не помогает против винды с Direct-ами. Они в разы быстрее.

OpenCL или все-таки OpenGL? Если первое, то Вы не теплое ли с мягким сраниваете? Разве на DirectX можно вычисления делать (без костылей)?


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Аноним , 21-Дек-17 01:51 
> Разве на DirectX можно вычисления делать?

DirectCompute?


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Anonim , 20-Дек-17 20:38 
Расскажите подробнее о спецпроцессорах HP. Или такой же пук в лужу как и с Cell?

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено letsmac , 20-Дек-17 20:51 
HP EPIC таки и прочее. Тот-же Merced разрабатывался с патентами HP. Хочешь поэкспериментировать см HP VEX.  На текущий момент - полутруп.

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Anonim , 20-Дек-17 23:49 
Intel EPIC - общее название для процессоров Merced aka Itanium aka Itanic. Да, HP и Intel какое-то время разрабатывали их вместе, но это всё никак не укладывается в Вашу фразу
> Так умер itanium, так умер Cell, только HP с его спецпроцами и Эльбрус немного дышат

где Вы перечисляете и Itanium, и некие спецпроцессоры HP как равноправные и независимые продукты, один из которых жив, второй - мёртв.


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Аноним , 20-Дек-17 18:36 
>> Мне это тоже не совсем понятно.

ну хотят иметь гетерогенную платформу вычислений с подключаемыми back-end'ами. А фронт типа как один)


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Агроном , 20-Дек-17 01:45 
Это же опесорс. Пишут не то, что нужно остальным, а то что хосется самим.

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено nuzhny , 20-Дек-17 09:31 
К каким бинарным драйверам оно привязано? Делается же в первую очередь для выполнения OpenCL на CPU, используют в конце-концов clang+LLVM.
Плюс в том, что хорошо написанный OpenCL код проще ложится на SIMD. И программист заботится о параллельности, и типы данных соответствуют.

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено ano , 20-Дек-17 10:37 
делается оно в первую очередь для параллельности и желательно на стороне GPU & FPGA.

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Ю.Т. , 20-Дек-17 09:24 
Кто сам работал, это действительно portable? Можно без GPU,  и т.д.? По крайней мере, без морей пота и крови?

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено ano , 20-Дек-17 10:31 
Эх была же BeOS которая умела использовать все вычислительные ресурсы как сопроцессоры, даже DSP из звуковой карты... нет - понавыдумывають всякой фигни и теперь мучаются.

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено letsmac , 20-Дек-17 21:03 
> Эх была же BeOS которая умела использовать все вычислительные ресурсы как сопроцессоры,
> даже DSP из звуковой карты... нет - понавыдумывають всякой фигни и
> теперь мучаются.

До сих пор с теплотой вспоминаю ее интерфейс - ничего не украли, сделали очень красиво и практично. И таки да первая desktop os с полной поддержкой многопроцессорности.

А многочиповость это смотри AMIGA OS.  Там только не было нормального многозадачного режима.  


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Андрей , 20-Дек-17 14:54 
> В бэкенде, использующем CPU, полностью реализована спецификация OpenCL 1.2

Это не правда. В документации чётко написано, что не полностью:
http://portablecl.org/docs/html/features.html

> The known unsupported OpenCL (both 1.x and 2.x) features are listed here as encountered.
> Frontend/Clang
>    OpenCL 1.x
>        OpenGL interoperability extension
>        SPIR extension


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Аноним , 20-Дек-17 18:21 
> Это не правда. В документации чётко написано, что не полностью:

Сам смысл релиза 1.0 был в полной поддержке  OpenCL 1.2.
Может просто документацию ещё не обновили, в анонсе написано, что полностью c отдельными ограничениями:

Full conformance with OpenCL 1.2 standard on CPU backend (with some
   limitations, see the documentation for details).

https://sourceforge.net/p/pocl/mailman/message/36162579/


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Андрей , 20-Дек-17 18:47 
> Full conformance ... with some limitations

Программисты, конечно, не математики, но даже у них такие формулировки не должны быть допустимы: или полная, или неполная.

> Может просто документацию ещё не обновили

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

Сейчас погрепал 'CL.*GL':
lib/CL/pocl_opengl.c:  POCL_ABORT_UNIMPLEMENTED("The entire clCreateFromGLTexture call");
lib/CL/pocl_opengl.c:  POCL_ABORT_UNIMPLEMENTED("The entire clCreateFromGLBuffer call");
lib/CL/pocl_opengl.c:  POCL_ABORT_UNIMPLEMENTED("The entire clCreateFromGLRenderbuffer call");
lib/CL/pocl_opengl.c:  POCL_ABORT_UNIMPLEMENTED("The entire clGetGLObjectInfo call");
lib/CL/pocl_opengl.c:  POCL_ABORT_UNIMPLEMENTED("The entire clGetGLTextureInfo call");
lib/CL/pocl_opengl.c:  POCL_ABORT_UNIMPLEMENTED("The entire clEnqueueAcquireGLObjects call");
lib/CL/pocl_opengl.c:  POCL_ABORT_UNIMPLEMENTED("The entire clEnqueueReleaseGLObjects call");
lib/CL/pocl_opengl.c:  POCL_ABORT_UNIMPLEMENTED("The entire clGetGLContextInfoKHR call");

:(


"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Аноним , 21-Дек-17 02:19 
Лучше бы куду поверх opencl запилили, чтобы владельцы любых видеокарт могли запускать tensorflow.

"Выпуск PoCL 1.0, независимой реализации стандарта OpenCL "
Отправлено Аноним , 21-Дек-17 11:03 
где брать бинарники?