Как я провёл второе соревнование по программированию на Эльбрусах (e2k) «Кубок СЭРПАС 2026»

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Здравствуйте, друзья, меня зовут Ерохин Кирилл, я популяризатор российского программного и аппаратного обеспечения, и в этом сентябре я провёл уже второе, теперь ежегодное, соревнование по алгоритмическому программированию на отечественных аппаратных платформах «Кубок СЭРПАС 2026», собрав 112 участников со всей России, результатами которого пришлось поделиться с вами. А Хабр мне в этом поможет, ему не впервой.

Перед тем как мы с тобой, дорогой читатель, продолжим дальше, очень важно озвучить то, что я упоминал в материале о предыдущем соренвовании и отвечал будущим участникам ещё первого соревнования на вопрос «Зачем тебе это?» (который следовал сразу за вопросом «Откуда у вас мой контакт?»): «Кто‑то BMW новые тюнингует карбоном, кто‑то любовниц заводит и на Бали возит, а я „Эльбрусы" покупаю себе и соревнования провожу. Просто мне это нравится, и добавить к этому нечего <…> Это, в свою очередь, не означает, что я, как полоумный, вопреки здравому смыслу, пользуюсь везде и во всём только „отечественным", действуя по принципу „в каждой бочке затычка". Но непосредственный фокус моих публичных изысканий будет направлен именно на то, что разработано или произведено людьми, с которыми я родился и живу в одной стране»

Оглавление:

  • Предыстория, которую можно пропустить

  • Подготовка к соревнованию

    • Поиск и выбор онлайн платформы

    • Расширение аудитории

    • «Железа» много не бывает

  • Формат соревнования

  • Защита решений

  • Задачи

  • Открытие регистрации и подготовка к старту

  • Отборочный этап

  • Защита решений

  • Финальный этап

  • Финал

  • Что дальше?

Предыстория, которую можно пропустить

Многие наверняка незнакомы с моей прошлогодней деятельностью, поэтому материал про проведение предыдущего соревнования «Кубок СЭРПАС Осень 2025» всегда к твоим услугам. Если кратко, то в прошлом 2025 году я собрал студентов технических вузов и провёл первое соревнование по алгоритмическому программированию на C/C++ на процессорах архитектуры Эльбрус (e2k), перед этим лично купив и пощупав материнку с Эльбрус-8СВ на борту.

Мероприятие получилось во всех отношениях успешным:

  • 31 активный участник со всей России, и это на такую специфическую тему, да ещё от noname организатора;

  • Появился статистический срез, пусть и микроскопический, про осведомлённость студентов в возрасте от 18 до 24 лет на тему Эльбрусов (e2k);

  • МЦСТ обратило внимание на мою самодеятельность, и на этот год мне удалось договориться о стажировке в МЦСТ для победителя соревнования;

  • Появилась точка отсчёта жизни созданного в том числе для проведения соревнования АНО «СЭРПАС» и, что важнее, его медийного следа.

А если мероприятие получилось успешным, почему бы его не повторить?

Подготовка к соревнованию

Материнская плата сервера соревнования «Кубок СЭРПАС Осень 2025»
Материнская плата сервера соревнования «Кубок СЭРПАС Осень 2025»

Фактически, подготовка к соревнованию этого года началась сразу после завершения предыдущего. Уже во время проведения «Кубка СЭРПАС Осень 2025» с 31 активным участником стало очевидно, что я, как и сервер с одним процессором Эльбрус-8СВ, работал на пределе возможностей. Поскольку доступ к серверу предоставлялся участникам напрямую по SSH, мне приходилось в режиме 24/7 с перерывами на сон администрировать и решать проблемы с подключением, настройками сервера, багами ПО для контрольных прогонов решений участников и т. д. Поэтому вопрос устранения этого бутылочного горлышка был первостепенным.

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

Решение проблем с двумя узкими местами, упомянутыми выше, автоматически открывало третье: На чём запускать решения увеличившемуся количеству активных участников (а я уже грёзил о нескольких сотнях)? Способ решения проблемы с «железом» был самым понятным, его нужно купить (лол), очевидно, Б/У на вторичном рынке, что добавляло огромный половник дёгтя в эту бочку мёда под названием «подготовка к Кубку СЭРПАС 2026». Стоит заметить, что объявления о продаже Б/У плат с распаянными на них процессорами (по другому не бывает) в хорошем состоянии появляются на соответствующих площадках, но нерегулярно. Сложно что-то планировать, не зная, когда точно и что конкретно удастся купить. С другой стороны, и на моём текущем Эльбрус-8СВ сервере можно было вытянуть и большее количество участников, пришлось бы немного поколдовать с системой очерёдности прогонов участников, но это было вполне решаемо.

