Студенческие суперкомпьютерные соревнования: инструкция по применению |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2017-10-26 07:26 Привет, Хабр! Я капитан команды СПбГУ, принимавшей участие в соревнованиях ASC. На прошлой неделе вышла статья stealapanda об опыте работы с мощнейшим суперкомпьютером мира Sunway Taihulight. Стало ясно, что многие впервые слышат о таком мероприятии. В своей статье я хочу рассказать в целом об HPC соревнованиях, как они проводятся и какие навыки пригодятся если вы захотите вписаться в эту увлекательную авантюру. Также на примере ASC опишу как это все проходит.
Что такое HPC соревнования и чем они отличаются от обычного спортивного программирования HPC-соревнования — соревнования студенческих команд по решению задач с использованием вычислительных кластеров. Многие знают соревнования по спортивному программированию, проводящиеся по правилам ACM ICPC поэтому для удобства буду вести сравнение с ними. В соревнованиях ACM ICPC решение сводится к написанию алгоритма, который решает задачу в рамках заданных ограничений по времени и памяти. Нужно понять какой алгоритм подходит для решения задачи и как можно быстрее его закодировать. В HPC соревнованиях вам не придется читать увлекательные тексты задач, пытаясь понять какой алгоритм в них спрятан. Зато вас ждет встреча с консолью Linux, многолетним legacy кодом научных приложений и новейшими технологиями (да-да, все вместе), технологиями параллельного и многопоточного программирования и планировщиками запуска задач.Вместо написания деревьев и сортировок с закрытыми глазами придется освоить скоростное написание make файлов, выучить флаги компиляции и подружиться с vim, ssh и screen. Ограничений на количество участий одного и того же человека, как в соревнованиях ACM ICPC я не встречала. Сейчас в мире проводятся 3 таких соревнования: ASC, ISC, SC. Основное их отличие — место проведения. Правила и набор задач во многом схожи. Отдельно можно выделить лишь китайцев (ASC), которые проводят предварительный отборочный тур с решением задач и предоставляют оборудование командам в финале и, для некоторых заданий, также дают доступ к вычислительным ресурсам во время отборочного тура. На ISC и SC нет предварительного отборочного этапа с задачами. Команды отбираются на основе заявок с описанием конфигурации кластера, который команда собирается использовать на соревновании и релевантного HPC тематике опыта участников команды. Во всех 3 соревнованиях награждают за лучший Linpack (один из тестов, используемых для определения вычислительной мощности суперкомпьютеров) и за наибольшую сумму баллов по всем задачам. Теперь расскажу немного про каждое из соревнований. ASC (Asian Supercomputer Challenge). Организуются Китаем, основной спонсор — компания Inspur. В 2012 это соревнование проводилось только для Китайских команд, с 2013 года вышло на международный уровень. Засчет наличия спонсора и предварительного этапа отбора является самым массовым. С 2013 по 2017 год число команд участниц выросло с 43 до 230. Квота на проход в финал за это время увеличилась с 10 до 20 мест. Первый этап (preliminary contest) проводится заочно в течение двух месяцев, с января по март. По результатам первого этапа выбираются команды, которые приглашаются для очного участия в финале в конце апреля. Низкий порог вхождения определяется не легкостью задач, а тем, что для участия вам не нужно какое-то сумасшедшее количество денег и супер модный эффективный кластер. Команда должна состоять из 5 “non-graduated” студентов (бакалавры, магистры) и 1 тренера. Во время финала тренеру нельзя находиться на рабочем месте команды. ISC проводится в рамках студенческой секции конференции ISC (International Supercomputer Conference) в Германии в 20х числах июня. В команде должно быть 6 студентов и 2 тренера. Прием заявок на участие проходит в октябре-ноябре. Предварительного отборочного этапа с решением задач нет, только заявка на участие с описанием конфигурации кластера и опытом членов команды и Университета в области HPC. Вендора, который предоставит оборудование команда должна искать самостоятельно. Организаторы могут написать письмо от имени оргкомитета с предложением вендору посодействовать команде, но готового оборудования, как в случае с ASC, никто не предоставляет. Задачи конкурса представляют собой запуск бенчмарков и нескольких научных приложений. SC проводится в Америке в ноябре также совместно с суперкомпьютерной конференцией. Соревнование проходит в формате хакатона и длится 48 часов. Команда также состоит из 6 человек, но они не работают одновременно — одному студенту запрещено находиться в соревновательной зоне больше 12 часов в день. За это время команда должна запустить на предварительно собранных и настроенных кластерах 2 бенчмарка (Linpack, HPCG), попробовать воспроизвести результаты выбранной статьи с прошлогодней конференции и запустить еще 3 приложения, одно из которых держится в секрете до начала контеста. Задачи этого года можно посмотреть здесь. И что со всем этим делать? Здесь я попробую описать как происходит отбор, технологии, с которыми наверняка придется столкнуться в ходе таких конкурсов и задачи прошлых лет. Наша команда имеет опыт участия только в соревнованиях ASC, поэтому все частные особенности будут подробно описаны только относительно этого конкурса.Соревнования подразумевают работу с вычислительным кластером. Здесь появляется субъективный момент — на успех команды в некоторой степени (сильно или слабо — зависит от задачи) оказывает влияние железо, которое используется для вычислений, таким образом одной из первостепенных задач становится поиск спонсора, готового предоставить оборудование (ему это выгодно с маркетинговой точки зрения). Также я слышала что некоторые команды (кажется, это был кто-то из китайцев) используют системы своего Университета, но это не про Россию. С трудом представляю, чтобы кто-то позволил вывезти Университетское оборудование в другую страну. Спойлер: наша команда даже не имеет доступа к ВЦ Университета. Для подготовки мы используем учебный кластер кафедры 10-летней давности и постоянно ищем любые возможности получения доступа к каким-либо сторонним системам. В конкурсах SC и ISC команды собирают кластер полностью самостоятельно, с учетом только ограничения по мощности в 3000W. ASC ставит участников в чуть более равные условия — кластер у всех участников собирается на базе одного и того же сервера, который предоставляется главным спонсором соревнований компанией Inspur. Команды могут добавлять свои ускорители (видеокарты, Xeon Phi, FPGA), поставить SSD, добавить памяти, но за свой счет (или за счет привлеченных спонсоров). В заявке команда указывает конфигурацию своего кластера и бэкграунд участников и их Университета в области высокопроизводительных вычислений. В ASC это является частью заочного отборочного тура вместе с решением задач. В ISC и SC просто сразу подается как заявка на очное участие в соревновании. Стек технологий и навыков, которые наверняка пригодятся во время конкурса: языки программирования: C/C++, Python, Fortran, bash; многопоточные технологии: OpenMP, MPI, OpenCL, OpenACC, CUDA, Intel Cilk Plus, Intel TBB и т.д. Отборочный этап ASC начинается примерно в 10х числах января и длится 2 месяца. За это время предлагается решить 3 задачи. Как правило целью является ускорение предоставленного кода (в последний раз была одна задача не требующая ускорения). Максимально за отборочный этап можно набрать 100 баллов, который распределяются следущим образом:
При решении задач стоит учесть, что предоставляемые для некоторых задач китайские сервера во время китайского нового года в начале февраля будут выключены (в течение недели). После этого на них начинается ажотаж и задача может достаточно долго стоять в очереди на исполнение. Задачи, требующие запуска на этих серверах надо решать в первую очередь. Примерно через одну-две недели становятся известны результаты. Что характерно, никакой таблицы результатов организаторы не выкладывают и даже лично командам не сообщают их баллы. Единственное, на что можно ориентироваться — порядок перечисления команд. По нашим предположениям он соответствует рейтингу. Кроме команд-финалистов также объявляется список команд, показавших хороший результат. До финала есть 2 месяца, чем же их занять? В финале нужно будет самостоятельно собрать и настроить кластер. На это дается 2 дня. Вам приносят стойку, заказанное количество серверов, кабели и два монитора. Вперед! Итак, если ранее вы никогда не собирали и не настраивали кластер — самое время научиться. После этого есть 2 дня на запуск приложений. Это будут те же задачи, что и в отборочном туре, но с другими входными данными. Также добавляется 3 новые задачи: две становятся известны вместе с приглашением на финал, еще одна выдается непосредственно в день соревнования. В каждый день соревнования нужно запустить 3-4 задачи, наилучший результат указывается в финальной карточке, которая сдается в конце дня. На специальном экране (и на веб-странице) указывается потреблении энергии кластером каждой команды. Если оно превышает 3000W, то лого университета подсвечивается красным а на весь зал начинает дико верещать сирена. Результат такого запуска команде не зачтется. В отличие от предварительного этапа в правилах проведения финала прописана система начисления баллов а в зале на стене сделана большая таблица, куда вписываются результаты по каждой задаче. После загадочного начисления баллов в отборочном туре такая прозрачность крайне радует. По 7.5 баллов дается за бенчмарки, по 15 баллов за остальные задачи, 10 баллов — презентация команды, в сумме — 100. В целом баллы начисляются так: команда, показавшая наилучший результат получает максимум, остальные команды получают баллы исходя из соотношения их результата с результатом лидера. Призы и награждение. Кубком и дипломом награждают все команды, прошедшие в финал. Есть награды за 1е и 2е места, за лучший результат по Linpack, за лучший результат некоторым другим отдельным приложениям. Причем, если наилучшего результата добилась команда, уже получившая один из вышеперечисленных призов, то награждается следующая за ней. Также можно активно пиарить свою команду и конкурс в соцсетях (Twitter или китайский WeChat) и получить Best Popularity Prize. К слову, сумма за Best Popularity Prize нам до сих пор не пришла. Надеюсь, что внутри Китая переводы все же выполняются оперативнее и хотя бы китайские команды свои награды получили. В силу того, что все 3 конкурса имеют общие корни, команды, занявшие 1 и 2 места в ASC автоматически приглашаются на конкурс в Германию. Заключение Соревнования интересны тем, что дают возможность поработать с “большими компьютерами”, научными разработками и посмотреть на другой, отличный от коммерческого энтерпрайза мир IT. Буду рада, если кого-то это заинтересовало и в этом году в списке команд-участниц появятся новые российские университеты. Российские команды каждый год кладут на лопатки всех в соревнованиях ACM ICPC и, я надеюсь, через пару лет тренировок, смогут положить и в HPC :)Ссылки для интересующихся: Сайт-блог американского журналиста, освещающего каждое из этих соревнований Регистрация на ASC 2018 Источник: habrahabr.ru Комментарии: |
|