Одна из особенностей суперкомпьютерного мира заключается в том, что вместе с ростом производительности суперкомпьютеров растет и сложность их использования. К тому же, это происходит на фоне одновременного быстрого роста числа пользователей. По словам Вадима Воеводина, современные суперкомпьютеры обладают сложной архитектурой, и для использования их потенциала требуются серьезные знания и навыки. Однако пользователям в первую очередь важен результат, и они не всегда задумываются о скорости его получения. Поэтому суперкомпьютеры не всегда работают эффективно, используя все существующие мощности. О парадоксе суперкомпьютерного мира наш разговор с Вадимом Воеводиным.
Вадим Воеводин — кандидат физико-математических наук, старший научный сотрудник Научно-исследовательского вычислительного центра МГУ.
— Какие направления исследований сосредоточены в лаборатории параллельных информационных технологий НИВЦ МГУ?
— Сотрудники лаборатории занимаются всеми возможными вопросами, связанными с работой суперкомпьютеров. Основная часть работы посвящена сопровождению и администрированию суперкомпьютерных центров, а также активной работе над проектами, направленными на повышение эффективности использования суперкомпьютеров.
— Что собой представляют современные суперкомпьютерные комплексы? Какие функции они выполняют?
— Современные суперкомпьютерные комплексы — это по-настоящему сложные системы. Как правило, они представляют собой огромные объекты, занимающие несколько больших помещений. Оборудование, миллионы различных аппаратных компонент — всё это весит десятки (а иногда и сотни) тонн. При этом необходимо сделать так, что бы всё это работало, и работало эффективно.
Современные суперкомпьютеры нужны во всех областях наук. Многие научные проекты требуют моделирования, проведения сложных расчетов. Часто обычных настольных компьютеров и серверов уже не хватает. Поэтому задачи, решаемые с помощью суперкомпьютеров — разнообразны: от расчетов химических и физических параметров и поиска нефтяных месторождений до рендеринга современных анимационных фильмов.
Один из интересных примеров связан с чипсами «Принглс». Во время производства чипсы двигаются по конвейеру настолько быстро, что специалистам из компании Procter & Gamble пришлось моделировать на суперкомпьютере их аэродинамику, чтобы они не разлетались с конвейера.
— Вы упомянули, что с ростом производительности растет сложность использования суперкомпьютеров. Расскажите об этом подробнее.
— Формулировка проблемы проста, а сама проблема невероятно сложная. Суперкомпьютеров становится всё больше. Самые мощные из них объединяют миллионы ядер, не считая модулей памяти, сетевых коммутаторов и других компонент вычислительной и инженерной инфраструктуры. Суперкомпьютеры становятся более гетерогенными, то есть включают в себя не только универсальные процессоры, но и графические и другие ускорители, а также различные виды памяти, типы узлов и так далее.
В результате появляется всё больше факторов, которые необходимо учитывать при работе с суперкомпьютером, и эффективность естественным образом падает.
К примеру, раньше подсистема памяти была устроена намного проще. Сегодня она объединяет множество уровней с разной скоростью доступа, причем для организации эффективного доступа к ним применяется немало различных аппаратных компонент (буферов, контроллеров, каналов памяти и т.д.), каждый из которых имеет свои особенности и тонкости использования. И на самом деле, учесть все особенности практически невозможно.
Многие люди недостаточно хорошо понимают, как устроены суперкомпьютеры. Соответственно, мало кто заботится о том, чтобы использовать суперкомпьютер эффективно.
— То есть мощности компьютера не используются полностью? Проще говоря, компьютер простаивает?
— В суперкомпьютерном комплексе МГУ всегда есть очередь из задач, которые ожидают свободных ресурсов для их выполнения. С этой точки зрения суперкомпьютер не простаивает. Однако практически невозможно подобрать задачу, которая использовала бы весь потенциал суперкомпьютера на 100%. И если углубиться в эту проблему, оказывается, что суперкомпьютеры используются совсем не эффективно. И эта проблема, с которой сталкивается большинство суперкомпьютерных комплексов.
— Можно ли решить эту проблему?
— Чтобы ее решить, нужно очень вдумчиво и внимательно с разных сторон изучить всё, что происходит внутри суперкомпьютера. На мой взгляд, мы столкнулись с очень любопытной ситуацией. В современных реалиях, как я уже упомянул, очень мало людей понимает на достаточно хорошем уровне, как устроен суперкомпьютер. Пользователям зачастую не так важна эффективность: задачи решаются, вроде бы всё работает, все узлы заняты. Казалось бы, всё отлично. Но на деле, например, выясняется, что половина таких задач использует процессор лишь на 10%.
В зарубежных суперкомпьютерных центрах зачастую существуют специальные группы экспертов, которые помогают пользователям анализировать эффективность выполнения их задач на конкретных суперкомпьютерах. Мы сегодня также работаем в этом направлении, при этом пытаемся разработать нечто универсальное.
— Вы упомянули, что пользователи зачастую плохо понимают, как суперкомпьютер работает. В чем основная причина? Не хватает специалистов или проблема в образовании?
— В первую очередь это связано с тем, что почти все пользователи суперкомпьютеров — специалисты из других областей —из физики, химии, медицины, биологии и других. Они обращаются к суперкомпьютерам, чтобы решать конкретные задачи для их предметной области. При этом биологов, например, чаще всего никто не учит писать эффективные параллельные программы. Соответственно, они даже не знают, как сделать так, чтобы их задача решалась наиболее эффективно, а порой и не заинтересованы в этом.
В нашем суперкомпьютерном центре все вычислительные ресурсы предоставляются бесплатно для научных целей. Любой участник серьезного научного проекта может зарегистрироваться и получить доступ для запуска задач. Например, он запустил задачу на ночь. Она просчиталась за 8 часов и дала необходимые результаты. Но этот специалист даже не задумывается, что может решить эту же задачу за два часа. В результате он решил задачу в 4 раза менее эффективно, при этом забрал время у тех, кто ожидает своей очереди.
— Уже существуют программы и приложения, которые могут частично решить этот вопрос. При этом вы говорили, что они используются редко. Почему так происходит?
— Я говорил о том, что они используются редко в нашем суперкомпьютерном центре. Возможно, в других центрах статистика иная. Когда мы впервые с этим столкнулись, то выявили несколько причин. Во-первых, люди зачастую не знают о существовании подобных инструментов (профилировщиков, отладчиков, средств сбора и анализа трасс). Во-вторых, пользователи не понимают, какой конкретно инструмент подходит для их задачи. Третья причина связана со сложностью самих инструментов, чьи результаты бывает сложно интерпретировать. И самая главная причина: люди просто не знают, что у них есть проблемы с эффективностью.
В этом году мы провели опрос среди пользователей нашего суперкомпьютерного комплекса в МГУ по поводу того, знают ли они о возможных проблемах с эффективностью. Всего в опросе приняли участие около 400 пользователей. На первый вопрос «Знают ли они о проблемах с эффективностью их приложений, которые они запускают на суперкомпьютере?» больше трети ответили, что не знают. А на практике это значит, что проблемы действительно есть практически во всех этих программах.
Еще треть пользователей ответили, что знают о проблемах, но либо не пробовали их решать, либо не получилось.
Получается, что две трети пользователей прямо или косвенно подтвердили, что проблемы с эффективностью есть. И только около 30% опрошенных ответили, что они либо уже самостоятельно решили эти проблемы, либо знают, что серьезных проблем нет.
После мы спросили — ради какого ускорения расчетов вы готовы заниматься поиском и решением проблем? Половина пользователей ответила, что прирост даже в 50% уже важен для них. По нашему опыту, это часто реализуемо.
— Расскажите о вашей разработке в НИВЦ МГУ — программном комплексе TASC.
— TASC или Tuning Applications for SuperComputers — это система, объединяющая две глобальные идеи. Первая подсистема нацелена как раз на то, чтобы сообщать пользователям суперкомпьютера о возникающих проблемах в их приложениях. Идея в том, что автоматически анализировать весь поток суперкомпьютерных приложений и выявлять потенциальные проблемы с производительностью.
Для этого разработан набор правил, каждое из которых описывает одну проблему с производительностью. Когда правило срабатывает, пользователя оповещают о найденной проблеме, а также предлагают пути решения или необходимые инструменты для дальнейшего анализа. При этом такой автоматический анализ работает и для еще выполняющихся задач, что позволяет, например, «на лету» обнаруживать некорректные запуски программ.
Вторая подсистема разработана для администраторов и руководителей суперкомпьютерных комплексов. Ее цель — объединить как можно больше информации о задачах, которые выполняются на суперкомпьютерах, и их производительности. Мы собираем информацию об используемых прикладных пакетах, библиотеках и компиляторах, о предметных областях и организациях, которые запускали те или иные задачи. Изучая эти данные, мы можем исследовать качества работы суперкомпьютера с самых разных сторон — например, насколько эффективно пользователи используют графические ускорители, насколько полно используется коммуникационная сеть суперкомпьютера или какие прикладные пакеты наиболее востребованы.
TASC позволяет нам анализировать и понимать, что происходит во время запуска задач, что можно улучшить, и на что обратить особое внимание.
— Что необходимо сделать сейчас каждому пользователю, чтобы суперкомпьютеры во всем мире работали более эффективно?
— В первую очередь, пользователям нужно задуматься о том, насколько эффективно их приложение. Важно осознать, что у многих задач есть проблемы с эффективностью, что может существенно замедлять исследования. Чем быстрее и эффективнее каждый из пользователей будет считать, тем больше других людей смогут быстрее получать результаты своих прорывных исследований. При этом важно понимать, что существенное повышение эффективности работы суперкомпьютера возможно только при участии самих пользователей. А мы со своей стороны стараемся всячески помогать пользователям решать эту очень непростую задачу.
Программный комплекс TASC, описанный в данной статье, реализован при финансовой поддержке РНФ (грант №17-71-20114).
Фото на странице из личного архива. Предоставлено В.Воеводиным