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)

DarkInside 02.11.2016 01:30

Тест OpenCL
 
Разбираюсь в вычислениях на GPU. И как-то всё запутано. Судя по тестам, разные видюхи показывают совершенно разные результаты с OpenCL и CUDA. А для кодирования/декодирования видео вообще говорят Intel с их Quick Sync всех порвет.
Интересует вопрос выбора видеокарты и технологий под:
а) преобладающие int вычисления
б) преобладающие float вычисления
в) преобладающие double вычисления
Как я понял (точнее совсем ничего не понял), для float CUDA быстрее, чем OpenCL, но для double лучше AMD брать (соответственно OpenCL)?
Не могу понять, какие параметры видеокарты на какие виды вычислений влияют?
В архиве тест OpenCL с преобладающими int и float, потестите, кому не лень. https://yadi.sk/d/jMMvIEK4xxEqa
Запускал на двух ноутах:
GT650M - 73 сек
GT840M - 80 сек
i7 3612QM - 92 сек
i5 5200U - 80 сек (тут тоже не понял, почему i5 быстрее 4-ядерного i7)
То есть слабенькие ноутбучные видюхи практически никакого прироста не дают по сравнению с i5/i7. С CUDA что-то изменится?
Пошел запускать на серваке:
Tesla C2075 - 8 сек :4to: в 10 раз прирост (а по гигафлопсам у теслы 1288 против 640 у 650M), хотя Tesla же заточена на double, количество cuda ядер примерно такое-же, как на ноутбучной видюхе, частоты даже ниже, чем на ноуте. Что здесь решает? может ширина шины 384 бит против 128 на ноуте? Как влияют 2 Xeon e5 2620, установленные на серваке, на GPU вычисления? К сожалению, на самих xeon тест не получилось запустить.
В общем, надо мне собрать оптимальное железо цена/скорость для int и float вычислений и определиться, какие технологии использовать и на чем считать (cpu или gpu) - в голове пока каша.

Arton 02.11.2016 02:59

Ответ: Тест OpenCL
 
Запустил по умолчанию, Palit GF GTS 450 1 Гб - ~42 сек.

tirarex 02.11.2016 04:01

Ответ: Тест OpenCL
 
i7 6700hq 22.656
gtx960m 40.125

Могу сделать мини сайт, пусть тулза отправляет данные, а там таблица будет

DarkInside 02.11.2016 05:15

Ответ: Тест OpenCL
 
Мда, похоже выигрыш от GPU-вычислений только на топовых десктопных видюхах можно поиметь. В принципе Тесла С2075 можно найти бу на eBay за 14-17 т.р., поставить 2 в SLI и должно считать за 4 сек. Но вот черт его знает, может за эти деньги проще топовый Xeon (или 2) или i7 поставить и оно считать будет также или даже быстрее. Вот был бы какой-нибудь онлайн-сервис, где можно было выбрать различную конфигурацию оборудования и проверить производительность своей проги...пусть даже платный, думаю, им пользовались бы.

Цитата:

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

ingko 02.11.2016 12:15

Ответ: Тест OpenCL
 
Я вот, тоже не разобрался, как работают CUDA-ядра, и дают ли они вообще какое-нибудь преимущество перед голом рендерингом на CPU. Особой разницы я не заметил. :dontknow:

Mr_F_ 02.11.2016 13:07

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

как работают CUDA-ядра, и дают ли они вообще какое-нибудь преимущество перед голом рендерингом на CPU
их много. пикселей/вертексов/треугольников тоже много. параллельность выигрывает.

Nerd 02.11.2016 13:21

Ответ: Тест OpenCL
 
AMD R9 290 - 8 сек
i7-5820K 3.30GHz - 92 сек
GeForce 940M - 77 сек
i3-505U 2.0GHz - 99 сек

DarkInside 02.11.2016 14:55

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

AMD R9 290 - 8 сек
Это уже интереснее :super: Похоже правда Nvidia ограничивает OpenCL, чтобы юзали CUDA. У AMD, конечно, ALU больше и частота выше, но не может же Nvidia так отставать.