При этом, окрылённый успешным завершением соревнования, я планировал проведение второго соревнования уже весной следующего 2026 года (отсюда и «Осень» в названии первого соревнования). К счастью, достаточно быстро после общения с кандидатами на участие стало очевидно, что весной их уже не собрать, у студентов четвёртых курсов бакалавриата и вторых курсов магистратуры защита дипломов на носу и вообще новогодние праздники короткие, это вам не лето. В общем, точно не до соревнований 3-го эшелона. Поэтому первая половина сентября так и осталась наиболее оптимальным периодом для проведения следующего соревнования.

Поиск и выбор онлайн платформы

Очевидно, что для снижения порога вхождения в соревнование от схемы с прямым подключением к моему серверу по SSH нужно было отказываться в пользу чего-то более простого и удобного, как минимум для отборочного этапа (многие участники ранее сетовали и на SSH, и на удалённую отладку через gdb).

Онлайн-компилятор С++ SilverTests.ru
Онлайн-компилятор С++ SilverTests.ru

Ещё во время подготовки к первому соревнованию мысль про онлайн-компилятор (это когда в вебформе пишешь код, нажимаешь запустить и тебе отображается консольный вывод) приходила в голову, но только на мгновение. Тогда, для первого соревнования, было совсем не до таких сложных систем, хватило в итоге и простых SSH-подключений, но сейчас использование подобной системы выглядело оправданным. Самостоятельно писать с нуля такой сервис было бы слишком амбициозно и накладно, поэтому очевидным решением был поиск уже существующих российских сервисов с подобной технологией, онлайн-площадок для проведения ИТ-соревнований.

Долго отсеивать и искать наши площадки не пришлось, шортлист достаточно быстро был готов (благо было из чего выбирать). Codeforces, Yandex.Contest, Codenrock и All Cups. Первый кандидат в лице знаменитого и всеми уважаемого Codeforces не подходил изначально. Он всем прекрасен за исключением важного для меня требования. Участник должен иметь возможность писать код прямо в браузере (странице), там же запускать и видеть результаты прогонов и, что самое важное, скорость решений и количество использованной его решением памяти, поскольку для соревнования и системы оценок его участников эти характеристики являются ключевыми.

После относительно непродолжительного общения с Yandex.Contest и All Cups стало очевидно, что они тоже не подходят. Их представители достаточно оперативно отвечали и охотно шли на контакт, но после изучения сути моего обращения и консультаций со своими командами инженеров ответ у обоих был отрицательным, что в целом с оглядкой назад можно назвать вполне ожидаемым. Обе площадки авторитетные, технически развитые и проводят разные мероприятия, но всё же технически завязаны на свою инфраструктуру и в первую очередь ориентированы на решения задач своих материнских компаний, Яндекса и VK соответственно. История про Эльбрусы и необходимость их программной интеграции в существующий бэкенд очевидно получала ожидаемый ответ. Такие махины не будут ради меня одного и моего соревнования заниматься портированием своего программного стека на Эльбрус (e2k), всё-таки корпоративные задачи приоритетнее. Стоит заметить, что на их месте я принял бы аналогичное решение.

История же с платформой Codenrock закончилась неожиданно хорошо. Как выяснилось позже, они и сами ведут регулярную рубрику «Сделано в России» со своим дайджестом новостей из мира ИТ, науки, космоса и технологий, собирая главные российские технологические достижения, релизы ПО и новости импортозамещения. Поэтому долго уговаривать их адаптировать свой программный стек под проведение отборочного этапа соревнования по программированию на российских Эльбрусах (e2k) не понадобилось. Тем более что общаться мне пришлось не с менеджерами, а непосредственно с создателями платформы. Поэтому после получения согласия на помощь в проведении отборочного этапа и завершив уточнение технических нюансов их словами «энтузиастам надо помогать», вопрос с платформой проведения и устранением высокого порога вхождения для участников был решён. Конечно, само портирование их бэкенда на мои e2k-серверы (чтобы интегрировать их в систему прогона решений) произошло гораздо позже, в июне-июле следующего года, и этому, наверное, стоит посвятить отдельный материал, всё-таки ребята не взяли с меня ни копейки, хотя занимались и портированием, и решением кучи технических шероховатостей, возникавших уже в ходе отборочного этапа в ходе прогонов решений участников, решая всё очень быстро, практически в круглосуточном режиме.

