Блог им. AndreiSk

Расчет на видеокарте, помогите с картой

Ситуация такая: скучно мне стало трейдингом заниматься,
новых идей пока не приходит в голову,
да и слегка бессмысленное это времяпрепровождение.
Решил тряхнуть стариной и поудовлетворять свое любопытство
(за свой счет) в области которой когда-то занимался,
а именно сворачивание белков (мол. биология).
Ученый из меня не вышел, а любопытство осталось,
да и задача считается до сих пор нерешенной.
Вот ученые они удовлетворяют свое любознательность либо за счет бюджета,
либо за счет грантодателей. А я вот за счет рынка, хехе.

Короче, решил переписать часть алгоритмов на CUDA,
чтобы считать на видеокарте некоторые места быстрее.
И выходит у меня, что на видеокарте ускорение примерно в 100 раз (т.е. два порядка)
по сравнению с обычным 4.0 ГГц Core i7-4790K (8 ядер).
На двухпроцессорной станции с зионам ситуация не лучше, видеокарта рвет даже зионы.
В алгоритме много матричных операций, что очень удобно для видеокарт и не очень для
универсальных процессоров.
Причем видеокарта у меня старовата уже, GTX 580.
Хочется купить GTX 1080, но оно от 40 до 60тр нынче.
А теслу за 350тр я как то пока еще не готов покупать.
Вот я в сомнениях, так уж ли много я получу от апгрейда?
Если скажем, там прирост еще в два-три раза, то я, понятное дело, понесусь в магазин.
А если 10-15% прирост — то не особо и нужно. Правильно?

Есть ли на смартлабе камрады, которые готовы запустить мою тестовую программу,
которая поработает 2 секунды и скажет сколько времени занял расчет.
  • Ключевые слова:
  • CUDA
★8
68 комментариев
Эм, расчет займет две секунды :)
avatar
bstone, мне нужны твердые гарантии, пощупать хочу.
Счастливый Конец, это твердая гарантия, т.к. программа «поработает 2 секунды». Ну а если шутки в сторону, то могу запустить на gtx 1060. Это близко к 1080, ядер чуть меньше и шина урезана, но для вычислительных задач она где-то на 15% отстает от 1080 всего. Относительно gtx 580 прирост в 2-3 раза возможен легко.
avatar
bstone, gtx 1060. Это близко к 1080,

раза в 4 медленней )
avatar
Scanz, я не зря сказал «для вычислительных задач».
avatar
Счастливый Конец, 1080  в нейросетках  в разы рвет все  остальные  карты. Надо брать, чего тут думать. Ценник 45 тыр.
market.yandex.ru/catalog/55314/list?srnum=15128&hid=91031&text=geforce%20gtx%201080&glfilter=2142604855%3A1834797964&deliveryincluded=0&onstock=0&how=aprice



Если нужно считать именно даблы то лучше будет  титан  без  х. 
В вики все расписано 
en.wikipedia.org/wiki/GeForce_10_series

Счастливый Конец, " ученый из меня не вышел "
попробуй в администрацию президента пойти… там как раз наоборот люди в " ученые " ушли… )))
avatar
Скажем, зионы это обычные процы, дополненные набором серверных инструкций и опциями энергопотребления. На домашнем у меня стоит зион на обычной матери.

В зависимости от задачи еще надо выбирать между AMD и Nvidia. Например, биткоины майнили только на АМД, поскольку они намного быстрее выполняли расчет хешей.

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

Погоняйте бесплатно https://aws.amazon.com/ru/free/?sc_ichannel=ha&sc_icampaign=free-tier&sc_icontent=2234
avatar
Гденьги ☭, я уже определился с железом, т.к. пишу сам на CUDA. А CUDA это NVIDIA, вопрос только в том, будет ли GTX 1080 сильно быстрее или прирост несущественный. Т.к. частоты GTX580 и GTX 1080 примерно одинаковы, но в GTX 1080 память быстрее по частоте, хотя шина всего 256-бит (у GTX 580 она 384-бит). Мне нужно сравнение. Облако не хочу.
Счастливый Конец, так шина вам может вовсе не понадобиться. По-крайней мере, при майнинге шина была полностью не востребована, вам же не текстуры гонять.

