GPGPU

Sale: видеокарты для вычислений (но годятся и для игр)

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

NVidia Geforce Titan: продано

AMD Radeon 7970HD (3GB, Tahiti XT)

А это - предыдущая моя прелесть, которая 2 года у меня работала до Титана и после тоже доставалась, когда надо было на AMD подевелопить-побенчмаркать.

С точки зрения терафлопсов, их там чуть меньше одного (947 гигафлопс FP64 по формальным спекам). С точки зрения игр - я не знаю с...

Про AMD FirePro W9100

Вот между прочим, AMD выступила очень достойно с FirePro W9100: они сделали чип у которого отношение производительности Single Precision : Double Precision 1:2, вместо обычных для AMD 1:4 (а на HD5xxx было 1:5)

В результате у них 2.6TFlops DP (теоретической), что в 1.85 раза больше, чем у (самой толстой на сегодня) NVidia Tesla K40 (1.4Tflops теоретических).

Да, у AMD не все здорово с софтовой частью: все кто вычислял вычисления уже привыкли к CUDA, перенос кода на OpenCL и оптимизация для AMD займут время, но почти двукратный выигрыш по перформансу (и еще больше, по прайс-перформансу, если сравнивать с Теслой) - взбодрит разработчиков.

Я ожидаю, в первую очередь, взбодрения всяких CAD-ов. Это FirePro не выглядит картой для вычислительных кластеров (коим 6 видео-выходов без нужды), а вот на рабочих станциях, и 3D-графика и ее обсчет на одной карте - очень к месту ж.

Ждем, естественно, ответа NVidia. Так, по идее, Maxwell - хороший, 750Ti обгоняет 650Ti на вычислениях прилично так (при меньшем количестве cores и достаточно близких частотах).

P.S. Конечно, лидером по price/perf (DP) остается NVidia Титан, но это другая история (на Титан, в числе прочего, драйвера от Квадры не натянуть, т.е. всякие CAD-ы пролетают).

Q: про PCIe свитчи

В свете выхода Haswell, встал (пока теоретический) вопрос о тотальном апгрейде всего.

У меня оно усугубляется тем, что

  • У процессора - 16 PCIe3 lanes
  • А мне их нужно, как минимум, вдвое больше (16 на видеокарту, если одну ставить, плюс два широких слота для 10Gbit адаптеров)
Соответственно, нужна материнская плата с PCIe-свитчом, который из 16 lanes делает 32. Таких материнок есть в количестве.

Но выбирая между ними, я увидел что есть два варианта:

  • 4 слота PCIe3 x16 (все слоты через свитч).
  • 5 слотов: или один слот мимо свитча, или более одного слота, но уже через свитч
И клянутся, что 1-слотовый случай дает меньшие задержки и все такое прочее.

Собственно, вопрос: а кто эти задержки мерял? Ну вот могу себе представить, что я захочу что-то побенчмаркать, выну сетевые карты, воткну видеокарту в помянутый быстрый слот (и делать это буду аж два раза за три года).

Но увижу ли я хоть какую-то разницу "со свитчом" и "мимо свитча"?

Update: для материнок на Z77 с свитчом/без свитча, судя по тестам, значимой разницы нет.

О журналистике? Об ошибках на сайтах вендоров?

В IXBT-шном обзоре GTX770 пишут:

Берется чип GTX 680 Перемычки, отвечающие за Device ID, ставятся иначе, и, оба-на получается GTX 770. Однако чтобы хоть как-то улучшить производительность в высоких разрешениях, а также в целом внести какое-нибудь отличие от вышеупомянутого GTX 680

С другой стороны, открываем список NVidia GPU по Compute Capability и читаем:

  • GeForce GTX 680 3.0
  • GeForce GTX 770 3.5
А 3.5, заметим, это Dynamic Parallelism, и прочие плюшки, связанные именно с одновременным исполнением разных kernels на одном чипе. Т.е. простой сменой Device ID тут не обойтись, нужна поддержка от чипа.

Хотелось бы понять, кто ошибся: обозреватель IXBT (и всех прочих изданий, написавших что GTX770 - это relabeled GTX680; и я не видел, чтобы NVidia кинулась их поправлять), или NVidia на своем сайте?

Про OpenCL-бенчмарки (опять, да!)

Злоба на эту тему у меня копится и периодически выплескивается.

История первая

В Mac OS X 10.8.3 поапгрейдили драйвера NVidia и у NVidia 6xx в LuxMark стало в полтора раза меньше попугаев.

Предполагая, что бенчмарка - нормальная (т.е. меряет время выполнения, никак его не нормализуя на конфигурацию железа), давайте попробуем разобраться что случилось:

  • Было (драйвер репортил): 28 юнитов
  • Стало: 7 юнитов (более широких, но не суть)
Само железо не изменилось. Мог, конечно, измениться (ухудшиться) OpenCL-компилятор, но у меня предположение другое: само приложение, увидев меньше юнитов, задает размеры грида (количество одновременно исполняемых Workgroups) поменьше. От этого происходит худшая утилизация железа (ну там латентность памяти не прячется) и уменьшаются попугаи. Проверить нетрудно, но лень читать исходники.

История вторая На Tomshardware большой тест скорости работы Titan GTX на вычислительных задачах.

Что мы видим:

  • На OpenCL-тестах: Titan в некоторых случаях хуже, чем 580GTX (и лишь незначительно лучше, чем 680GTX), а в некоторых - хуже 680GTX (у которой, заметим, поменьше юнитов и вообще всего поменьше при примерно той же архитектуре).
  • На CUDA-тестах: Titan всегда лучше всех, а вот второе место может быть как у 580GTX (двойная точность?), так и у 680GTX
CUDA - дает ожидаемые результаты (Titan ожидаемо быстрее всех), а с OpenCL - привычный бардак.

В очередной раз хочу сообщить, что тестировать один и тот же OpenCL-код на разном железе (без специфичных оптимизаций под конкретное железо) - бессмысленно.

Про Intel и OpenCL

И вторая за сегодня новость про OpenCL.

Вышел интеловский SDK (SDK for OpenCL Applications 2013 Release). А там, кроме всего прочего такое вот:

Support in dual adapter mode on Windows* 8: enables OpenCL workloads to be accelerated on Intel HD Graphics when the device is not directly connected to a display and fully enabled running Intel driver.
Я осуждаю то, что это только для Win8, а сам факт - одобряю. На Ivy Bridge/Haswell можно будет посчитать что-нибудь эдакое без чудовищного оверхеда по копированию по PCIe (а, всего-лишь, с небольшим оверхедом на double buffering :)

Про NVidia и OpenCL