Расширение аудитории

Конечно, задача наращивания количества участников в техническом плане была самой простой и очевидной, а с другой стороны была самой монотонной, поскольку требовала почти каждодневного вовлечения, пусть и не постоянной, но регулярной перепиской и поиском вплоть до старта соревнования. Никто, кроме меня, не будет ловить в подворотнях агитировать за участие в соревновании.

Первое, что приходило на ум, это аудитория спортивного программирования, знакомые всем, кто хотя бы немного интересовался этой темой, ICPC и IOI. Хотя в последний год, конечно же, набрали невероятную популярность мероприятия с префиксом «AI»: AI-хакатоны, AI-челленджи, AI-чемпионаты и т. д.

Надо снять шляпу перед самоорганизованностью и публичностью как студентов, так и преподавателей. Информации и контактов в сети, в профильных VK-группах и сайтах университетов, достаточно, только руки протяни. В этом году, имея за спиной уже проведённое соревнование и, что не менее важно, его медийный след в интернете, задача агитации была куда проще, чем год назад, когда приходилось писать потенциальным участникам, имея за душой максимум полупустую группу соревнования в VK. В этом году с готовым сайтом, наполненными соцсетями и, конечно же, статьёй на Хабре (закреплённой в описании профиля в Telegram) всё было куда проще и убедительнее.

Конечно, это не означало, что в сообществе спортпрога меня все ждали с распростёртыми объятиями, но свою долю новых участников и заинтересовавшихся в целом темой мне удалось найти, правда, растянулся процесс общения и агитации практически вплоть до старта отборочного этапа в августе.

«Железа» много не бывает

Очевидно, что при увеличении количества активных участников нужно было бы подтянуть и мощности, на которых участники будут решать задачи и делать прогоны решений (кода). Однако вопрос увеличения парка компьютеров на Эльбрусах в сообществе энтузиастов никогда не был праздным. Конечно, ситуация уже не та, что была 10 лет назад, но всё же в интернет-магазине электроники материнки с Эльбрусами за приемлемые для рядового обывателя цены не купишь. Поэтому единственным лучиком надежды, как и всегда, оставались площадки Б/У товаров, в первую очередь электроники.

К счастью, 2026 стал особым годом в этом вопросе, поскольку именно в его первой половине на рынок начали поступать Б/У материнские платы с процессорами и памятью (одним комплектом!), по всей видимости, выводимые из эксплуатации большими окологосударственными компаниями из области ИТ и телекома (они, кажется, до сих пор доступны на всем известной площадке). Было ли это плановое списание оборудования, отслужившего свой срок службы, или же ещё какие-то перипетии судьбы, но сообщество энтузиастов с Эльбрусами дома значительно прибавило, и я надеюсь, это неотвратимый тренд, время идёт, а сроки службы у корпоративного оборудования не увеличиваются.

Сервер на базе 1Э8СВ-uATX с Эльбрус-8СВ на борту в процессе сборки
Сервер на базе 1Э8СВ-uATX с Эльбрус-8СВ на борту в процессе сборки

Так ко мне попали две материнские платы MicroATX «1Э8СВ-uATX» с распаянными процессорами Эльбрус-8СВ, что с учётом создания на платформе Codenrock механизма живой очереди значительно облегчало осуществление прогонов участников будущего соревнования. Платы идеально подходили для сборки 1U серверов. Стандартный типоразмер матрицы MicroATX позволял быстро найти нужный корпус и прочие мелочи, чтобы собрать рабочие серверы для старта.

Однако на этом история не закончилась. В мае мне написал один из участников первого соревнования, переслав информацию о ликвидации складских висяков остатков у одной из наших крупных разработчиков серверных решений, среди которых были две 4Э8СВ‑MSWTX с 4 процессорами Эльбрус-8СВ и 16 слотами памяти DDR4 каждая, в общем, уже взрослые серверные решения. И, что куда важнее, за такую низкую цену, что её до сих пор неприлично ни писать нигде текстом, ни озвучивать вслух. По этой причине решение о выкупе было молниеносным, хотя стоит заметить, что на этом расходы не закончились, поскольку материнские платы были уже серверными (большими), да ещё специального форм-фактора MSWTX (будет чуть больше SSI-MEB), для которого нужно было ещё постараться найти подходящий корпус в лице Supermicro CSE-828TQ-R1400LPB. В другой корпус они просто бы не встали.

