Связка из двух графических адаптеров в одном корпусе сегодня означает не то же самое, что десять-пятнадцать лет назад. Тогда это был способ сложить кадровую производительность двух плат в одной игре: платы соединялись мостиком, драйвер получал профиль конкретного движка и делил работу. Сейчас две карты в системе ставят по другим причинам — под расчёты, под кодирование видео, под несколько независимых рабочих потоков, под виртуальные машины с проброшенным устройством. Механизм принципиально другой: кадры не складываются, задачи распределяются.
Почему игровое объединение перестало работать
Классические режимы совместного рендеринга делили работу двумя способами. Либо чётные и нечётные кадры уходили на разные платы, либо один кадр резался на горизонтальные полосы. В обоих случаях у каждого адаптера должна была лежать своя полная копия сцены в видеопамяти, а драйвер должен был понимать, в каком порядке движок готовит буферы.
Сломалось это на эффектах с временной историей. Сглаживание, размытие в движении, отражения в экранном пространстве, современные алгоритмы масштабирования — все они читают результат предыдущего кадра. Если предыдущий кадр посчитала соседняя плата, его нужно целиком переслать через шину, и выигрыш съедается пересылкой. Дополнительно связки страдали неравномерностью интервалов между кадрами: средняя частота росла, а плавность на глаз ухудшалась. Разработчики движков перестали закладывать поддержку, производители перестали сопровождать профили, и на этом сценарий закрылся.
Что действительно делят на двух платах
Остались задачи, которые режутся на независимые куски заранее, до старта, и не требуют синхронизации десятки раз в секунду.
Офлайн-рендер в трёхмерных пакетах: сцена делится на области изображения или кадры анимации, каждый адаптер берёт свой участок и отдаёт готовый результат. Масштабирование близко к линейному, потому что куски друг о друге ничего не знают.
Обучение и запуск нейросетей: либо на каждой плате лежит копия модели и разные порции данных, либо модель разрезана по слоям и данные идут по цепочке. Первый вариант к шине нетребователен, второй упирается в неё сразу.
Кодирование и декодирование видео: у адаптеров есть отдельные аппаратные блоки, и вторая плата даёт вторую независимую линию обработки, не отнимая ресурсов у основной.
Виртуализация и стенды: одна плата отдана гостевой системе целиком, вторая обслуживает хост. Здесь дело не в производительности, а в изоляции.
Линии PCIe и как они делятся
Главное ограничение платформы — не разъём, а разводка. Процессор выдаёт фиксированное количество линий PCIe, и на массовых платформах их около двух десятков на слоты и накопители. Установка второй платы почти всегда переводит первый слот из режима x16 в x8, отдавая второй половину. Иногда второй слот вообще подключён к чипсету и работает на меньшем числе линий с дополнительной задержкой на переходе. Как именно распределены линии на конкретной плате, видно только по её схеме — этот вопрос разбирается в разделе о материнских платах.
Насколько это критично, зависит от профиля задачи. Если набор данных один раз загружен в память адаптера и считается минутами, ширина канала не имеет значения. Если каждую порцию данных нужно подать с накопителя или из оперативной памяти, узкий канал становится потолком, и вторая плата половину времени простаивает.
Отдельно стоит запомнить: видеопамять не суммируется. Две платы по двенадцать гигабайт — это два независимых пула по двенадцать, а не двадцать четыре. Задача, которая не помещается в память одной платы, на двух таких же не заработает, если алгоритм не умеет резать данные явным образом.
Питание, тепло и физическое место
Потребление складывается напрямую, и считать нужно по пикам, а не по средним значениям. Современные адаптеры дают короткие всплески в разы выше номинала; блок питания должен переживать их без просадки на линии двенадцати вольт, иначе срабатывает защита и система выключается под нагрузкой. Запас берётся с учётом этих переходных процессов — критерии подбора разобраны в разделе про блоки питания.
Тепловая картина в связке несимметрична. Плата, установленная в верхний слот, обычно оказывается в худшем положении: её вентиляторы забирают воздух, уже подогретый соседкой снизу, зазор между платами мал, и радиатор работает при повышенной температуре на входе. Разница между двумя одинаковыми картами в такой сборке может достигать заметных десятков градусов, и верхняя первой уходит в сброс частот. Конструкции с турбиной, выбрасывающей воздух наружу через заглушку, в плотной установке ведут себя предсказуемее открытых кулеров, которые греют внутренний объём корпуса.
Механическая сторона тоже ограничивает. Толстые трёхслотовые системы охлаждения физически перекрывают соседний разъём, длинные платы упираются в корзины накопителей, а две тяжёлые карты нагружают текстолит материнской платы на изгиб. Вертикальный держатель или упор здесь не украшение, а способ не оторвать разъём.
Когда вторая плата не даёт ничего
Признак простой: задача не делится на независимые части. Игры, большинство приложений реального времени, любой софт без явной поддержки нескольких устройств будут использовать одну плату, а вторая останется в системе как источник тепла и дополнительный потребитель. Проверять поддержку нужно по документации конкретной программы, а не по факту, что обе карты видны в диспетчере.
Второе соображение — сравнение с одним более мощным адаптером. Одна плата старшего класса почти всегда выигрывает у пары младших по плотности производительности на ватт, по объёму доступной одному процессу памяти, по совместимости и по требованиям к корпусу. Смысл в связке появляется там, где нужны именно два независимых устройства или где задача уже упёрлась в потолок одиночной платы.