Как это — запустить код на суперкомпьютере за €200 млн. Опыт разработчика

Оказывается, там не все так просто…

Как это — запустить код на суперкомпьютере за €200 млн. Опыт разработчика

В Барселона, внутри старой часовни Torre Girona, работает один из самых мощных суперкомпьютеров Европы — MareNostrum V. 

Разработчик рассказал, как на практике выглядит работа с такой машиной. И почему это совсем не «один огромный компьютер».

Это не один компьютер, а тысячи

Главное отличие HPC от облаков вроде AWS — архитектура. Вместо одной мощной машины, задачи разбиваются и запускаются на тысячах узлов, соединенных сверхбыстрой сетью.

В MareNostrum V используется InfiniBand с топологией fat-tree. Это позволяет любому из ~8000 узлов обмениваться данными без задержек и перегрузок сети — критично для задач машинного обучения и симуляций.

Система делится на две части:

  • CPU-кластер: 6408 узлов с процессорами Intel, суммарно до 45,9 петафлопс;
  • GPU-кластер: 1120 узлов с NVIDIA H100, до 260 петафлопс.

Отдельно есть login-узлы. Это «входная точка», где можно только подготовить задачи, но не запускать тяжелые вычисления.

Без интернета и с жесткими правилами

Работа с суперкомпьютером резко отличается от привычного девелопмента:

  • у вычислительных узлов нет доступа в интернет;
  • все данные нужно заранее загрузить через SSH;
  • есть лимиты на CPU-часы и количество задач;
  • у каждой задачи жесткий тайм-лимит (так что если его превысить, то процесс будет убит).

Результаты тоже нельзя смотреть «вживую» — вывод сохраняется в лог-файлы, которые анализируют после выполнения.

Все решает планировщик

Запуск кода идет не напрямую, а через менеджер задач SLURM. Разработчик пишет bash-скрипт с параметрами — сколько узлов нужно, сколько процессов, сколько времени.

Дальше система сама ставит задачу в очередь, выделяет ресурсы и запускает код.

Так, автор прогнал 50 CFD-симуляций подряд, связав их в цепочку зависимостей. За ночь суперкомпьютер обработал все данные, которые потом пошли в обучение ML-модели.

Ограничение, о котором забывают

Даже на суперкомпьютере нельзя бесконечно ускорять код. Все упирается в Закон Амдала: если часть программы нельзя распараллелить, она становится узким местом.

Даже 5% последовательного кода ограничивают максимальное ускорение примерно в 20 раз — сколько бы ядер ни было.

Кроме того, слишком большое число потоков увеличивает накладные расходы на обмен данными. И это тоже может замедлить выполнение.

Квантовое ускорение

Интересная деталь: MareNostrum V уже интегрирован с квантовыми системами. 

Они используются как ускорители для задач оптимизации и квантовой химии — там, где даже GPU не справляются.

Соцсети: Юлия Зубарева
Вам может быть интересно
easy