Материнская плата с распаянными процессорами 4Э8СВ‑MSWTX в корпусе CSE-828TQ-R1400LPB
Материнская плата с распаянными процессорами 4Э8СВ‑MSWTX в корпусе CSE-828TQ-R1400LPB

Для этих материнских плат были, конечно же, и родные корпуса, разработанные специально под них, но очевидно, это не товарные позиции, которые всегда есть в наличии, поэтому пара подходящих корпусов Supermicro оставалась единственным рабочим вариантом, который я относительно быстро нашёл, и собрал всё вместе с Б/У оперативной памятью воедино (это, конечно, я так коротко описал «собрав всё вместе», опустив факт того, что помогали это делать более опытные и компетентные в области сборки и настройки серверов товарищи из сообщества и МЦСТ).

В итоге на финишную прямую перед стартом соревнования в виде лета я вышел с четырьмя серверами на базе Эльбрус-8СВ, двумя однопроцессорными системами и двумя четырёхпроцессорными, оставив первую пару для отборочного этапа, а вторую для прямой работы финалистов через SSH, чтобы могли новыми собственными руками пощупать NUMA.

Формат соревнования

Способ квалификации участников на отборочном этапе и определения победителя в финале я оставил без изменений, всё как в прошлом сентябре. На отборочном этапе участники решают 3 алгоритмические задачи, по результатам решений которых они ранжируются в трёх рейтинговых таблицах, для каждой задачи получая в каждой количество баллов, эквивалентное количеству участников, оказавшихся в рейтинге хуже (ниже). Потом все результаты объединяются в итоговую рейтинговую таблицу отборочного этапа, откуда выбираются от 8 до 16 участников (в зависимости от того, сколько вообще участников будет претендовать на выход в финальный этап).

В финале также всё осталось без изменений (за исключением добавления нижней сетки, фактически превращающей финал в double elimination) со всем уже знакомым плей-офф до двух побед подряд. Стоит заметить, что изюминкой финального этапа соревнования является собственно сама задача финала, её условия и формат, которых мы уже касались год назад, а в этом материале вернёмся к ней чуть позже.

Стоит напомнить, что важным отличием соревнований серии «Кубок СЭРПАС» от традиционных соревнований по спортивному программированию является фокус как на скорости, с которой программы (код) участников решают задачи, так и на эффективности использования ОЗУ. Поэтому ключевой характеристикой, используемой для ранжирования участников в решении задач, является мой доморощенный коэффициент эффективности, который отражает простой принцип «10% прироста скорости стоит не более 20% увеличения потребления памяти» и рассчитывается по следующей формуле:

E(t, m) = \left( \frac{t}{T} \right)^{\alpha} \times \left( \frac{m}{M} \right),\alpha = \frac{\ln 1{,}2}{\ln \dfrac{1}{0{,}9}}

где:

  • t — время, потраченное программой на решение задачи;

  • m — пиковый размер памяти, использованный программой в ходе решения;

  • T — максимально допустимого времени решения задачи;

  • M — размер памяти, разрешённый для использования программой.

Если у тебя, уважаемый читатель, есть, как ты считаешь, более справедливый метод определения и расчёта эффективности работы кода, то прошу тебя, непременно поделись им со всеми в комментариях.

Защита решений

Отдельной нитью сквозь всё соревнование шла тема нейронных сетей и их использования. Напомню, что у нас удалённый (онлайн) формат соревнования, и использование нейронных сетей не запрещено, в первую очередь из-за технической возможности такой запрет соблюсти. Я думаю, ни для кого не секрет, что за последний год и уровень развития передовых нейронок, и собственно их проникновение как минимум в жизнь ИТ-специалистов побили все рекорды. И это прекрасно прослеживается сквозь время на наших соревнованиях. Если на первом соревновании «Кубок СЭРПАС Весна 2025» в сентябре прошлого года всего пара участников использовала нейронные сети и то в режиме консультации в чате, то в этом году количество участников, практикующих агентное программирование, оркестрирование и прочие передовые и жутко модные инструменты, пробило все разумные пределы, влетев с обеих ног в отборочный этап и принявшись решать три задачи отборочного этапа на платформе Codenrock.

Конечно, к такой ситуации я был готов заранее, подготовив процедуру защиты решений, проходящую в 2 этапа, первый при переходе участника из отборочного этапа в финальный, и сразу после завершения финального этапа перед контрольными прогонами решений участников во время live-стрима.

Процесс защиты одного из участников
Процесс защиты одного из участников

Сама процедура защиты решений была незамысловата. Человек, успешно решивший все 3 задачи отборочного этапа, мог подать заявку на участие в финальном этапе и зарезервировать день и время защиты. В назначенное время мы созванивались с участником по видеосвязи, участник снимал себя на вебкамеру и одновременно стримил свой рабочий стол, а я задавал ему несколько вопросов по коду его решений. Изначально мы хотели задавать по 12 вопросов каждому участнику, но после первой же защиты (самой спешной, замечу) стало очевидно, нужно урезать, иначе защиты займут бесконечность. В итоге остановились всего на 3 вопросах по каждой задаче, суммарно 9. Ограничения по времени защиты не было (не хотели, чтобы над участником было давление). Пользоваться нейронками и мессенджерами было нельзя, равно как и запускать код. Всё остальное было можно, вплоть до пользования поисковыми системами (никому не помогло в итоге). Итоговая обезличенная запись с транскрибацией передавалась двум судьям, роль которых в этом году исполняли:

  • Артур Ханов, старший преподаватель кафедры системного программирования математико-механического факультета СПбГУ и факультета безопасности информационных технологий ИТМО;

  • Сергей Алфёров, кандидат технических наук, доцент кафедры автоматизированных систем управления ТУСУР.

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

Задачи

Благодаря опыту прошлого года особых трудностей подготовки трёх задач для отборочного этапа не было. Задачи, конечно же, специально готовились с учётом особенностей архитектуры Эльбрус (5-го поколения), чтобы участникам было что ускорять и оптимизировать. В этом году я постарался сделать задачи не голой математической абстракцией, а приблизить их к реальным задачам, с которыми участники могут столкнуться в будущем (если в этом будущем нейронки хоть что-то оставят нам в области программирования и оптимизации). Посмотреть условия всех трёх задач можно вот тут.

Задача же финала в этом году фундаментально отличалась от таковой в прошлом. Имея гораздо больший запас по времени и уже значительно развившиеся нейронки, мне удалось реализовать задумку с задачей коммивояжера поиска пути на общей карте (лабиринте) в режиме 1 против 1, которую в прошлом году реализовать я просто не успел. Фактически данная задача может быть названа дуэлью решений двух участников по сети (локальной в первую очередь).

Сгенерированная карта (лабиринт) с контрольными точками (в темных ячейках можно разглядеть номера задач)
Сгенерированная карта (лабиринт) с контрольными точками (в темных ячейках можно разглядеть номера задач)

Даётся квадратное поле, заполненное свободными для передвижения клетками и стенами, на и через которые передвигаться, очевидно, нельзя. Более того, поскольку карта для каждого участника изначально скрыта, то ему придётся фактически разведывать её по ходу прохождения лабиринта с радиусом обзора в 8 клеток (благо уже открытые участки карты не закрываются). Участники начинают в противоположных углах лабиринта, верхнем левом (A) и правом нижнем (B), и каждому участнику в реальном времени (имеется в виду, что весь процесс не пошаговый, как шахматы) нужно дойти до точки старта оппонента, предварительно пройдя через 3 контрольные точки, расположенные в нижнем левом (L) углу, центре (C) и правом верхнем углу (R), причём проходить L и P можно в любой последовательности, но между ними всегда нужно посетить C (считай середина маршрута). Побеждает тот, кто первым доберётся до своего финиша (считай точки старта оппонента). Причём для обеспечения равных условий для обоих участников верхняя часть лабиринта фактически копировалась, переворачивалась на 180° и становилась нижней половиной лабиринта.

Казалось бы, всё просто, делаем банальный алгоритм поиска пути. Но есть нюанс, который всё делает интересным и не таким тривиальным, а точнее их даже два:

  • Каждая свободная клетка лабиринта это 1 из 3 задач отборочного этапа и чтобы передвинуть на неё своего персонажа программе участника нужно решить соответствующую задачу. Причём участникам в финале было запрещено изменять (улучшать) свои решения задач отборочного этапа, что нарешали в отборочном этапе с тем и работаем. Такая постановка задачи фактически изначально идентичные для обоих участников оптимальные маршруты между контрольными точками лабиринта делает разными для каждого участника (сохраняя при этом изначальную одинаковую геометрию лабиринта) за счёт того, что решает каждый участник каждую из 3 задач (фактически передвигается по клеткам) с разной скоростью;

  • Учёт эффективности вычислений участников никуда не делся. Да, использовать коэффициент эффективности из отборочного этапа смысла никакого уже не было. Мы тут никакие результаты не сортируем, а наперегонки бегаем, лабиринт же. Поэтому в задаче финального этапа было введено понятие стана (от английского stun, оглушать). На протяжении всего маршрута участника при каждом его перемещении (шаге) рассчитывалось и накапливалось время стана по принципу, аналогичному таковому в формуле расчёта коэффициента эффективности, для того чтобы, достигнув очередной контрольной точки (включая финиш), оглушить персонажа участника на накопленное время. Время стана, конечно же, по истечении этого времени обнулялось, и персонаж участника спокойно переходил на нужную клетку. Это гарантировало, что участники не будут злоупотреблять оперативной памятью в финале и будут приучаться бережно к ней относиться, расходуя с умом. Видели, сколько сейчас стоит плашка DDR5? То-то и оно!

Открытие регистрации и подготовка к старту

Страница отборочного этапа соревнования на Codenrock
Страница отборочного этапа соревнования на Codenrock

Публично открытие предварительной регистрации на отборочный этап соревнования произошло 1 июля 2026 года. Конечно, под это дело был подготовлен специальный лендинг, страница на сайте, сделаны анонсы в социальных сетях сообщества (Телеграм, ВКонтакте, Max) и наших друзей, а главное произошло открытие страницы соревнования на площадке Codenrock, предварительно наполненной всей информацией для участников, начиная от краткого описания и регламента и заканчивая разделом с ответами на вопросы.

Конечно, простыми анонсами и открытием профильных страниц я не ограничился. Поскольку в этом году и времени на подготовку было больше, и сам уровень мероприятия надо было поднять выше, был подготовлен материал для участников соревнования с детальным разбором решения и оптимизации тренировочной задачи «Оптимизируем код решения СЛАУ методом Гаусса под процессор Эльбрус‑8СВ», опубликованный тут же на Хабре.

Помимо этого, участники могли зайти в соответствующий раздел Codenrock и там изучить сам процесс отправки решения тренировочной задачи и собственно там же эту задачу попробовать решить, что я всем настоятельно и рекомендовал.

Промежуточный итог по зарегистрировавшимся участникам был такой. Всего зарегистрировалось на соревнование 296 участников из 49 городов, 38 регионов и 90 учебных заведений России.

Напомню, что участвовать в соревновании могли граждане России в возрасте от 18 до 24 лет включительно. В целом и любые другие люди могли спокойно регистрироваться и участвовать в отборочном этапе, но их результаты всё равно в официальную статистику не попадали, и выйти в финал они не могли.

Поэтому уважаемому и единственному участнику из Казахстан (Алматы): «Бауырыму, қатысуың үшін рақмет!»

Отборочный этап

Старт отборочного этапа произошёл 31 августа 2026 года в 00:00 по московскому времени. Конечно, на фоне прошлого года, когда мне почти в ручном режиме надо было администрировать участников, их подключения, делать паузы и делать чистовые прогоны решений, проведение отборочного на онлайне платформы Codenrock было сродни пересадке с велосипеда на самолёт в путешествии из Владивостока в Москву, поначалу даже оторопь брала от того, что мне ничего не надо делать (будто я что-то забыл). Но к хорошему быстро привыкаешь.

Итоговая рейтинговая таблица отборочного этапа соревнования «Кубок СЭРПАС 2026»
Итоговая рейтинговая таблица отборочного этапа соревнования «Кубок СЭРПАС 2026»

В ходе этапа я намеренно не публиковал конкретные результаты участников, указывая лишь никнеймы участников и их абсолютные позиции в соответствующих таблицах, чтобы не демотивировать участников в их нижних половинах. Это было особо важно, поскольку по сути абсолютные позиции в отборочном этапе до момента защиты решений ничего не значат. Можно было нейронками решить все задачи, заняв первые места по всем задачам с большим отрывом от остальных, но не пройти защиту (по результатам ответов или просто не участвуя в ней), о чём я постоянно напоминал всем участникам и как в итоге оказалось, не зря. При старте процесса защиты решений из верхней четверти рейтинга отборочного этапа вылетело огромное количество «топовых» участников.

Промежуточный итог по отборочному этапу был такой. Всего активных участников было 112 человек из 29 городов, 23 регионов и 45 учебных заведений России, при этом:

  • 112 участников приступили к решению задач;

  • 80 участников решили хотя бы 1 задачу из 3;

  • 53 участника решили хотя бы 2 задачи из 3;

  • 46 участников решили все 3 задачи отборочного этапа;

  • 16 участников подали заявки на участие в финале.