Тупо сравнивая, прирост в 4 раза
gpu.userbenchmark.com/Compare/Nvidia-GTX-1080-vs-Nvidia-GTX-580/3603vs3150
avatar
Гденьги ☭, у меня не майнинг. Там может данных с гулькин нос, и они все уложатся в shared memory, а у меня обмен с памятью идет и чем он лучше, тем быстрее.
avatar
Scorpio, мне по любому пощупать надо. У меня double вычисления, а видеокарты обычно с float работают, а тех ядер что с double, их меньше. У меня на float ошибка накапливается, отказался.
Давайте запущу на своей GTX780.
Раньше тоже баловался распараллеливанием оптимизации на Матлабе — действительно работает, но грааль так и не откопал)
Андрей Осипов, так 780 не интересует… у меня еще вторая есть, GT 730, результат хуже чем у GTX 580, но это и понятно, там и частота хуже и память. Конечно 780 порвет 580, но мне 1080 хочется.
Счастливый Конец, 
но мне 1080 хочется.

Вот с этого и надо было начинать :) Желания нужно удовлетворять.
avatar
TT, да я бы удовлетворил, если бы оно того стоило. А так я в игры не играю, и если 1080 будет не сильно лучше — то считай, деньги впустую ушли.Вообще в игры не играю (проблемы со зрением).
Счастливый Конец,
Вообще в игры не играю (проблемы со зрением)

Прошу прощения.
avatar
Ну если банально по ядрам сравнивать, то 2560 ядер CUDA в 1080 GTX против 512 в 580ой. Плюс обновлённая архитектура, CUDA 8.0 и прочие ништяки архитектуры, повышающие скорость в расчёте на ядро и уменьшающие время простоя. Так что эффект будет. И будет, имхо, в разы, т.к. матричные вычисления на CUDA архитектуру отлично ложатся.
Брутфорс грааля…
avatar
TT, его сатоши до нас сбрутфорсил уже.
avatar
Могу проверить на 1080.
avatar
тут вопрос не в видеокартах, а прежде всего в алгоритмах. у вас есть алгоритмы, которые бы 1) давали реально хорошие результаты, причем на будущем, а не на прошлом 2) жутко тормозили 3) допускали бы эффективное переписывание на GPGPU.

если да (честно да) на все три вопроса — то GTX 1080 стоит копейки по сравнению с тем, что дает первый пункт ;)

у меня только одна тема ушла на GPGPU, основная масса всего крутится на обычном кластере.
avatar
прога на винде? у меня есть квадры K5000, но только на маке
avatar
Yaroslav, да, windows, еще и GUI на .Net
Счастливый Конец, кстати, какой враппер .NET для CUDA юзаешь?
Пользуясь случаем — продам 2 HD7990 на воде =) 
avatar
FrBr, почем? ;)
avatar
Vitty, 45 за комплект 
avatar
Кстати, если много матричных операций, SVD, Холецкого, калмановская фильтрация и т.п., то возникает вопрос в том, что лучше использовать OpenCL + Radeon для двойной точности, чем 1080 и одинарку.
Оракул, потому что внимательно читали, что написал ТС в отличие от…
avatar
Хм. Неужели алготрейдеры уже конкурируют на скорости вычисления матриц??
avatar
ivanovr, получается да =)) или решили «повыпендриваться» друг перед другом =)) программисты любят это дело
avatar

В данной работе рассмотрена аппаратная реализация расчета деполимеризации белковой микротрубочки методом броуновской динамики на кристалле программируемой логической интегральной схемы (FPGA) Xilinx Virtex-7 с использованием высокоуровневого транслятора с языка Си Vivado HLS.

habrahabr.ru/post/314296/

avatar
Aleksey Smirnoff, ух шайтан, как круто.

Полистал статью, понял, что для меня это уже магия, а не наука.
avatar
Ребята, в очередной раз убеждаюсь, что самые продвинутые люди во всех отношениях — среди трейдеров.
Впервые нарвался на пост, где некомпетентен во всем, хотя обладаю нехилым кругозором и навыками)))

Деполимеризация белковых микротрубок… мда
Да еще так хитро, через ресурсы видео-карты на CUDA.

А любой виндовский процесс можно распоточить и послать в видюху на обсчет?
Это сложно?
avatar
Йоганн, нет конечно. и да, это сложно. некоторые алгоритмы вообще никак, некоторые с большими трудностями, некоторые легко. ну нейронные сетки например хорошо ложатся.
avatar
Йоганн, в статье трубки не на CUDA предлагают считать, а на программируемой логике. 

Как я понял, железо адаптируется под нужды, а не наоборот.
Естественно, от этого выигрыш в эффективности.