Цитата:

i7-5820K 3.30GHz - 92 сек - 6 ядер
i7 6700hq 22.656 - 4 ядра
i7 3612QM - 92 сек - 4 ядра
i5 5200U - 80 сек - 2 ядра
Вот это мне совсем непонятно. Интересно посмотреть на что-то типа AMD FX 9590 или A10-7870K.

Цитата:

их много. пикселей/вертексов/треугольников тоже много. параллельность выигрывает.
Думаю, это не совсем так, много подводных камней, благодаря которым 4-ядерный i7 уделывает 484-ядерный GTX.

ingko 02.11.2016 16:21

Ответ: Тест OpenCL
 

Mr_F_ 03.11.2016 11:22

Ответ: Тест OpenCL
 
GTX 970 - 16 сек

Цитата:

Думаю, это не совсем так, много подводных камней, благодаря которым 4-ядерный i7 уделывает 484-ядерный GTX.
зависит от задачи. не стоит забывать ещё, что на видюхах по-прежнему хватает fixed function зашитых в железе быстрых вещей, как то фильтрация, антиалясинг, да даже растеризация треугольников.

tirarex 03.11.2016 13:54

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

Сообщение от DarkInside (Сообщение 309657)
Это уже интереснее :super: Похоже правда Nvidia ограничивает OpenCL, чтобы юзали CUDA. У AMD, конечно, ALU больше и частота выше, но не может же Nvidia так отставать.


Вот это мне совсем непонятно. Интересно посмотреть на что-то типа AMD FX 9590 или A10-7870K.


Думаю, это не совсем так, много подводных камней, благодаря которым 4-ядерный i7 уделывает 484-ядерный GTX.


Очень странно,

i7-5820K 3.30GHz - 92 сек - 6 ядер
i7 6700hq 22.656 - 4 ядра

http://cpu.userbenchmark.com/Compare...K/m34954vs2579

RegIon 03.11.2016 14:50

Ответ: Тест OpenCL
 


Как на CPU запустить, а то всегда только на видяхе запускает.

DarkInside 03.11.2016 15:48

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

Как на CPU запустить, а то всегда только на видяхе запускает.
Там в списке должно отображаться всё OpenCL-совместимое оборудование, иногда CPU не подхватывается. Качать драйвера с поддержкой OpenCL отсюда отсюда https://software.intel.com/en-us/art...opencl-drivers

UPD: Чем отличаются вычисления на шейдерах GLSL (WebGL использует)?

DarkInside 04.11.2016 04:07

Ответ: Тест OpenCL
 
Вложений: 1
Intel HD Graphics 4000 - 50 сек

Вспомнил, что у меня еще есть встроенная видюха. Установил Intel SDK for OpenCL отсюда https://software.intel.com/en-us/art...opencl-drivers
Там же есть программа для обновления драйверов Intel (для тех, у кого OpenCL не видит CPU).
После перезагрузки в списке появился еще один i7 (но это с видюхой). Встроенная HD Graphics 4000 уделала дискретную GT 650M. Я теперь не уверен, с какой видюхой запускать тяжелые приложения и вообще нужна ли дискретная видеокарточка на ноутбуке. Пойду теперь качать драйвера и SDK Nvidia.

Возможно i7 6700hq - 22.656 как раз с графическим ядром был запущен (HD Graphics 530), а i7-5820K 3.30GHz - 92 сек - чистый CPU без встроенного видеоядра.

Головоломка разгадана :-)

DarkInside 04.11.2016 05:06

Ответ: Тест OpenCL
 
Вложений: 1
Едрить колотить, обновил драйверы Nvidia - минус 5 сек.

В общем, если писать пользовательское приложение с OpenCL, надо писать еще один менеджер, который будет проводить тест, какое оборудование работает быстрее и на нём запускать, постоянно проверять новые драйверы и если новые драйверы работают медленнее, то откатываться на старые. Вообще непонятно, какой без этого всего толк и почему профессиональный софт от Adobe и Autodesk этого не делает.

А тут еще всплывают всякие альтернативы OpenCL типа DirectCompute и шейдерные GLSL-вычисления и разница производительности при использовании разных технологий на разном железе скачет в 10 раз и вообще не предсказуема, ибо регулируется не характеристиками железа, а маркетинговыми соображениями.

В общем, полный бардак.

RegIon 04.11.2016 06:15

Ответ: Тест OpenCL
 


Поставил OpenCL драйвера.

Видно, что старенький i5 уделал в 2 раза старенький 520m

DarkInside 04.11.2016 07:14

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

Сообщение от RegIon (Сообщение 309712)
Видно, что старенький i5 уделал в 2 раза старенький 520m

Да, только это не i5, а HD Graphics 3000 (511 Mb). Вот я и не понимаю, какой смысл в ноутбуки пихать дискретные видеокарты типа nvidia с индексом 20/30 - и в игры на них не поиграешь и для приложений встроенный HD Graphics оказывается лучше. Чистый маркетинг. Покупатель привык, что видюха должна быть nvidia или amd и обязательно дискретная.

RegIon 04.11.2016 07:41

Ответ: Тест OpenCL
 
Хош прикол:


UPнул частоту видеоядра 520m(на деле 540m) до 550m (820Mhz vs 600), а это около 30%.

UPD: Поднял до 850 и выиграл еще 5 сек. Вот и думай, каким образом обновление дров повлияло.

Дальше гнать опасно. Хотя вроде и не греется.

DarkInside 04.11.2016 07:55

Ответ: Тест OpenCL
 
Это как? Через какую-то утилиту нвидиа? Я бы даже не подумал, что мобильную карту можно гнать :-D Раньше она потребляла 30 Вт впустую, теперь 40 Вт впустую и всё-равно до интела далеко, который в сумме APU потребляет 35 Вт.
Я свою потестирую с CUDA, если нет толка, выпилю при следующей чистке ноута, только батарею зря жрет. В игры не играю.

RegIon 04.11.2016 08:03

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

Сообщение от DarkInside (Сообщение 309716)
Это как? Через стандартную какую-то утилиту нвидиа? Я бы даже не подумал, что мобильную карту можно гнать :-D Раньше она потребляла 30 Вт впустую, теперь 40 Вт впустую и всё-равно до интела далеко, который в сумме APU потребляет 35 Вт.
Я свою потестирую с CUDA, если нет толка, выпилю при следующей чистке ноута, только батарею зря жрет.

Она в Optimus, т.е даже не включена фактически, когда не используется.
И как же ты ее выпилишь? У меня она вообще распаяна на мать.

Да и смысл. Когда я тест на CPU запустил, то у меня враз нагрузка 100% на всех потоках.
А на видяхе когда, то комп и не знает, что его как-то нагрузили, а для Photoshop это как раз критично и без GPU ускорения я его даже боюсь запускать.

Да если уж совсем приспичило, то можно нагрузить все враз. (100 + 150) / 4 = 62.5 для моего случая
Прога:
https://nvworld.ru/utilities/inspector/

Мне ее можно гнать еще огого, только охлаждай, иначе на 70 градусах сбрасывает частоту.

Nex 04.11.2016 13:07

Ответ: Тест OpenCL
 
Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz 511 Mb - 782 ms
GeForce GTX 275 896 Mb - time: 61579 ms

Taugeshtu 04.11.2016 13:45

Ответ: Тест OpenCL
 
AMD R9 nano: 5 922 ms
Intel i5-3570K: 364 547 ms
В обоих случаях система с кучей открытых окон (но вроде тяжёлого процессинга не было). Подозреваю, что что-то не так с конфигурацией софта на моей стороне.

Цитата:

Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz 511 Mb - 782 ms
Эммм... Чёрт подери, Холмс, но как?

DarkInside 04.11.2016 16:27

Ответ: Тест OpenCL
 
Вложений: 1
Цитата:

И как же ты ее выпилишь? У меня она вообще распаяна на мать.
Не, у меня в слоте отдельном

Цитата:

Когда я тест на CPU запустил, то у меня враз нагрузка 100% на всех потоках.
А на видяхе когда, то комп и не знает, что его как-то нагрузили, а для Photoshop это как раз критично и без GPU ускорения я его даже боюсь запускать.
Ну в принципе да, польза только если переложить какую-то задачу, чтобы проц разгрузить. Не заметил, что HD Graphics грузит проц на 100%, думал она как отдельная видюха.

Интересно, а если одновременно запускать код и на intel и на nvidia, есть от этого смысл? У меня процессор грузится на 9-13%, когда работает Nvidia, а остальные 87% пусть грузит HD Graphics.

UPD: Запустил, так и получается 69 сек за выполнение двойного расчета, то есть ~35 сек, никаких конфликтов :-D Не, тогда не буду выпиливать, буду параллельно всё железо грузить.

Цитата:

Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz 511 Mb - 782 ms
Эммм... Чёрт подери, Холмс, но как?
Вроде Core 2 не поддерживается, OpenCL для процессоров intel - это история с i3/i5/i7/Xeon. Когда рулил Core 2, OpenCL еще не было. Ошибка вылетала при закрытии приложения? Ну это недействительно в любом случае, код OpenCL не отработал, только CPU.

И победителем становится AMD R9 nano: 5 922 ms :-D

Цитата:

Intel i5-3570K: 364 547 ms
Драва не OpenCL-совместимые. Там же еще HD Graphics 4000, которая должна выдавать 50 сек.
http://forum.boolean.name/showpost.p...8&postcount=14
.

Taugeshtu 04.11.2016 17:13

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

Сообщение от DarkInside (Сообщение 309726)
И победителем становится AMD R9 nano: 5 922 ms :-D

Fiji знатная числодробилка, да. Более широкая шина памяти также помогает в GPGPU, где компрессия текстур не влияет на эффективную пропусную способность.
Но тут нужно смотреть внимательно на то, что тебе, собственно, нужно. И искать наиболее подходящее под требования по цене, производительности, энергопотреблению и поддержке CUDA, если таковая нужна.
R9 nano даже сейчас не сильно дешёвая карточка; с вычислениями и старая-добрая R9 290 отлично справится, и за ощутимо меньшие деньги.

Цитата:

Сообщение от DarkInside (Сообщение 309657)
Похоже правда Nvidia ограничивает OpenCL, чтобы юзали CUDA. У AMD, конечно, ALU больше и частота выше, но не может же Nvidia так отставать.

Смотрим вики, Tesla C2075:
~1030 GFLOPS SP
~515 GFLOPS DP
R9 290:
~4848 GFLOPS SP
~606 GFLOPS DP

Так что да, ещё как может. По голым флопсам АМД уже много поколений лидирует в картах одного ценового сегмента.

DarkInside 04.11.2016 17:31

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

R9 nano даже сейчас не сильно дешёвая карточка; с вычислениями и старая-добрая R9 290 отлично справится, и за ощутимо меньшие деньги.
Да, вот я и хочу всё взвесить и найти оптимальный вариант. Вот например R9 280 на бу рынке в 2 раза дешевле 290, а по производительности ~3444 GFLOPS SP, то есть всего в 1.5 раза ниже.
А есть монстры типа NVIDIA TITAN X (Pascal), в тестах 12.5 Teraflops, примерно 40к руб за бу.

Nex 04.11.2016 18:15

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

Сообщение от DarkInside (Сообщение 309726)
Вроде Core 2 не поддерживается, OpenCL для процессоров intel - это история с i3/i5/i7/Xeon. Когда рулил Core 2, OpenCL еще не было. Ошибка вылетала при закрытии приложения? Ну это недействительно в любом случае, код OpenCL не отработал, только CPU.

Изначально драйвер OpenCL не стоял и при закрытии проги ошибка была (че то с Mem <> 0 было написано) и после установки драйвера тоже была ошибка. Еще тест работает только один раз. Если запустить повторно тест, то тут же появится сообщение с "test: 0 ms".

Название драйвера, который скачал было: "OpenCL™ Runtime 16.1.1 for Intel® Core™ and Intel® Xeon® Processors for Windows* (64-bit & 32-bit)". Слово Core наверно не просто так там. :dontknow:

DarkInside 04.11.2016 18:38

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

Сообщение от Nex (Сообщение 309736)
Название драйвера, который скачал было: "OpenCL™ Runtime 16.1.1 for Intel® Core™ and Intel® Xeon® Processors for Windows* (64-bit & 32-bit)". Слово Core наверно не просто так там. :dontknow:

А список поддерживаемых процессоров там есть?

Nex 04.11.2016 18:40

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

Сообщение от DarkInside (Сообщение 309740)
А список поддерживаемых процессоров там есть?

В середине страницы говорится про модели, но не совсем понятно в общем это или только для какой то версии.
Вот страницы с которой качал - https://software.intel.com/en-us/art...opencl-drivers

DarkInside 04.11.2016 18:49

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

The OpenCL Runtime provides OpenCL CPU device support on the following processors:
 Intel® Core™ Processors with Intel Streaming SIMD Extensions 4.2 (Intel SSE4.2) support or higher
А Q9400 только SSE4.1

ingko 04.11.2016 19:35

Ответ: Тест OpenCL
 
Господи, поставил дрова и получил абсолютный рекорд по температуре проца!
--

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

DarkInside 09.11.2016 22:11

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

float2, 3,4 - вектора (структуры на 2,3,4 флоата)
Вектор в смысле матрица-вектор из одной строки (типа массивы из float/double)? Как их использовать?

Что вот это, например, значит:
Цитата:

double2 coord;
coord = (double2)( station.x + degrees(dd), 90.0 - ss )
Типа у нас массив coord из 2-х значений, первое значение = station.x + degrees(dd), второе значение = 90.0 - ss. Так?

RegIon 10.11.2016 07:27

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

Сообщение от DarkInside (Сообщение 309907)
Вектор в смысле матрица-вектор из одной строки (типа массивы из float/double)? Как их использовать?

Что вот это, например, значит:


Типа у нас массив coord из 2-х значений, первое значение = station.x + degrees(dd), второе значение = 90.0 - ss. Так?

Ну да.
это просто структуры типа
double2 {
double x;
doubole y;
}

с перегруженными операторами =, () и т.д

https://www.khronos.org/registry/cl/...DataTypes.html

в доках написано, что double16 - 16 компонентный вектор.

Все из-за того, что операции над ними одношаговые. Т.е простое сложение 16ти double происходить так же как и 1го.
http://www.informit.com/articles/art...32873&seqNum=3

На, почитай про них:
http://www.informit.com/articles/art...32873&seqNum=3
Это такой Matlab, только OpenCL.

DarkInside 10.11.2016 18:16

Ответ: Тест OpenCL
 
Вложений: 1
Кстати, если кому интересно, набросал для себя такую табличку для выбора видеокарты под GPU-вычисления.

1. Данные о производительности с двойной точностью сложно найти в описаниях многих видеокарт, а если они и есть, то они теоретические. Поэтому для двойной производительности брал результаты бенчмарка Binomial Option Pricing - FP64 - SiSoft Sandra.

2. Предполагается, что у нас смешанные вычисления: половина float, половина double. Поэтому я взял 50 на 50, можете брать свои пропорции.

3. Цены брал на бу самые низкие avito/aliexpress/eBay (+ доставка), поэтому иногда может быть не логично, что видеокарты более высокого класса стоят дешевле.