Подробные результаты (таблицы) отборочного этапа можно изучить в соответствующем разделе страницы соревнования на платформе Codenrock.

Защита решений

По итогу отборочного этапа на защиту подало всего 16 (!) из 46 участников отборочного этапа, у которых такая возможность была. Остальные просто решили не защищать решения и, соответственно, в зачёт отборочного не попадать (их имена до сих пор остаются скрытыми).

Сама защита проходила, как я полагаю, обыденно, поскольку я сам никогда ранее никакие защиты не принимал ни в каком видео. Вот так вот почувствовал себя учителем старшей школы или преподавателем университета. Хотя стоит заметить, что правильных ответов я не знал, я благоразумно и политически верно эту задачу переложил на наших судей, а сам занимался сугубо механической и административной работой, принимал защиту, проконтролировав соблюдение правил и запись материала для судей.

Но общие наблюдения, конечно же, любопытные:

  • Корреляция итоговой защиты и места, с которого участник выходил на неё из рейтинга отборочного этапа, достаточно слабая. Это важно, поскольку оценка за защиту становится коэффициентом, который корректирует итоговую оценку. Яркий пример, участник, занимавший 1 место в итоговом рейтинге отборочного этапа и сместившийся до 5 места по результатам защиты и корректировки итоговых баллов;

  • В подавляющем большинстве случаев уже на втором вопросе по тому, как участник на него отвечает, становится понятен конечный результат, но были, конечно, и исключения.

По результатам защиты решений в финал вышли 9 из 16 участников.

Финальный этап

Сейчас нужно сделать мелкую ремарку для любимого читателя относительно нашей терминологии, чтобы потом не запутаться:

  • Финальный этап это период с 28 сентября по 4 октября включительно, в течение которого финалисты решают финальную задачу;

  • Финал это процесс контрольных прогонов решений участников во время видеострима всему свету на потеху, во время которого и определяется расстановка финалистов на пьедестале почёта.

Как и в прошлом году, участникам предоставлялся прямой доступ, но уже к двум новым серверам на базе 4-процессорных модулей 4Э8СВ‑MSWTX, позволявших давать на решение финалиста 31 ядро процессоров Эльбрус-8СВ. Конечно, история просто дал SSH и забыл тут не работала. Помимо очевидных ограничений и настроек безопасности как локальной сети, в которой стояли серверы, так и настроек ОС самих серверов (Linux), чтобы участники, для которых создавались отдельные учётки, не могли наделать делов как по незнанию, так и по знанию (form bomb, disk fill attack, OOM Confusion, log flooding и т. д.), была ключевая составляющая ПО для запуска прогонов задачи финала. Хотя признаться, просто обобщённое название ПО тут уже не подходило, скорее программный комплекс, состоящий из:

  • сервера, готовившего карту лабиринта, входы задач и эталонные ответы, проверявшего ответы и определявшего результат матча;

  • менеджера вычислительного узла с двумя очередями, тренировочной на 31 ядро и отладочной, с 10 минутами на слот и gdbserver для внешнего GDB;

  • консольного интерфейса участника и судьи, выбор .so, заявка пробелом, отображение карты и информации, очередь, тот самый стан, а для судьи запуск пар участников и смена сторон;

  • процесса-загрузчика, подгружавшего библиотеку решения и связывавшего её SDK с комплексом.

Для финалистов серверная часть располагалась на одном сервере 4Э8СВ‑MSWTX, а исполнение решений на втором. Участнику оставалось залить .so-библиотеку по SSH в специальный каталог, поставить прогон в очередь и наблюдать, как его персонаж бежит по лабиринту, при необходимости отлаживая код и анализируя потребление ресурсов.

В судейском прогоне же решения финалистов запускались на двух четырёхпроцессорных серверах одновременно, по 31 ядру Эльбрус-8СВ на нос, фактически создавая сетевую дуэль на одной карте со сменой точек старта персонажей участников как на карте (у нас же серия до 2 побед подряд), так и на самих серверах. Хоть серверы и были полностью идентичными как с аппаратной, так и программной точки зрения, для чистоты прогонов серверы, на которых запускались решения оппонентов, менялись местами. Фактически решения финалистов бились друг с другом в прямом эфире стрима.

Финал

Как ни парадоксально, прошлогодний стрим финала при всей своей простоте (никакой тебе инфографики во время стрима), да и стримил я тогда впервые в жизни, прошёл куда более гладко, чем стрим финала в этот раз. В этом году стрим постоянно преследовали технические накладки и проблемы, поэтому даже пришлось перенести время проведения стрима с вечера воскресенья 11 октября (так усердно мною распиаренного) на вечер следующего дня, что, конечно, не могло не отразиться на количестве зрителей. Да и во время стрима постоянно возникали проблемы со звуком.

