forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Болтовня (http://forum.boolean.name/forumdisplay.php?f=25)
-   -   Тест OpenCL (http://forum.boolean.name/showthread.php?t=20464)

ingko 04.11.2016 20:40

Ответ: Тест OpenCL
 
Провёл еще экспресс-тест в Vegas Pro 12/ FullHD-ролик на 3 минуты 50 секунд, 24 кадра в секунду.
--
Рендеринг только на CPU
--

--
Рендеринг с OpenCL
--

--
Рендеринг с CUDA
--

--

Выводы делайте сами.

DarkInside 04.11.2016 20:53

Ответ: Тест OpenCL
 
Цитата:

Выводы делайте сами.
Эмм...переключатель CPU/OpenCL/CUDA сломался?

ingko 04.11.2016 20:55

Ответ: Тест OpenCL
 
Цитата:

Сообщение от DarkInside (Сообщение 309752)
Эмм...переключатель CPU/OpenCL/CUDA сломался?

Да нет... Вот, так у меня реально работают CUDA и OpenCL :dontknow:

RegIon 05.11.2016 06:13

Ответ: Тест OpenCL
 
CUDA не на много быстрее OpenCL.
Обычно выйгрыш не более 13%.
https://habrahabr.ru/post/96122/

DarkInside 05.11.2016 06:33

Ответ: Тест OpenCL
 
Цитата:

Сообщение от RegIon (Сообщение 309764)
CUDA не на много быстрее OpenCL.
Обычно выйгрыш не более 13%.
https://habrahabr.ru/post/96122/

Да, эту статью видел, но это только одна статья и для одной видюхи. Много статей пересмотрел, где-то прирост почти в 2 раза.
В этой же статье пишут:
Цитата:

В работе A Performance Comparison of CUDA and OpenCL говорится о том, что производительность ядра OpenCL проигрывает CUDA от 13% до 63%

ingko 05.11.2016 12:10

Ответ: Тест OpenCL
 
Ребят, а мне что делать??? Это что-то с дровами или с кодеками?

Randomize 05.11.2016 16:11

Ответ: Тест OpenCL
 
Цитата:

Сообщение от ingko (Сообщение 309769)
Ребят, а мне что делать??? Это что-то с дровами или с кодеками?

Ты ведь выбирая Cuda/OpenCL ещё видяху перетыкал, да?
У меня, например, вегас не даёт запустить рендер при выборе OpenCL - нужна атишка.

DarkInside 05.11.2016 19:31

Ответ: Тест OpenCL
 
Вспомнил, почему я на Intel + Nvidia перешел... 3 часа безуспешных свистоплясок с драйверами AMD. Цель была посмотреть прирост c DualGraphics и без него.
Млять, я одного не понимаю, как люди могут эффективную работу ядер реализовать, если не могут нормальный инсталлятор для драйверов собрать.
Инсталлятор ставит драва от другой видюхи, после ребута лезут ошибки, а откатить нормально их не получается, только если вручную ковыряться.
В итоге получилось запустить только на DualGraphics HD7640G + HD8570M и отдельно на процессоре. Отдельно на HD8570M и отдельно на встроенном графическом ядре ну никак не запустить. Отключаешь DualGraphics - винда просит драйвера на HD8570M, начинаешь устанавливать - инсталлятор обратно включает DualGraphics и говорит, что драйвера не подходят.
В общем, AMD A-серия полный шлак для вычислений.
A8-4500U - ждал 7 минут, он что-то там считал, не зависал, но так и не дождался.
DualGraphics HD7640G + HD8570M - 86 сек.

ingko 05.11.2016 19:57

Ответ: Тест OpenCL
 
Цитата:

Сообщение от Randomize (Сообщение 309776)
Ты ведь выбирая Cuda/OpenCL ещё видяху перетыкал, да?
У меня, например, вегас не даёт запустить рендер при выборе OpenCL - нужна атишка.

А зачем видяшку перетыкать? :4to: У меня Nvidia как стояла, как и стоит. А OpenCL, я так понял, обрабатывал проц, вместе со встроенным видео-ядром.

Мне просто не ясно, почему у меня CUDA так слабо работает. Карточка, в лучшем случае, нагружается на 20 %... Почему так?

DarkInside 08.11.2016 11:37

Ответ: Тест OpenCL
 
AMD FX-4100 Quad Core - 14 минут.

ingko 09.11.2016 11:56

Ответ: Тест OpenCL
 
Цитата:

Сообщение от DarkInside (Сообщение 309842)
AMD FX-4100 Quad Core - 14 минут.

Минут??? :4to: Му-ха-ха!!! :-D

DarkInside 09.11.2016 20:19

Ответ: Тест OpenCL
 
Чёт я запутался в типах (точнее в их названиях в разных языках):
float = float32 - с этим понятно
float64 = double - с этим тоже
float96, float128, float2, double2 - шо такое? особенно интересно про последние 2.
char, uchar - целые, но чем они от int отличаются? для длинных int eсть же long

impersonalis 09.11.2016 20:29

Ответ: Тест OpenCL
 
Цитата:

Сообщение от DarkInside (Сообщение 309900)
char, uchar - целые, но чем они от int отличаются? для длинных int eсть же long

1 байт
wchar - 2 байта
int - 4

DarkInside 09.11.2016 20:36

Ответ: Тест OpenCL
 
Понял. А floatN, doubleN (float2, double2) - шо такое?

Цитата:

float2 представляет короткий вектор 2 чисел с плавающей точкой.
Чет не пойму. Для чего они применяются? В Си их вроде нет, они в OpenCL исходниках встречаются.

Еще какой-то atomic...

UPD: про атомик вроде понял. floatN, doubleN - это из той же серии? Просто гуглеж привел на atomic, но я пока не понял, это связанные вещи или не совсем.
Цитата:

Доольно простой пример, где нужен атомик над float — построение гистограммы для любых float значений. Скажем, имея большое количество записей о спортсменах, вы хотите найти средний вес в зависимости от роста — тогда вам сначала нужно построить гистограмму 'рост'->'суммарный вес всех спортсменов с таким ростом', и тут уже без атомик не обойтись, а вес вполне может быть float.

да, в большинстве случаев это — построение гистограмм. могу привести пару примеров из своих симуляций:

1. есть множество силовых точек, связанных «резинками» (например, как в таких задачах en.wikipedia.org/wiki/Force-directed_graph_drawing или в задачах на симуляцию физики мягкого тела (мой случай))

при условии, что количество резинок, связанных с одной силовой точкой, может быть произвольным, и на каждом шаге симуляции нужно «повлиять» на каждую силовую точку вектором силы каждой растянутой «резинки», связанной с силовой точкой — стандартный способ избежать atomic float'ов, когда kernel совершает проход по множеству точек, и каждая точка неконкурентно аккумулирует вектора сил всех связанных с ней резинок — не подходит (количество резинок у каждой силовой точки значительно отличается, что будет запирать синхронные WARPы. к тому же, необходимо будет использовать динамические списки резинок — т.е. гораздо более сложный код менеджмента модели).

при наличии atomic float'ов — мы просто совершаем пробег по множеству резинок, каждая из которых добавляет свой вектор силы к обоем силовым точкам, к которым привязана (через atomicAdd float). т.к. две резинки могут одновременно попытаться добавить свой вектор силы к одной и той же силовой точке, без atomic float'ов такой подход не работает.

приятно то, что atomic float'ы в современных nvidia картах настолько производительно реализованы, что в большинстве случаев попытки обойти их использование более хитрым и производительным алгоритмом приведут к уменьшению производительности.

т.е. при желании решать реальные задачи, а не фигурно извращаться с архитектурой GPGPU — atomic float'ы + CUDA + современные nvidia GPU (и чем дальше, тем лучше с этим) позволяют просто писать SIMD код в лоб, при этом имея производительность на грани теоретического максимума.

— это наиболее простой и понятный пример применения atomic float'ов.

RegIon 09.11.2016 21:30

Ответ: Тест OpenCL
 
В OpenCL(CUDA) наверно что-то типа GLSL все же.
float2, 3,4 - вектора (структуры на 2,3,4 флоата)
float 96,128 - битность.
atomic - потокозащищенные типы (что бы не трахаться с синхронизацией), так как OpenCL или CUDA - многопоточны. На то у куда и до 19к ядер.
http://ru.cppreference.com/w/cpp/atomic/atomic


Часовой пояс GMT +4, время: 16:37.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot