Тестируем лучшие видеокарты для расчетов на конец 2021 года: 3090 Turbo и A10
Недавно на Хабре была статья про сравнение карточек для вычислений. На мой взгляд статья получилась очень даже неплохой, но в ней никак не отразили позиции RTX 3090 Turbo и как-то подозрительно мало времени уделили А10.
На мой взгляд среди карточек с «большим» объемом памяти (более 12 гигабайт) по рекомендованной рыночной цене (РРК) 3090 является лидером хит-парада, а по рыночной цене — скорее уже А10. Детальный разбор почему и как я подходил к выбору карточек и тестированию — прошу под кат.
Также так случилось, что у меня под рукой оказалось большое количество рейзеров разной степени говённости. И сначала я замахивался, чтобы поставить некую точку в вечных дебатах про райзеры (а мнения разнятся от такого до банального «не работает» или «для DL нельзя использовать»), но в итоге все получилось чуть более сумбурно. Но я постарался подойти к тестированию райзеров тоже структурированно и аналитически.
И последнее — в прошлой статье я сокрушался, что мол нет на рынке большого выбора однослотовых решений по вменяемой цене. Теперь на выбор решений много, но с доступностью и ценами ситуация лучше не стала (есть как минимум 2 поколения карточек Quadro и Tesla A10, но геймерских нет, насколько я знаю).
Выбор карточек и теоретические цифры
Вообще в чатике нашего канала кто-то поделился супер-полными табличками с характеристиками в виде картинок (раз и два), но мы попробуем их немного упростить и разложить все на пальцах.
Простыми словами — физической и финансовой возможности (и мотивации) протестировать абсолютно все карточки у меня нет, но если верить вышеописанной статье, все-таки какая-то корреляция между спецификациями карточек и тестами прослеживается. Я собрал характеристики всех более менее свежих и интересных карточек (пожалуй кроме однослотовых прошлого поколения, которое не было очень удачным, да и Амперы уж очень сильно приросли по сравнению с прошлым поколением). Цены на момент публикации статьи могли уже поменяться.
Пока в глаза бросается пожалуй лишь то, что на первый взгляд кроме рекомендованной рыночной цены на 3090, все карточки стоят сравнимое количество денег, кроме флагманской A100 (которая еще бывает с 80 GB памяти). Обратите еще внимание, что при переходе на последнее поколения Nvidia «увеличила» число CUDA-ядер в 2 раза, но они стали как бы в »2 раза меньше». Еще стоит обратить внимание на низкий TDP и однослотовость у A4000 и A10. Что грустно и закономерно (вставить комментарий про майнеров), 3090 «доросла» за год по цене примерно до своих серверных коллег.
Так, получается очень много цифр! А если открыть полные таблички, то и мозг можно сломать. Плюс все это мягко говоря теоретические цифры, скорее всего из спецификаций или маркетинговых материалов. Давайте пойдем от противного — выберем какой-то бюджет, допустим 900 т.р. (чтобы влезла хотя бы одна A100, ха!) и посмотрим, что можно получить за эти деньги.
(*) Еще важная ремарка состоит в том, что хотя якобы кто-то и «разгонял» 3090 до 500+ Ватт, в реальности лично у меня они потребляют в районе 300 Ватт (я вставлю именно эту цифру в следующую таблицу).
Да, при обучении нейросетей не всегда FP32 это самый важный индикатор, но с другими форматами данных в спецификациях больше непонятностей и маркетинга. По факту вы или будете учить в FP32, или использовать что-то вроде AMP (в тестах дальше мы попробуем и тензорные ядра).
Давайте проанализируем табличку. У карточек А20, А30 и A40 получается маловато «мощности», но есть вариант с большим количеством VRAM. A100 явно является флагманом и кажется, что даже относительно серверных карт ее цена завышена раза в 2 (не считая ситуации когда вам реально нужны 80 GB VRAM на карту или какие-то особые вычисления и выбора тогда по сути нет).
A10 и A4000 кажутся сильно интереснее с точки зрения наполнения сервера (они однослотовые и мало кушают), но тут получается, если вы хотите оптимизировать мощность вычислений — вам нужна A10, а A4000 получается как бы равной «половине» A10. Но если вы захотите поставить 5 или 6 карточек A10, 10–12 A4000 уже будет проблематично впихнуть. Держим в уме, что обычно слотов в материнских платах не более 7, и в лучших БП обычно не более 9 VGA кабелей. Вариант с колхозом и синхронизацией 2 БП мы опустим для простоты.
Чисто по характеристикам и размерам, A5000 кажется более энергоэффективным «собратом» 3090, а A6000 и RTX 6000 (прошлое поколение) — уже сильно послабее или для нишевых применений (на рубль конечно, не в вакууме).
Итак, постараемся подвести итоги. Дорогие и узкоспециализированные варианты отметаем. В сухом остатке остаются A5000 (лидер хит-парада из статьи по ссылке), 3090 и A10.
По цене, они к сожалению все более менее равны (по РРК у 3090 конкуренции вообще нет). Но тут получается, что 3090 даже по рыночной цене является более «быстрой» и горячей, чем A5000, но она все равно занимает 2 слота. А A10 получается несмотря на свою цену занимает нишу для билдов, где вы хотите поставить более 4 карточек. И да, как ни странно A5000 еще тоже относительно тяжело купить.
Тестируем карточки
Приведу результаты тестирования 3090 и A10. У 3090 есть один нюанс. На рынке есть две модели 3090 с турбиной — ASUS и Gigabyte. У решения от ASUS как-то криво проставлены заводские настройки скорости вентилятора и он не крутится быстрее 45–50%. У решения от Gigabyte такой проблемы нет. Поэтому я приведу результаты сравнения A10 и 3090 от Gigabyte «в стоке» (у A10 вообще нет движущихся частей) и 3090 от ASUS с заводским и автоматизированным управлением скоростью «фенов».
Чтобы лишний раз не возиться с компиляцией, установкой CUDA и прочего, тестировать будем вот так:
# image
docker run --rm --gpus 0 -it --entrypoint bash nvidia/cuda:11.4.2-devel-ubuntu20.04
# gpu cooling (on host)
pip install coolgpus
sudo $(which coolgpus) --kill --temp 20 55 80 --speed 5 30 85
# git
apt update
apt install git
# gpu burn
git clone https://github.com/wilicc/gpu-burn.git
cd gpu-burn
make
./gpu_burn 120
./gpu_burn -tc 120
cd ../
То есть по сути просто берем официальный образ с CUDA 11.4 (девелоперская версия), собираем gpu-burn
и вперед.
Получается, что по умолчанию решение от ASUS перегревается, но если крутить кулер хотя бы на 70%+, то все уже становится хорошо. Посмотрим теперь, что выдает A10:
Тут важно отметить, что для первых тестов кулер DELTA стоит просто приклеенный к корпусу на двусторонний скотч. Поток воздуха никак на «направлялся», он просто дул в примерном направлении A10. Про управление воздушными потоками, дельтами и сборку оптимальных серверных билдов я наверное напишу как-нибудь потом, если эта статья наберет хотя бы +50, уж очень там много деталей и тонкостей, и не хочется это все вспоминать.
В итоге получается интересная картина. Без использования тензорных ядер A10 сильно уступает 3090, но с ними — они почти уже равны. А разница в TDP наблюдается почти в два раза (!). Как себя поведут карточки в реальной работе, еще конечно предстоит узнать. Я довольно сильно намучился с железом и сейчас пока нет моральных сил гонять тесты на реальных задачах. Скорее всего когда это произойдет, мы что-то напишем в нашем телеграм-канале.
Тестируем райзеры и пропускную способность
Итак, у меня был целый ассортимент разного рода райзеров. Фирменных и говённых, коротких и длинных, красивых и облезлых. Пару лет назад при более неформальном тесте, я приходил к выводу, что только райзер от TT работал. Изменилось ли что-то в этот раз? Если посмотреть видосики как люди делают 10-метровые удлинители (понятно, что это проплаченная постановочная реклама и райзеры там были заранее выбраны и вообще это скорее шоу для неискушенной публики), втыкая райзеры один в другой, хочется верить, что все будет хорошо.
И да, важная ремарка, я хочу, чтобы все просто работало из коробки. Без каких-либо настроек ОС, BIOS и чего-то подобного. Это дискуссионный момент, но как раз по этой причине я в итоге опять отказался от использования райзеров совсем.
Тестировать пропускную способность будем с помощью утилиты, которую предоставляет Nvidia в своем репозитории с CUDA-примерами. Точно так же, чтобы не возиться, просто берем официальный образ, не забывая спулить репозиторий на соответствующий тег релиза CUDA.
# image
docker run --rm --gpus 0 -it --entrypoint bash nvidia/cuda:11.4.2-devel-ubuntu20.04
# git
apt update
apt install git
# bandwidth test
git clone --depth 1 --branch v11.4 https://github.com/NVIDIA/cuda-samples.git
cd cuda-samples/Samples/bandwidthTest
make
./bandwidthTest --memory=pinned --mode=quick --htod
./bandwidthTest --memory=pinned --mode=quick --dtoh
./bandwidthTest --memory=pageable --mode=quick --htod
./bandwidthTest --memory=pageable --mode=quick --dtoh
cd ../
Итоги теста получатся такие:
Я использую базовые настройки тестов пропускной способности, т.к. очевидно, что если измерять ее на малых «чанках», то она будет очевидно хуже. Я пробовал разные сценарии, но везде есть очевидная корреляция, поэтому я решил тут не усложнять.
Подведем итоги. Райзер от TT по прежнему работает. Остальные скорее не работают. Райзер от TT почти не влияет на пропускную способность.
Да, я осознанно не занимаюсь всяческими настройками BIOS, не переключаю PCIE режимы, итд итп.
Вместо вывода
Надеюсь эта статья была вам интересна и полезна. Нам стоило довольно больших усилий (и финансовых ресурсов!) собрать это все вместе и изложить в понятном и интересном ключе.
Я пока морально не готов писать продолжение статьи про сбор суперкомпьютера, но в серверном форм-факторе, но если эта статья наберет +50, то думаю в начале января я сделаю над собой моральное усилие.
Всех с наступающими праздниками и Новым Годом!
PS Пара слов про сами карточки
Я нахожу своеобразную красоту в том, как выглядят утилитарные вещи. Карточки PNY выглядят очень просто, они очень утилитарно и экономично упакованы в коробки из обычного картона. Карточки от ASUS пытаются выглядеть немного как арт-объект, но при более близком рассмотрении все эти «красивости» это просто бесполезные пластиковые обвесы. A карточки от Gigabyte визуально сочетают в себе и какой-никакой промышленный дизайн, профессионализм, утилитарность и строгость внешнего вида (и очень хорошо стоят одна за другой, что конечно важнее!). Этого же я не могу сказать про упаковку карточек, коробки как обычно отталкивающе-аляпистые и налицо пустая трата ресурсов.