Обязательно посмотрите запись стрима финала соревнования, хотя бы её последнюю часть с финалами участников. Специально залил на все доступные видеохостинги для удосбства:

Youtube

VK Видео

Rutube

Kinescope (без рекламы)

Верхняя сетка (победителей) финального этапа соревнования
Верхняя сетка (победителей) финального этапа соревнования

Как бы то ни было, я остался всем процессом доволен, как я надеюсь, и зрители. На этот раз решил обойтись без ликбеза по теории и практике Эльбрусов (e2k), больше уделив времени отборочному этапу, объяснению правил и сути задачи финала и собственно самим прогонам, которые заняли неожиданно много времени (надо было, конечно, первые прогоны 1/8 финала сделать заранее, начав сразу с 1/4 финала).

Призёрами и победителем этого года стали:

1. Александр «verstappen21» Схрейдер, РТУ МИРЭА'28, магистр, 241 000 ₽

2. Ксения «meowmeow» Шкулева, НИУ ВШЭ'28, бакалавр, 98 000 ₽

3. Иван Ларин, МФТИ'27, бакалавр, 67 000 ₽

4.  Софья Лылова, НГУ 

Но, несмотря на то, что пьедестал могут занять всего 3 человека, я благодарен и признателен каждому участнику, потратившему своё время на решение задач, и просто за то, что обратили внимание на соревнование.

Для всех активных участников это был огромный труд, уйма времени и сил. В том числе и психологических. Проходить защиты в режиме онлайн по видеосвязи то ещё «удовольствие».

Также я не могу не поблагодарить ребят, которые «пиарили» соревнование в своих соцсетях:

  • Максима «imaxai» Горшенина и его канал imaxairu;

  • Ребят из PRO Hi‑Tech и их канал prohitec;

  • Ребят с из Elbrus PC Play и их канал elbrus_pc_test;

  • Сообщество Русский процессор «ЭЛЬБРУС» и их группу elbrus_mcst;

  • Антона «@toxblh» Палгунова и его канал toxblh_linux и проект PLAFON;

  • Рената Шайдулина за помощь в сборке и настройке серверов;

  • Сообщество «Эльбрус Дома».

    Что дальше?

    А дальше будет следующий проведение интересной работы победителем соревнования с процессором Эльбрус-2С3 результаты которой я непременно опубликую тут и ещё много новостей от сообщества энтузиастов собравшегося вокруг Эльбрусов. Ну и конечно же «Кубок СЭРПАС 2027». Готовиться уже можно начинать, по крайней мере морально.

NM Quad
NM Quad

P. S. В этом году у меня не получилось сделать отдельную дисциплину для DSP-ускорителей NM Quad, хотя это планировалось ещё с октября прошлого года, но, увы, времени банально не хватило вывезти всё в параллель с Эльбрусами. Хотя в апреле этого года я помогал ребятам из кафедры провести контест «СипросПро 2026» в рамках научной конференция «СПИСОК-2026».

И нет, проживание на Эльбрусе не оплачивается.


Не забудьте подписаться на Телеграм, ВКонтакте и, прости господи, Макс сообщества СЭРПАС.

Источник: https://habr.com/ru/articles/1098736/


Интересные статьи

Интересные статьи

Привет, Хабр!Мы продолжаем цикл статей по работе с пока еще малознакомым многим битрикс-разработчикам инструментом оперирования данными с CRM Битрикс24 через абстрактные фабрики, как с помощью обработ...
Всем привет, снова на связи СЕО CRM-интегратора Пуск, Сергей Михнов. Хочу поделиться опытом команды о доработках коробочного Битрикс24.Сразу скажу, это не реклама коробочной версии или Битрикс24 в при...
У нас был сложный сайт с личным кабинетом клиентов, устаревшая, переписанная 1С-ка, десяток маркетинговых сервисов, и телефония на Asterisk.Единственное, что вызывало у меня опасение — это учётная сис...
Привет! Я работаю в строительстве ЦОД вот уже 13 лет. Одна из главных моих задач — обеспечить ЦОД необходимыми средствами защиты от разных напастей. Ситуации случаются разные, о самых распростра...
В настоящее время, как некоторые из вас могли заметить, достаточно часто происходят различные события меняющие уклад жизни, например эпидемия covid-19 или какие либо иные исторические события, которое...