И комментарии там весьма позновательны.
То есть производительность одной GTX 1080 примерно равна производительности одной FPGA. Кластер 512 ASICов производительней на 3 порядка. То есть один ASIC примерно равен по производительности одному GPU, но ASIC масштабируются «в лоб» намного лучше чем GPU. То есть можно взять 512 ASIC и получить производительность в 512 раз выше (в рамках одной симуляции), больше 512, вроде не получится уже. Производительность GPU масштабируется «в лоб» максимум раза в 2-4 ещё на данный момент
avatar
а матричные операции на CPU своей программой исполняли?
или брали что-то по-настоящему быстрое типа BLAS?
я в своё время BLAS приспособил для обсчёта нейросетей и успокоился, мне хватило. правда потом я и нейросети практически забросил. тем более что они у меня были простенькие уж слишком.

нагуглил вот чувачок сравнивает перемножение матриц (dgemm)
devtalk.nvidia.com/default/topic/484564/cpu-gpu-dgemm/
CPU vs CPU + GPU 
прирост получается в два раза. я бы сказал всего в два. т.е. не прям чтобы ах для пакетных операций, хотя для онлайна существенно.
я просто свой сервер за 30 тыс ₽ в 14 году собрал i7-4770K, без видеокарты. а тут предлагают за 45 видеокарту купить, интересно для каких случаев оно того стоит.
avatar
ПBМ, ну, сравнение на 460 с 336 ядрами, бородатом SDK и медленной видеопамяти. Плюс надо заметить, что GeForce ну не очень заточена на двойную точность в CUDA. Фигли, они за это на Тесле капустку рубят. Так что корректно было бы сравнить, н-р, какой-нибудь самый шустрый из Intel'ов (н-р, какой-нибудь 10-тиядерный десктопный broadwell) и 1080 GTX. Использовать, соответственно, заточенные под Intel'овскую архитектуру и nVidia архитектуру BLAS'ы,  благо, такие есть. Думаю, даже с учётом SSEx и прочих векторных плюшек на Интеллах сравнение будет разниться в десятки раз (для одинарной точности). А на теслах — так и для двойной.
А хотите за адекватные деньги быстрый GPGPU с двойной точностью — велкам в мир радеонов, как говорится, и OpenCL.

ПBМ, да, своей программой считал. Хотел проверить насколько это выгоднее, считать на GPU. Оказалось в 50-100 раз быстрее, не везде конечно. Но все равно впечатляет.
Счастливый Конец, ну 100 раз это конечно круто.
а попробуйте ради интереса через ATLAS матрицы погонять, сколько будет?
тут вот http://mikiobraun.github.io/jblas/ товарищ показывает разницу в 10-15 раз с обычной программой. это конечно не 100..:(

avatar
попробуйте в облаке, в азуре (правда там Теслы) сначала и ту и другую карту, увидите динамику, экстраполируете, и прикинете что и как.
avatar
AlexeyT, да у меня не такие мощные запросы :) мне хватит и одной железки в комп, к тому же она не так уж и дорогая. Присмотрел https://market.yandex.ru/product/13932333/offers?hid=91031&track=tabs&how=aprice
всего 48тр где то (±)
Счастливый Конец, ну не знаю,
перед тратой денег, лучше вообще понимать, есть ли выгода
avatar
Счастливый Конец, на киберпонедельник (вторник) можно поискать на амазоне за копейки.

slickdeals.net/forums/forumdisplay.php?f=9
avatar
CUDA не поддерживает параллельные расчёты, поэтому видеокарты профи не используют. 
Не парьтесь зря потратите время.
avatar
OilтрейдиOil, интересно стало. А зачет тогда столько ядер туда придумали?
avatar
OilтрейдиOil, странно, а NVIDIA говорит что CUDA - это архитектура параллельных вычислений от NVIDIA. кому из вас верить?
avatar
ПBМ, в интернете у одной из академий есть семинар одного известного кванта года так 2012 — 2013. Он там рассказывает про параллельные вычисления. Из плюсов — ядер много, из минусов — частота по сравнению с cpu никакая.
avatar
Андрей К, я подробно не лазал, но наверняка и кэш у проца побольше. 
но всё-таки увеличение скорости в два раза при использовании GPU это круто. я просто хотел показать, что даже на CPU если взять хорошую матричную библиотеку, желательно оптимизированную под именно этот CPU (а у меня даже не было такой) — то будет уже очень круто. 
avatar
ПBМ, https://software.intel.com/en-us/intel-mkl  не подходит? Да, если задача связана с перемножением матриц малых размерностей, то тут CUDA — выстрел по воробьям из пушки. Крайне неэффективно будет, чем, например, расчёт на том же Intel'е с использованием всех его особенностей. 
Да, там интел свою многоядерную плюшку запустил подобного толка. Интересно, кто-нибудь сравнивал производительность их решений с nVidia и Ati в отношении больших, средних и малых матриц, например?
Бобровский Дмитрий, у меня интел что-то не пошел. т.е. вообще не почуствовал от него никакого профита.
я пользовался atlas/lapack через обёртку для java http://mikiobraun.github.io/jblas/
получилось очень быстро. притом что там оптимизация только для 32bit по-моему. если собрать нормально ATLAS для i7 то наверное летать будет ещё быстрее.