4. Некоторые видюхи считал в SLI/CrossFire, чтобы хоть как-то уравнять цены или производительность. По 2 штуки, т.к. многие видеокарты двухслотовые, 3-4 просто не влезут. Нашел экспериментальные данные, что в OpenCL с двумя видюхами теряется примерно 15%, поэтому домножал на коэффициент 0,85 при 2 шт. 3 шт ~0,8; 4 шт ~0,75. Кроме Tesla M2090 - т.к. это по сути плата расширения, а не видеокарта, они работают по отдельности, а не в общем массиве SLI/CrossFire.

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

6. В итоге оценивал по стоимости за 1 ТФл. С коэффициентом амортизации 1/3 (допустим видюхи будут актуальны 3 года). Учитывая, что через 3 года мы сможем их продать, допустим за 0,5 цены.
(0,5 * Стоимость видюхи / (3 года * 31536000 сек в году) + TDP*10^(-3) * Среднюю цену за 1 кВт*ч / 3600 сек) / Производительность в ТФлопсах.

7. Предполагается, что сервак работает 24 часа в сутки. Средняя цена за 1 кВт*ч = ((Дневной тариф (у нас сейчас 3,92) * 16 часов + ночной тариф (2,26) * 8 часов) / 24 часа) * 1,07 (для 3х лет эксплуатации , тк на 7% в год по статистике растут тарифы).

8. Оптимальным вариантом оказалась R9 nano в основном благодаря низкому TDP. А HD 7990 выдает бешеные результаты в вычислениях с двойной точностью. А если хочется CUDA, то из недорогих можно выбрать GTX 780Ti. Ну и можно выбирать по табличке исходя из нужной производительности, цены, которую вы готовы потратить, версии OpenCL/CUDA и т.д.

9. Ну и не забываем, что всё может измениться при изменении цен, если вы найдете дешевле.


DarkInside 11.11.2016 18:41

Ответ: Тест OpenCL
 
Нашел CPU i7-6700 (инженерный). Продавец прогнал тест, заснял видео - 19 сек. Все 8 потоков загружены на 100%. Температура 83 градуса. Частота 3.9. Проц определяется как i7-0000. Посоветуйте, стоит ли брать инженерный?

Arton 11.11.2016 19:38

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

Сообщение от DarkInside (Сообщение 309987)
Нашел CPU i7-6700 (инженерный). Продавец прогнал тест, заснял видео - 19 сек. Все 8 потоков загружены на 100%. Температура 83 градуса. Частота 3.9. Проц определяется как i7-0000. Посоветуйте, стоит ли брать инженерный?

Что такое «инженерный» ЦП?

DarkInside 11.11.2016 19:52

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

Что такое «инженерный» ЦП?
Образец, который интел бесплатно рассылает производителям матплат до начала продаж. Может быть ничем не хуже серийного, но в 2 раза дешевле, а может быть с критическими багами. Такой ЦП не предназначен для продажи, не имеет серийного номера и гравировки на крышке, но для китайцев это не проблема, поэтому на алиэкспресс часто можно нарваться на такой.

ingko 15.11.2016 17:06

Ответ: Тест OpenCL
 
Победил я CUDA! :) Просто в настройках драйверов надо принудительно указать, что надо использовать CUDA-ядра в Вегасе. :cool:
--

DarkInside 15.11.2016 17:20

Ответ: Тест OpenCL
 
Распиши, где, как указывать

ingko 15.11.2016 18:53

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

Сообщение от DarkInside (Сообщение 310130)
Распиши, где, как указывать

Собственно вот: добавляешь Ехешник и ставишь галку, усё! :crazy:
--

tirarex 17.11.2016 21:17

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

Сообщение от DarkInside (Сообщение 309987)
Нашел CPU i7-6700 (инженерный). Продавец прогнал тест, заснял видео - 19 сек. Все 8 потоков загружены на 100%. Температура 83 градуса. Частота 3.9. Проц определяется как i7-0000. Посоветуйте, стоит ли брать инженерный?

С учетом того что мобильный i7 6700hq на 3,3ггц выдал всего на 3 секунды больше результат, результат странный.


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

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