Содержание статьи
Все персоналки, ориентированные на сложные вычисления, имеют сильный перекос в сторону количества памяти, как оперативной, так и дисковой. В своем проекте я применил ряд спорных решений, обусловленных желанием сохранить баланс между апгрейдопригодностью, вычислительной мощностью и ценой. Что из этого получилось, я подробно расскажу в сегодняшней статье.
На чем сейчас считают
Специально для научных вычислений созданы суперкомпьютеры, например суперкомпьютер Курчатовского института или «Ломоносов-2» в МГУ. Под расчеты обычно выделяют одну ноду, и это в целом весьма недурной вариант. Но тут есть и свои нюансы, скажем привязка к определенному софту и некоторые административные моменты. С другой стороны, и плюс солидный — не надо настраивать среду.
Многие используют свои вычислительные мощности, и тут можно встретить целый зоопарк разнообразных устройств. Обычно это что‑то напоминающее ноду суперкомпьютера, то есть одно- или двухпроцессорная система с камнями типа E5 2680v3/v4 и памятью от 64 Гбайт. Иногда попадается старье типа Xeon X5650, но это уже пережиток прошлого. Впрочем, ученые достаточно консервативны, поэтому оборудование часто служит десятки лет. Правда, с компьютерами этот фокус обычно не проходит.
В «бытовом» сегменте несколько лет назад очень круто смотрелся AMD Ryzen Threadripper 3970x и старшие модели в связке с 256 Гбайт DDR4 3200. Впрочем, этот процессор и сейчас выглядит неплохо, как говорится — дорого‑богато. Также определенной популярностью пользуются AMD Ryzen 9 5950X, Intel i9-12900k и младшие модели, в обоих случаях компьютер оснащают 64 Гбайт оперативки. Но у бытовых решений есть одна неприятная проблема: подобные процессоры не рассчитаны на высокую круглосуточную нагрузку. Например, я слышал несколько печальных историй о смерти от перегрева неудачно собранного десктопа на Threadripper. Комп помер на вторые сутки, причина — слабая система охлаждения.
Вторая проблема бытовых процев — малый объем поддерживаемой памяти, тут разве что Threadripper позволяет разгуляться, особенно старшие модели, а для прочих потолок обычно составляет 64 Гбайт. В принципе, такого объема хватает практически на все задачи, но в уме приходится держать, что методы типа DLPNO-CCSD(
или STEOM-DLPNO-CCSD
могут оказаться такому аппарату не по зубам.
Рекомендации по конфигурации
В сети не очень много рекомендаций, как собрать компьютер для научных расчетов, тем не менее они есть. Например, такую инструкцию можно найти на форуме ORCA (недоступен с российских IP), и рекомендации эти довольно простые: всего, и побольше. В первую очередь, конечно, оперативной памяти, общепринятым минимумом считают 64 Гбайт. Можно использовать и 32, и даже 16, но тогда придется очень тщательно подбирать методы и задачи, так как при любом неудачном стечении обстоятельств все будет падать из‑за нехватки оперативки.
Впрочем, полуэмпирике и простым DFT-методам с небольшим базисом должно хватить скромных объемов RAM, но это скорее учебные задачи. Вообще, памяти должно быть 256 Гбайт, а еще лучше 512, в таком случае тебе будут доступны практически все широко используемые методы.
Что же касается процессора, то лучше меньше ядер с высокой тактовой частотой, чем наоборот. Тем не менее квантово‑химический софт — это не игры, и он, разумеется, заточен под много потоков, поэтому приведенную выше рекомендацию следует понимать как «16 быстрых ядер лучше 22 медленных».
Также очень желателен быстрый SSD на 512 Гбайт и более. Вернее, так: для DFT 512 Гбайт хватит с запасом, а вот для методов post HF крайне желательно иметь больше 1 Тбайт (на моей памяти больше 5 Тбайт пока не отъедало). На худой конец сойдет и RAID 0 на HDD, что, конечно, просадит скорость, но работать будет. Очень хороший свод рекомендаций по сборке такого компьютера публикует исследователь из Пекинского университета под ником Sobereva.
Причем эти рекомендации приводятся за последние несколько лет и разбиты по годам: любопытно смотреть, как растут аппетиты. В целом автор очень ратует за использование б/у серверных компонентов, дабы не разбазаривать казенные деньги на переплату вендорам. Текущая рекомендуемая им конфигурация — это dual AMD EPYC 7R32 на 96 ядер. Используя такую машину, автор провел исследование, насколько хорошо параллелится ORCA. Официальный мануал говорит, что до восьми ядер все параллелится без нареканий, а с шестнадцатью уже возможны проблемы, но в мануале это упоминается только вскользь.
Так вот, согласно тестам Sobereva, при увеличении количества ядер до 24 рост быстродействия почти линейный, от 24 до 48 он отклоняется от линейного. На отрезке от 48 до 84 ядер рост еще прослеживается, а когда их становится больше 84, прироста уже не наблюдается. Понятно, что эти числа зависят от исполняемой задачи, но на низком уровне все квантово‑химические методы так или иначе сводятся к перемножению матриц, нахождению собственных векторов и значений, так что эти результаты полезно держать в уме. Кроме того, других тестов подобного размаха я не встречал.
Итерация первая
В своей сборке я решил сделать упор на объем памяти. На дворе стоял январь 2022 года, кризис чипов был еще в разгаре, поэтому вариантов у меня оставалось немного. Если хочешь большой объем DDR4, то дорога тебе на «Али» за б/у серверной памятью, а к ней нужен проц — тоже серверный б/у Xeon. Цены тогда были, прямо скажем, невкусные, и на память ушла изрядная часть бюджета (8 × 32 Гбайт 2400 DDR4 ECC REG обошлось тогда в сумму порядка 60 тысяч рублей).
Подержанные серверные матери тогда в мой бюджет не пролезли, и я решил остановиться на китайских. О китайских матерях в целом ходит дурная молва. В частности, одно из типичных больных мест этих девайсов — цепи питания CPU, то есть VRM, поэтому я попытался найти что‑то понадежнее, насколько это возможно. Выбор пал на Huananzhi X99-F8: эта материнская плата имеет активное охлаждение VRM, восемь слотов памяти и, само собой, поддерживает четырехканальный режим.
Теперь о процессоре. Поскольку предполагалось, что машина будет долгое время работать в режиме 24/7 при практически полной нагрузке, ни о каком разгоне и речи не шло, поэтому смотреть в сторону Xeon 26xxv3 смысла особого не было, и я выбрал Xeon E5 2683v4. Это 16-ядерный процессор с частотой 2600 МГц при полной нагрузке. Скромненько, зато недорого: в 2022 году он стоил около пяти тысяч, а сейчас и вовсе меньше двух. Впоследствии, когда цены немного снизились, я заменил камень другим — E5 2696v4, где уже 22 ядра и 2800 МГц при полной нагрузке. Прирост производительности, прямо скажем, заметный, и это потолок для выбранной мною платформы, но он и сегодня смотрится довольно достойно.
Для охлаждения всего этого дела я использовал китайскую «башню» с шестью трубками и тремя вентиляторами.
Впрочем, такая система охлаждения оказалась даже избыточной, и температура под нагрузкой не превышала 51 градус. Так что можно не париться и ставить какой‑нибудь ноунейм, однако он должен уметь отводить примерно 150 Вт. Корпус я использовал Zalman S2, в него были установлены шесть вентиляторов, три на вдув на фронтальной панели и три на выдув, один сзади и два сверху. Верхние кулеры достаточно удачно расположены над зоной VRM. В целом этот корпус довольно дешевый, и боковая стенка пластиковая, ну да нам на него не любоваться.
Объем памяти позже был увеличен до 512 Гбайт, но уже по стечению обстоятельств. Любопытно: китайские платы держат планки по 64 Гбайт, а в сети я упоминания об этом не нашел, правда, возможно, потому, что никому в здравом уме не придет в голову напихать в китайскую сборку полтерабайта оперативки. Да и задач, где нужны такие объемы памяти, кроме квантово‑химических расчетов, я так с ходу и не придумаю.
С дисками вышла целая чехарда. В первом варианте я использовал под систему NVME SSD объемом 256 Гбайт и HDD на 3 Тбайт для хранения результатов вычислений. Но оказалось, что для использования DLPNO-CCSD(T) и особенно STEOM-DLPNO-CCSD этого совсем недостаточно: мало и 512 Гбайт, и 1 Тбайт. А если использовать HDD, то скорость записи/чтения становится узким местом, особенно с увеличением количества потоков. Доходит до смешного, когда задача быстрее решается в восемь потоков, чем в шестнадцать.
Стало ясно, что нужен быстрый SSD на 1, а лучше на 2 или 3 Тбайт, но цены на твердотельные накопители больше терабайта тогда были, прямо скажем, негуманные. Поэтому, почесав в затылке, я решил, что мне поможет RAID 0. Так объем диска можно наращивать постепенно, скорость будет расти и износ дисков станет уменьшаться — в общем, одни плюсы. Что же до надежности, то тут это не столь важно: на этих дисках не предполагалось хранить результаты вычислений. В реализации этой идеи мне очень пригодился адаптер PCIe-4NVME — удобно, компактно, и слоты PCIe экономит.
Надо иметь в виду, что если его просто воткнуть в слот x16, то будет работать только первое гнездо M2. Чтобы заработали остальные, в БИОСе нужно настроить бифуркацию слота X16, то есть переключить режим работы с X16
на X4
, тогда все заработает как надо. Не все материнские платы имеют такую функцию. К счастью, Huananzhi X99-F8 это умеет. В качестве дисков я выбрал недорогие WD Blue SN550 объемом 1 Тбайт, тем более в обзорах указывалось, что они не склонны катастрофически просаживать скорость после заполнения кеша.
Таким образом я со временем нарастил массив до 3 Тбайт, и этого, если не наглеть, хватает практически для всех задач. Впрочем, если не замахиваться на методы post HF, а ограничиться DFT, то и 1 Тбайт хватит за глаза. Для создания программного RAID 0 я использовал mdadm
, тут в общем нет никаких особенностей, и мануалов в сети достаточно. Работает такое решение хорошо, однако есть вариант и получше: на алике можно найти относительно недорого U2 SSD WD Black SN640 аж на 7,5 Тбайт — ультимативное решение.
Учитывая, что используемый мною софт, а именно ORCA, на данный момент не умеет работать с GPU, строгой необходимости в видеокарте у меня не возникло. Однако на этапе настройки и установки софта без нее не обойтись. В свою машину я поставил GTX 1080, она мне в свое время досталась по очень привлекательной цене. У китайских плат есть один нюанс в работе с видеокартами, связанный с настройками CSM: в нашей конфигурации она должна быть выключена.
Нюанс тут в том, какие значения установлены в БИОСе по умолчанию. Так, если в пункте video
будет стоять Legacy
, то на GTX 1080 изображения ты не увидишь, только черный экран. Как следствие, в БИОС ты не зайдешь и настройки не поменяешь. Но проблема решаемая: берем какую‑нибудь древнюю видяху (проверял на GTX 640 и EAH4650), втыкаем, заходим в БИОС, меняем настройки, выключаем, ставим назад GTX 1080. Если нужно использовать старую видеокарту, а в настройках video
стоит UEFI
, то алгоритм действий обратный. Подозреваю, что эта особенность многим людям попортила нервы.
В качестве блока питания я использовал Cooler Master Elite V4 600 Вт, однако я бы рекомендовал иметь больший запас по мощности, так как при полной нагрузке машина очень чувствительна к просадкам в сети. Бесперебойник не спасает: комп уходит в перезагрузку. Более мощный блок питания позволяет машине не вылетать, пока срабатывает бесперебойник.
Плюсы и минусы
К плюсам моей сборки можно отнести цену: старые Xeon стоят, прямо скажем, недорого, особенно если не гнаться за топом в линейке E5 2696v4 и E5 2699v4. Любопытно, что по факту это идентичные процы с той лишь разницей, что E5 2696v4 поставлялся строго в составе серверов, поэтому относительно малоизвестен. Кроме того, не все платы его поддерживают, имей это в виду. У E5 2699v4 с поддержкой вроде бы дела обстоят получше, но и цена у него в полтора‑два раза выше. А в остальном они идентичны.
Хороший вариант — E5 2690v4, ядер у него поменьше (14), но и частота повыше: 3200 МГц при полной нагрузке. Стоит он около двух тысяч. Еще к плюсам можно отнести то, что у меня материнка по факту десктопная, форм‑фактора ATX, влезает она практически в любой корпус, да и заморочек с ней меньше, чем с серверными.
К минусам стоит отнести потенциальную ненадежность китайских материнских плат. Судя по отзывам в интернетах, они не то чтобы дохнут, нет, но тут воля случая: может работать, а может и помереть, как повезет. Ну и VRM у них горячий, о чем я уже писал выше.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»