кстати на новом уровне знаний, я теперь думаю что можно попробовать это сделать, довольно быстро с помощью docker&windows. а то возиться раньше было не охота.
avatar
ПBМ, https://software.intel.com/en-us/intel-mkl/details  Ну, тут показано преимущество оптимизированной под архитектуру библиотеки. Там порядки расхождения поражают, если честно. 
Бобровский Дмитрий, мб я с потоками что-то не подшаманил. делал на mkl прмерчик и мне не понравилось просто, бросил
gcdart.blogspot.ru/2013/06/fast-matrix-multiply-and-ml.html
разница вроде не драматичная как интел показывает (тесты старые, не важно)
avatar

Андрей К, так CUDA под другое заточено. Основная идея в SIMD. И в куче мух, которые запинывают слона.  

Андрей К, универсальный проц и специализированный шейдер — их некорректно сравнивать.
avatar
OilтрейдиOil, блин… чтоже делать то? я уже написал программу считающую паралельно на видеокарте… а оказывается так нельзя :(
Счастливый Конец, слух, а на чём писал конкретно, если не секрет? У меня просто вариант R+CUDA напрямую враппить, но хз что по скорости, второй вариант — RCpp+dll'ка толковая под GPGPU.
Бобровский Дмитрий, все в VS2015, Cuda 8.0 (SDK). GUI на C#, который дергает мою VC DLL через
[DllImport(«mycuda64.dll»)]
publicstaticexternint GetDeviceCount();

в DLL передаются массивы, которые обсчитываются на CUDA и обратно. Можно и через Managed Cuda сделать взаимодействие с ядром CUDA.
Счастливый Конец, неплохо так. Я, правда, всё больше и больше смотрю в сторону OpenCL, но видимо пока что части своего кода начну переносить на CUDA. Кстати, есть на примете хорошая GPGPU библиотека для MLE? Ну, или где толковая реализация расписана оных под GPGPU?
Бобровский Дмитрий, нет, специально не искал
Знакомый майнер: «Пусть покупает 1070 и херней не страдает»
avatar
Григорий, 1070 не очень хочется, а разница в цене не так уж велика.
пока склоняюсь к вот такой карте https://market.yandex.ru/product/13932333/offers?hid=91031&track=tabs&how=aprice

и частота ядра прилична 1750, и памяти 10500 по сравнению с другими 1080
Счастливый Конец, из дворца сообщают:

1070 в 1,5 дешевле 1080 и примерно на 1/8 слабее. А кое в чем сильнее в разы


Палит воняет и горит )))

Брать гигу, Асус, Мси.

Если для него 30 и 50 тысяч — одно и то же, пусть берет 1080.

avatar
Григорий, а что за дворец? спорта? культуры? или сервис-центра? Так все новое воняет пластиком.
Как вариант рассматриваю также вот этот гигабайт https://market.yandex.ru/product/14115896/offers?hid=91031&track=tabs&deliveryincluded=1&cpa=real&how=aprice

и частота памяти (10400) и ядра (1780) отличные. Цена только не очень… 54тр.
Мы тут уже проверили GTX 1060, по факту оказалось медленнее чем старенькая GTX 580.
Медленнее конкретно в моем случае, а он и есть критерий.
Счастливый Конец, «из дворца  сообщают» -это фраза из армянского мультфильма про рассказ небылиц ))) Знакомый -майнер и у него карты работают на сверхрежимах, воняет из-за повышенных нагрузок, горят тоже из-за этого.
avatar

теги блога Счастливый Конец

....все тэги



UPDONW
Новый дизайн