А вот в спеках у анонсированной сегодня Geforce 740M (и всех прочих анонсированных сегодня мобильных GPU написано

OpenCL: 1.2

Обновил драйвера до текущих, нет GPU Caps (да и вообще все) говорят что у моей GTX480 все еще OpenCL 1.1

Кто знает, что у NVidia будет с OpenCL 1.2, когда, как, почему, зачем и на каких картах что?

Про OpenCL-бенчмарки

Давно копил в себе злобу желание про это написать, а тут вот появился повод.

Вот есть такая ViennaCL, пакет линейной алгебры для "вычислительных ускорителей" (приходится писать так потому что Xeon Phi). На днях вышла версия 1.4.1 и про нее написано:

...and features a GEMM kernel reaching more than 1.3 TFLOPs on an AMD HD7970.
Я призадумался, как такое может быть, ведь HD7970 - это чуть меньше терафлопса на стандартных клоках, ну гигагерц-edition, но 1.3TFLOPs означает,...

Про Geforce Titan GTX

Интересная история происходит с Geforce Titan GTX. Все ожидали вчера анонса и 3dnews его даже выпустил в 21:00 т.е. все было готово. А потом - спрятал (ссылка - из гуглокэша, скоро протухнет). ixbt опубликовал тот же текст но как последние слухи. Аналогичная история приключилась c expertreviews.co.uk - они дернулись аж в 14:00 (по своему UK-ному времени, насколько я могу судить, по времени появления ссылок на них в твиттере).

...

Про Nvidia

Если кто вдруг не видел. На Supercomputers 2012 у Nvidia был свой уголок, NVidia Technology Theater. Где выступали всякие интересные люди со всякими интересными презентациями.

Если кто не видел, рекомендую пойти на архив записей и повтыкать. Там дурацкий интерфейс, надо в правом блоке (где "чат") ткнуть в закладку "видео" и пораскрывать ее. Скажем, про CARMA мне было весьма интересно.

Чтобы два раза не вставать: утро понедельника - время для общефилософских рассуждений

Мне ужасно не нравится, то что сейчас происходит в GPGPU-мире:

  • Есть Nvidia с CUDA и с аккуратно спрятанным под ковер OpenCL. То есть OpenCL 1.1 в драйверах есть, но компания делает вид, что никакого OpenCL в природе не существует. Где, к примеру, OpenCL 1.2? При этом, в HPC-области NVidia очевидный лидер, если кто-то делает HPC-софт, то делает он его в первую очередь под CUDA (ну, насколько я вижу).
  • Есть OpenCL, в который кинулся весь остальной мир. И на CPU и на GPU и на x86 и на ARM и на прочих архитектурах. Если писать что-то для более-менее массового юзера, то очевидно что на OpenCL, ибо рынок куда шире.
Душераздирающее зрелище.

CUDA5

Отсюда (может быть туда без регистрации не пускают, точно не знаю, но регистрация быстрая):
The latest version of NVIDIA Nsight Eclipse Edition with support for CUDA C/C++ is available with the CUDA 5 Preview Toolkit and is supported on MAC and Linux platforms.
Что какбэ говорит нам, что сегодня (по Мск - завтра) не только CUDA5 анонсируют, но и почти сразу пощупать можно будет.

Q: Nvidia Kepler (GTX680)

Граждане читатели!

А кто-нибудь может показать пальцем в какие-то разумные документы про вычисления на NV Kepler (она же - анонсированная вчера NVidia GTX 680)?

То что я вижу на картинках меня смущает:

  • Количество этих самых "Cuda Cores" учетверили (в сравнении с Compute Capability 2.1) в одном мультипроцессоре с 48 до 192.
  • Количество регистров в SM(X) - удвоили, стало 64к вместо 32к. Количество shared memory - и вовсе оставили прежним (64kb shared+L1 cache)
Это что же, быстрой...

HD7970 Overclock

Взял в одну руку LuxMark 2.0, в другую - Catalyst Control Center и посмотрел, как оно оверклочится:

  • Позволяемый драйвером максимум т.е. ~20% по частоте процессора (925-1125) и 9% по памяти (1375 - 1500) - совершенно влегкую. Кроме частот - больше ничего не трогал.
  • Попугаи LuxMark растут при этом на 17%
  • Температуру при этом дотянуть до 80-83С удается только минут за 10 (5 запусков бенчмарки подряд), греется мало
  • При такой температуре - вентилятор на половине (автоматическая регулировка).
Для сравнения, GTX480 (ну она горячая по жизни, конечно) нагревается до 90-с-хреном очень быстро и столь же быстро врубает вертушку на полную. Гораздо громче.

Сама по себе бенчмарка, хоть она и многим тестерам уже полюбилась, производит странное впечатление: i7-2600k@4.5 работает на уровне HD5870-HD6970 (~330-350 попугаев на Complex scene). Очень странные цифры, формально у 5870-6970 за два терафлопса в SP и полтерафлопса в DP, тогда как у интеловского горшка ~110 в SP (8x4.5x4) и половина этого в DP. Понятно, что "реальная задача" и вообще реальный мир, но удивительно.

Из LuxMark Database удалось выяснить, что существует какой-то более новый AMD APP runtime (886.1), который процентов на 20 быстрее доступного обычным смертным (851.6). Это хорошая новость, будем ждать.

Про HD7970

Договорился с жабой и купил новую грелку для ног.

Вкратце:

  • OpenCL 1.1, поддерживается, работает. Посмотреть что там за код не получается, Kernel Analyzer не умеет это место.
  • Драйвера: под винды есть, бета, в основной Catalyst не включены (и, похоже, войдут не раньше чем в 12.3 т.е. через два месяца т.к. даже в 12.2-preview поддержки 79xx нет). Драйвера под линукс поискал для проформы (мне не надо) - и не нашел.
  • Сцуко, быстрая. Один и тот же OpenCL-код (написанный
  • ...

Грелки для ног и гигафлопсы

У желающих пощупать за вымя свежую архитектуру HD79xx есть два разумных выбора:

  • Купить 7970 сейчас (принципиально дешеветь дальше уже не будет, пока не отрастут конкуренты).
  • Подождать месяцок до реального появления в продаже 7950, которая будет примерно на сотку баксов дешевле.

Чтобы оправдать первый вариант (руки то чешутся), вот такой вот расчет:

HD7970

  • 2048 cores x 925 MHz /2 = 947 GFLOP/s (теоретическая, на double).
  • Рекомендованная цена $550 (и в newegg теоретически за столько можно купить) т.е. 1.72 GFLOPS/$
  • Реальная цена в московской рознице 19000, т.е. 0.0499 GFLOPS/руб.
HD7950
  • 1792 cores * 800 MHz /2 = 716 GFLOP/s.
  • Рекомендованая цена $450 т.е. 1.59 GFLOPS/$
  • Какая будет цена в московской рознице - непонятно, но чтобы сравняться с 7970 по гигафлопсам на рупь, цена должна быть 14400, что крайне маловероятно. А 7970 может еще на тысчонку подешеветь спокойно.

Теоретически, конечно, 7950 хорошо гонится, может быть даже лучше чем 7970. Но практика для предыдуших двух серий Радеонов показывает, что многочасовой расчет на штатной частоте (без снижения) - это уже прекрасный результат и всерьез надеяться на оверклок не стоит. Игры в этом месте менее показательны, они пушат лимитсы меньше, чем любовно оптимизированный расчет.

Короче, моя жаба приведенным выше расчетом - удовлетворилась.

Об AMD 7970 и терафлопсах

Я тут, со всей этой суетой предновогодней, пропустил анонс HD7970, сегодня только прочитал.

Очень хотелось, но кажется терафлопса (на DP) на одной карте таки не будет. Т.е. формально там что-то в районе 950 Gflop/s на штатной частоте, вроде можно разогнать где-то до 1100Mhz (а там на DP аккурат один килофлопс на такт: 2048 юнитов, 512 DP-операций, уможаем на 2 т.к. MAD), но маловероятно, что реальная эффективность на DGEMM будет выше 90%, а на HPL - выше 75-80. Потому что оверхед таки есть, на DMA, да много на что (на 6990, например, DGEMM получается эффективнее 90% только если найти те правильные ядра, которые с PCIe наиболее эффективно работают, по меньшей мере на оптеронах жизнь именно так устроена).

А жаль, счастье было так близко! Терафлопс на десктопе - это хороший такой рубеж.

Вместе с тем, интересно, насколько тамошние юниты - скалярны, из имеющихся в сети описаний я так и не понял. Могут ли они исполнять разные инструкции одновременно? Есть ли какие-то ограничения (загрузка из памяти по соседним адресам, например)?

Ибо если они совсем независимы (просто такой multi-core девайс, с регистрами, локальной памятью доступной группе ядер, ну и медленной глобальной памятью) - то это совсем другой разговор.

О вычислениях

Понастраивал тут кластер, добился для 12 нодов эффективности около 70%, на чем (заказчик) и успокоился.

Но все эти дни не отпускала такая вот простая мысль:

  • Вот значит кластер, в нем 7U Blade-серверов (набивка неполная, мест на шасси 10) плюс еще 1U "управляющего фронтенда", OpenMPI, подбор топологии и размеров задачи, чтобы коммуникации и вычислительная моща были сбалнсированы (а уже для 12 нод, без опыта - пришлось повозиться, хотя конечно можно было бы просто оставить подбираться на месяц и помешивать).

    Ну и стоит - не знаю сколько, но так подозреваю, что заметно за $100k.

  • Но те же 1.7 терафлопса получаются на половинке юнита (а добив памяти и увеличив задачу - на той машине уже за 2 Tflop/s получили). Ну ладно, на целом юните, если не увлекаться и просто пихнуть две HD6990 в подходящий корпус. И, по ощущениям, гемороя с отладкой какбэ не меньше. Стоить будет - ну скажем $10k за сервер и еще $2k за две видеокарты.

    Ну хорошо, пусть даже mainstream-решение: 4-GPU-Tesla (1U) и два 1U-сервера. И даже IB (на две ноды - можно без свитча - будет несколько сотен за 40Gbit порт). Но сбалансировать две ноды сильно проще чем 12, я проверял.

    Такой мейнстрим стоить будет тоже не $100k+, а 30-40. Электричества жрать не 6 киловатт, а два. А на 4xTesla те же 1.7 GF

Ну то есть понятно, GPGPU еще не везде мейнстрим, особенно на AMD. Но посмотрев на все это вживую - никакой идеи считать что-то научное на "обычных компьютерах" - у меня больше не возникает.

P.S. С удовольствием приму участие в настройке какого-то кластера с теслами. Чисто за интерес.

О Терафлопсах - 2

Алаверды к этому посту

 ================================================================================ HPL-GPU 1.1.0 -- High-Performance Linpack benchmark -- 2010 Written by D. Rohr, M. Kretz and M. Bach, Frankfurt Institute for Advanced Studies ... ================================================================================ ... ================================================================================ T/V N NB P Q Time CPU Gflops -------------------------------------------------------------------------------- WC26L2C32 124928 2048 1 1 753.87 11956.78 1.724e+03 -------------------------------------------------------------------------------- ||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)= 0.0001192 ...... PASSED ================================================================================ Finished 1 tests with the following results: 1 tests completed and passed residual checks, 0 tests completed and failed residual checks, 0 tests skipped...

Про AVX и OpenCL

Вчера вышел Intel OpenCL SDK 1.5 с соответствующим анонсом: Increase OpenCL application performance with the new Intel OpenCL SDK 1.5

Пытаюсь enlarge increase эту самую performance, сую в бензопилу лом туда AMD-шные примеры, которые на предыдущей версии работали очень бодренько (и временами почти догоняли AMD-шную видеокарту) и вижу замедление в 2-3 раза для половины примеров.

Начинаю читать код и не вижу там 256-битности. Ну, почти не вижу. Кое-где есть 256-битные load/store, нашел даже один...

О Терафлопсах

Для истинных ценителей:

 ================================================================================ HPL-GPU 1.1.0 -- High-Performance Linpack benchmark -- 2010 Written by D. Rohr, M. Kretz and M. Bach, Frankfurt Institute for Advanced Studies Based on: HPLinpack 2.0 -- High-Performance Linpack benchmark -- September 10, 2008 Written by A. Petitet and R. Clint Whaley, Innovative Computing Laboratory, UTK Modified by Piotr Luszczek, Innovative Computing Laboratory, UTK Modified by Julien Langou, University of Colorado Denver ================================================================================ ...skip... ================================================================================ T/V N NB P Q Time CPU Gflops --------------------------------------------------------------------------------...

Pages

Subscribe to GPGPU