ИСТИНА |
Войти в систему Регистрация |
|
ИСТИНА ИНХС РАН |
||
Один из парадоксов суперкомпьютерного мира заключается в том, что вместе с ростом производительности суперкомпьютеров растет и сложность их использования. Подобная ситуация настораживает сама по себе, но она дополнительно усугубляется тем, что все это происходит на фоне одновременного быстрого роста числа пользователей. Суперкомпьютеры нужны для решения вычислительно сложных задач науки, промышленности, приоритетных задач государства. Чем мощнее суперкомпьютеры, тем более точные и полные постановки задач можно рассматривать, получая дополнительные конкурентные преимущества, поэтому каждый год создаются вычислительные системы все большего масштаба. Но создавать подобные системы – это только первый шаг, необходимо уметь эффективно ими пользоваться, а это становится действительно нетривиальной задачей. Современные компьютеры обладают сложной архитектурой, и для использования их потенциала требуются серьезные знания и навыки. Примеры этому повсюду. Современный процессор Intel Xeon Phi обладает степенью параллельности более 2000. Это значит, что не меньший ресурс параллелизма должен быть и в используемом алгоритме, иначе вычислительные ресурсы будут простаивать. Более того, для создания действительно эффективной программы, использующей весь потенциал Intel Xeon Phi, программа должна обладать высокой степенью локальности данных, учитывать особенности иерархии памяти данного процессора, быть хорошо векторизуемой. Свои особенности есть и у графических, и у многоядерных процессоров, на основе которых делают SMP-компьютеры, большие кластерные системы и суперкомпьютерные комплексы, что еще более усложняет их эффективное использование. Несмотря на эти сложности, число пользователей суперкомпьютерных систем растет очень быстро, поскольку вычислительные технологии дают отличные результаты во многих областях науки и техники. Число пользователей суперкомпьютерного комплекса Московского университета за последние 5 лет выросло в 6 раз, достигнув 3000 человек, представляющих все основные разделы естественных наук. И вот тут-то и возникает серьезное противоречие: архитектура компьютеров постоянно усложняется, но в работу с ними постоянно вовлекаются все новые и новые пользователи, не обладающие глубокими знаниями современных суперкомпьютерных технологий. Они эксперты в своих предметных областях: физике, биоинженерии, химии, геологии, а определять информационную структуру алгоритма или же бороться с ложным разделением данных (false sharing) при обращении в кэш-память их не учили. В конечном итоге всё это и определяет крайне низкую эффективность суперкомпьютерных приложений и суперкомпьютерных центров в целом. Это общая проблема, характерная для всех суперкомпьютерных центров мира, и со временем она лишь усугубляется. Цель данного проекта – преодоление системного противоречия между массовостью и сложностью использования современных суперкомпьютерных систем. С одной стороны, от массовости и сложности не уйти, они определяются объективными законами развития. Но вместе с этим, как массовость, так и сложность со временем растут, усугубляя и без того сложную и парадоксальную ситуацию. К настоящему времени изучено и разработано множество различных методов и подходов к анализу и повышению эффективности суперкомпьютерных приложений, но все они обладают тремя существенными недостатками: отсутствием ориентации на массовый анализ приложений большим числом пользователей, отсутствием анализа потенциала приложения и отсутствием возможности для проведения анализа всего потока приложений суперкомпьютерного комплекса. Первое не дает возможности решить проблему во всей полноте из-за постоянно расширяющегося суперкомпьютерного сообщества. Второе не позволяет в полной мере оценить качество приложения. Третье не позволяет понять, что нужно изменить в конфигурации суперкомпьютерной системы, чтобы повысить эффективность ее работы в целом. Научная новизна предлагаемого проекта заключается в разработке и реализации методов, направленных на решение всех указанных выше проблем. Исследование будет строиться на основе данных мониторинга системного уровня суперкомпьютерных комплексов, что определяет полноту и точность анализа. Подход объединяет как возможность подробного исследования отдельного приложения, так и потока приложений всего суперкомпьютерного комплекса. Подход существенно базируется на технологиях суперкомпьютерного кодизайна, предполагающего аккуратное согласование свойств алгоритмов, программ и архитектуры суперкомпьютерных систем. Проект нацелен на разработку универсального программного комплекса, позволяющего проводить и массовый анализ приложений всех пользователей, и глубокий профессиональный анализ отдельных параллельных программ, и выполнять исследование качества текущих конфигураций суперкомпьютерных систем по обработке потока задач пользователей. Для достижения поставленной цели необходимо выполнить целый ряд шагов. Разработка методов принятия первичного решения о качестве выполнения приложения. Реализация средств автоматически выполняемого предварительного анализа каждого приложения “на лету” с выдачей дайджеста о качестве его работы пользователю. Разработка методов исследования особенностей взаимодействия приложения с различными компонентами программно-аппаратной среды суперкомпьютеров (коммуникационной сетью, подсистемой памяти, подсистемой ввода/вывода и другими) для локализации истинных причин возникновения проблем с эффективностью и нахождения способов их устранения. Разработка и реализация методов сбора интегральных характеристик выполнения потока задач для оптимизации конфигураций суперкомпьютерных комплексов. Эффективность разработанного комплекса будет показана с точки зрения решения трех основных задач проекта: ориентации на массовый анализ приложений большим числом пользователей, анализа качества отдельных приложений и исследования конфигураций суперкомпьютерных комплексов. Массовость будет показана на как примере оптимизации потока приложений суперкомпьютерного комплекса Московского университета, так и на примере организации работы с его пользователями по контролю эффективности их программ. Потенциал анализа отдельных приложений будет показан на примере исследования и оптимизации трёх приложений: исследования механизмов микрососудистого тромбоза с помощью многомасштабных компьютерных моделей, волновой томографии и решения типовых задач обработки больших графов. Все эти приложения направлены на решение практически важных задач, являются очень ресурсоемкими, где вопросы эффективного выполнения на суперкомпьютере определяют и качество решения задач в целом. Автоматически выполняемый первичный анализ потока приложений суперкомпьютерного комплекса поможет понять особенности прохождения конкретного потока задач на суперкомпьютере (порядка 400 задач в сутки), и, как результат, оптимизировать текущую конфигурацию и сформулировать рекомендации для архитектуры будущих систем. Апробация выполняется на примере суперкомпьютерного центра Московского государственного университета, однако результаты проекта применимы к любому суперкомпьютерному комплексу.
One paradox of the supercomputing world is that as supercomputer performance increases, so does the complexity of their use. As troublesome as this may be, the situation is further complicated by fast growth in the number of users. Supercomputers are needed to solve computationally complex tasks in the fields of science, industry and priority tasks of the government. More powerful supercomputers allow for more specific and complete problem formulations, which provide an extra competitive edge. Therefore, bigger and bigger computers are created every year. Creating these systems, however, is only the first step. It is just as important to be able to use them efficiently, which is becoming a truly non-trivial task. Modern computers contain complex architecture and require extensive knowledge and skills to unleash their potential. There are examples of this everywhere. The modern Intel Xeon Phi processor has a degree of parallelism of more than 2000. This means that the algorithm that is used must have at least a comparable parallelism resource, otherwise the computing resources will be left idle. Moreover, an extremely efficient program that utilizes all of the Intel Xeon Phi processor’s capacity must have high data locality, consider peculiarities of the processor’s memory hierarchy and be highly vectorized. Graphical processors and multi-core processors used in SMP computers, large cluster systems and supercomputing centers also have their own peculiarities, which further complicate their efficient usage. Despite all of these challenges, the number of supercomputer system users is growing fast, as these computing technologies offer excellent results in many areas of science and industry. The number of users at Moscow State University’s supercomputer center has increased six-fold over the last five years, up to 3000 people representing all key areas of natural sciences. And with this comes a serious conflict: computer architecture is becoming increasingly complex, while new users, who are involved in working with them do not have an acute knowledge of modern supercomputer technologies. They may be experts in their field, be it physics, bioengineering, chemistry or geology, but they have never been taught how to determine the information structure of an algorithm or prevent false sharing on cache usage. Ultimately, this translates to extremely inefficient supercomputer applications and underutilization of supercomputer centers in general. It is a problem that is characteristic for all supercomputer centers in the world, and it only gets worse with time. The purpose of this project is to overcome the inherent “contradiction” between large-scale use and the complexity in using modern supercomputer systems. On one hand, both seem inevitable, as they are determined by the objective laws of development. At the same time, both use and complexity do grow with time, which only aggravates the already complex and paradoxical situation that exists. A number of methods and approaches towards analyzing and improving the efficiency of supercomputer applications have been studied and developed to date, but they all suffer from three major flaws: lack of orientation towards mass application analysis by a large number of users, lack of application potential analysis and lack of possibilities for analyzing the entire flow of applications within a supercomputer center. The first flaw does not allow for the issue to be addressed in full due to the constant expansion of the supercomputer community. The second prevents the assessment of the application quality to be performed in full. And finally, the third flaw prevents an understanding of what needs to be changed in a supercomputer system configuration in order to increase the efficiency of its operation in general. The scientific novelty of the proposed project is that it features the development and implementation of methods aimed at addressing all of the problems listed above. The study will be based on system-level monitoring data obtained from the supercomputer centers, which will determine the completeness and accuracy of analysis. The approach allows for in-depth study of an individual application or the entire flow of applications at a supercomputer center. It is essentially based on supercomputer co-design technology, which provides for a careful coordination of algorithm properties, software and architecture of the supercomputer systems. The project is aimed to develop a universal software tool suite that will allow for both a large-scale analysis of the entire set of applications run by all users and a professional in-depth analysis of individual parallel applications, while taking into account the qualities of the supercomputer system’s current configuration to handle the flow of user applications. Meeting this goal requires a number of steps. The first involves developing methods for making the initial decision on the quality of application execution. The second consists of implementing the methods for the automatic performance of preliminary analysis of each application “on-the-fly” and issuing a quality digest to its user. Next, methods for analyzing the peculiarities of program’s interaction with various components of the supercomputer’s software and hardware (communication network, memory subsystem, input-output subsystem and so on) to identify root causes of low efficiency and how to eliminate these must be developed. Lastly, methods for gathering integrated characteristics of the application flow in order to optimize the supercomputer center configuration will be developed and implemented. The efficiency of the newly developed tool suite can be assessed by demonstrating how well it addresses the following three key objectives of the project: focus on a large-scale analysis of the applications by a large number of users, analyzing the quality of individual applications and studying the configuration of supercomputer systems. Large-scale use can be shown both by optimizing the flow of applications at the Moscow State University supercomputer center and by organizing its work with the users in order to control the efficiency of their programs. The capacity to analyze individual applications will be shown by studying and optimizing three applications: a study of microvascular thrombosis mechanisms using multi-scale computer models, wave tomography and typical large graph processing tasks. All of these applications have been designed to address important application problems and are resource-intensive, where efficient execution on a supercomputer determines the quality of the task in general. Automatic initial analysis of the application flow on a supercomputer center will help in understanding the peculiarities of specific task flow on a specific supercomputer (about 400 tasks a day); this will result in optimizing the current configuration and producing architecture recommendations for future systems. While the process will be piloted in the Moscow State University Supercomputer Center, the results of the project can be applied to any supercomputer facility.
В ходе выполнения данного проекта будут получены следующие результаты. Будут разработаны подходы и методы использования данных системного мониторинга для решения комплекса задач определения качества суперкомпьютерных приложений и систем на основе технологий суперкомпьютерного кодизайна. Будут разработаны фундаментальные основы, созданы средства и технологии массового анализа качества параллельных приложений. Будут реализованы средства автоматически выполняемого предварительного анализа каждого приложения “на лету” с формированием и выдачей дайджеста о качестве его работы пользователю. Будет реализован программный комплекс для использования созданных методов массового анализа в практике работы суперкомпьютерных центров. Данный комплекс ориентирован на всех пользователей суперкомпьютерных систем. Он позволит не только проводить автоматический первичный анализ особенностей параллельных программ, но и существенно облегчит задачу дальнейшего самостоятельного анализа эффективности приложений, выделяя как участки с аномальными характеристиками, так и признаки неэффективности приложений. Для найденных признаков будет проводиться дополнительный анализ, направленный на определение и локализацию истинных причин неэффективности. Программный комплекс будет построен на принципах суперкомпьютерного кодизайна, делая сложные технологические решения доступными всему пользовательскому сообществу. С помощью разработанных методов и созданного программного комплекса будет проведено детальное исследование особенностей, динамических свойств и потенциала трех приложений: исследования механизмов микрососудистого тромбоза, волновой томографии и решения типовых задач обработки больших графов. Все эти приложения направлены на решение практически важных задач, где вопросы эффективного выполнения на суперкомпьютере определяют и качество решения задач в целом. Важно и то, что все эти приложения обладают разными свойствами, что позволит показать эффективность предложенного подхода для широкого класса параллельных программ. Будут разработаны методы и реализованы средства сбора и анализа интегральных данных по обработке полного потока задач, проходящего через суперкомпьютер. Созданные средства будут апробированы на реальных суперкомпьютерных системах, в том числе петафлопсного уровня. Будут сформированы рекомендации по определению соответствия потока задач текущим конфигурациям исследованных суперкомпьютеров и предложены рекомендации как по реорганизации потоков задач, так и по оптимизации конфигураций суперкомпьютеров. Принципиально важным результатом реализации проекта станет создание основы для включения этапа анализа эффективности в цикл разработки суперкомпьютерных приложений. Сейчас этого нет, что порождает массу проблем. За счет ориентации создаваемого программного комплекса на массовость, пользователи будут не только постоянно видеть показатели качества своих приложений, но и смогут воспользоваться инструментарием для тонкого анализа и исправления проблемных мест. Не менее важно и то, что на основе создаваемого комплекса будет вестись постоянный мониторинг соответствия потока решаемых задач и текущей конфигурации суперкомпьютера, что даст мощный инструмент в руки администраторов и руководства суперкомпьютерных центров для оптимизации текущих настроек и проектирования суперкомпьютерных систем будущих поколений. В силу высокой востребованности, разработанные технологии, методы и программные средства будут созданы на основе открытых платформ. По предварительным оценкам, результаты проекта могут быть внедрены и эффективно использованы большинством существующих суперкомпьютерных центров России и мира, что определяет его высокую практическую значимость. Экономическая составляющая проекта характеризуется не только ускорением процессов суперкомпьютерного моделирования и получением результата в меньшие сроки, но и значительной экономией средств от оптимизации конфигураций суперкомпьютерных комплексов. Ожидаемые результаты проекта по своей функциональности и комплексности подхода не имеют аналогов в мире.
За все время выполнения проекта были получены следующие результаты. Разработаны фундаментальные основы создания средств и технологий массового анализа качества параллельных приложений. Эти основы, сформулированные в виде набора базовых принципов и требований, легли в основу созданного в рамках проекта программного комплекса TASC (Tuning Applications for SuperComputers), предназначенного для решения трех основных задач: 1) проведение в автоматическом режиме первичного массового анализа производительности всего потока приложений, выполняемых на суперкомпьютере; 2) проведение совместно с пользователем детального анализа производительности выбранного отдельного приложения; 3) выполнение анализа качества соответствия конфигурации суперкомпьютерной системы потоку приложений. Выполнена разработка методов проведения первичного анализа всех приложений, выполняющихся на суперкомпьютере. Целью первичного анализа является обнаружение в выполняющихся задачах признаков снижения эффективности и причин появления этих признаков, а также составление набора рекомендаций по дальнейшему анализу и устранению этих причин. Для проведения первичного анализа используются данные системного мониторинга о производительности задач (такие как средняя загрузка процессоров и графических ускорителей, частота кэш-промахов, частота выполнения операций чтения данных из памяти, интенсивность использования сети MPI), информация о запусках задач (имя пользователя; время постановки в очередь, начала и завершения выполнения; строка запуска и т.д.), а также данные от внешних средств анализа свойств задач. Основу для проведения первичного анализа составил набор статически заданных правил, каждое из которых описывает конкретную проблему с эффективностью в приложении. Каждое правило задает условие срабатывания (какой признак неэффективности найден), предположение о причинах возникновения данной проблемы и рекомендации по устранению этой проблемы. Разработано около 30 правил, которые были реализованы и применяются на практике в работе суперкомпьютера Ломоносов-2. Данные правила разбиты на 9 групп, в зависимости от типа проблем, которые они призваны определять. В частности, есть группы правил, направленные на обнаружение зависших задач, дисбаланса вычислительной нагрузки, неэффективной работы с MPI, некорректных режимов работы задач, общих случаев низкой производительности, и так далее. В качестве примера можно привести правило, которое выявляет недостаточно высокую утилизацию ресурсов вычислительного узла. Оно срабатывает в том случае, если в задаче в среднем активным является только один процесс на узел, при этом все остальные вычислительные ресурсы (память, коммуникационная сеть, графические ускорители) используются слабо. Это позволяет предположить, что в данном случае пользователем было задано слишком маленькое число процессов на узел, и в результате значительная часть ресурсов простаивает. В таком случае рекомендуется при запуске указывать большее число процессов на узел. Еще одно правило призвано определять критическую ситуацию, при которой задача показывает чрезвычайно низкую активность использования всех доступных вычислительных ресурсов. По нашему опыту, это почти всегда означает, что задача работает некорректно или зависла. Чтобы избежать потери ресурсов в таких случаях, необходимо оперативно обнаруживать такие проблемы, что и выполняется с помощью предложенного правила. Однако на данном этапе нельзя быть абсолютно уверенным, что задача действительно работает некорректно, поэтому решение о ее снятии со счета должен принимать пользователь. Поэтому нами было организовано оперативное оповещение пользователей СК Ломоносов-2 о подобных выполняющихся задачах. Реализован web-интерфейс, который позволяет изучить результаты первичного анализа по любой задаче, выполненной на суперкомпьютере Ломоносов-2. Данный интерфейс создан в рамках системы Октошелл, которая является единой точкой входа для всех пользователей и администраторов суперкомпьютерного центра МГУ. В данном интерфейсе реализована web-страница, которая позволяет любому пользователю суперкомпьютера Ломоносов-2 увидеть список его задач с краткой информацией о производительности их выполнения и о найденных проблемах с эффективностью. При желании пользователь может перейти на страницу с детальным описанием выбранной задачи, где показана базовая информация по задаче (время выполнения, строка запуска, использованные узлы и т.д.), найденные характерные свойства задачи, а также детальное описание обнаруженных проблем с эффективностью и наши рекомендации по их дальнейшему анализу или устранению. Выполнена разработка и реализация методов, направленных на проведение детального анализа производительности выбранного отдельного приложения. В рамках работ по данному направлению составлено и описано 15 типов детального анализа, которые могут использоваться для получения подробной информации о работе задач. Определен набор существующих решений, которые могут быть интегрированы с разрабатываемым комплексом. Среди описанных 15 типов были выбраны и реализованы методы проведения 10 наиболее интересных и полезных с нашей точки зрения типов детального анализа. В частности, реализованы методы для анализа многопоточной программы, низкоуровневого анализа на основе аппаратных датчиков, профилирования и трассировки MPI-программы, общего анализа программы, анализа эффективности и корректности работы с памятью и т.д. Для этих типов составлено описание алгоритмов их выполнения, а также определен спектр проблем с эффективностью, которые потенциально могут быть обнаружены с их помощью. В рамках некоторых типов детального анализа реализованы наборы правил (аналогичные правилам для проведения первичного анализа), позволяющих определять различные проблемы с эффективностью на основе данных, полученных с помощью внешних инструментов анализа. Так, при проведении общего анализа программы есть правила, позволяющие обнаруживать заметный дисбаланс нагрузки между OpenMP потоками или существенный простой процессора из-за выполнения операций чтения или записи данных в оперативную память. Проведение детального анализа осуществляется с помощью системы Октошелл. В рамках того же web-интерфейса, который позволяет изучить результаты первичного анализа, приводится список доступных типов детального анализа для каждой задачи, и если пользователь хочет получить больше информации по задаче, он может выбрать интересующий его тип. Далее пользователю выдается инструкция по проведению выбранного типа анализа на суперкомпьютере Ломоносов-2, посредством которой пользователь надлежащим образом запускает анализ интересующего его приложения с помощью выбранного внешнего инструмента, передает собранные данные в наш комплекс и затем получает информацию о том, где получить доступ и как интерпретировать полученные результаты. Для проведения анализа качества работы суперкомпьютера, разработаны методы сбора и анализа данных для изучения потока задач, выполняемых на суперкомпьютере. В рамках работ по данному направлению собирается самая разная информация о состоянии суперкомпьютера и поведении выполняющихся на нем задач. Помимо данных, собираемых для проведения первичного анализа, также здесь агрегируются, в частности, данные об используемых прикладных пакетах (таких как Gromacs, LAMMPS, NAMD), библиотеках и компиляторах; информация о принадлежности задач к пользователям, проектам, организациям и предметным областям; данные о проблемах с эффективностью, обнаруженных при проведении первичного анализа. На основе собранной информации предложены и описаны 7 вариантов представления информации, отображающие различные важные аспекты общего состояния суперкомпьютера. В частности, предложены конкретные варианты представлений для составления единого экрана администратора, разбора структуры потока задач, определения эффективности работы отдельных пользователей или проектов, и другие. Для визуализации вариантов представления используется система Redash – платформа агрегации и визуализации данных, доступ к которой предоставляется в web-браузере. Каждый вариант представления в этой системе представляет собой набор связанных web-страниц, предоставляющих необходимую информацию по определенному аспекту работы суперкомпьютера. Данные варианты представления реализованы, апробированы и уже применяются на практике для исследования качества работы суперкомпьютера Ломоносов-2. Выполнена финальная доработка и интеграция всех реализованных методов. Данные методы легли в основу разработанного программного комплекса TASC, реализующего всю заявленную в проекте функциональность. Часть TASC по проведению первичного анализа полностью реализована и постоянно работает на СК Ломоносов-2, доступ к результатам ее работы имеют все пользователи данного суперкомпьютера. Часть TASC по проведению детального анализа полностью реализована, апробирована на полной копии системы Октошелл и готова к внедрению в основную версию Октошелла, где доступ к ее результатам сможет получить любой пользователь суперкомпьютера. Внедрение этой части TASC в оперативную работу СК Ломоносов-2 будет выполнено после утверждения регламента ее включения в производственную цепочку администрацией суперкомпьютера. Часть TASC по проведению анализа качества работы суперкомпьютера полностью реализована, собирает и анализирует информацию о состоянии СК Ломоносов 2 в режиме 24*7, обеспечивая постоянный доступ к параметрам качества работы суперкомпьютера администраторам и руководству суперкомпьютерного центра. Полученное решение проектировалось с учетом возможности переноса на другие суперкомпьютерные системы, для чего необходимо выполнить адаптацию машинно-зависимых скриптов импорта входных данных, применения средств анализа и визуализации, а также правил по обнаружению проблем с производительностью. Выполнена масштабная апробация работоспособности и качества функционирования комплекса TASC на реальных данных суперкомпьютера Ломоносов-2. В частности, была изучена статистика по результатам проведения первичного анализа для более чем 300 тысяч задач, выполненных на суперкомпьютере Ломоносов-2. Также была собрана и изучена разнообразная информация о качестве работы данного суперкомпьютера, на основе чего были выявлены причины снижения эффективности в различных реальных пользовательских приложениях. Данная апробация показала, что разработанный программный комплекс TASC применим на практике и исключительно полезен как для пользователей, так и для администраторов и руководства суперкомпьютерного центра МГУ. Он позволяет получать интересные и важные для практических выводов результаты, а также помогает анализировать и качественно повышать эффективность как отдельных приложений, так и суперкомпьютера в целом. Проведено детальное исследование особенностей, свойств и производительности трех реальных приложений, направленных на исследование механизмов микрососудистого тромбоза, волновой томографии и решения типовых задач обработки больших графов. Данное исследование было выполнено с помощью реализованных методов для проведения детального анализа в рамках комплекса TASC. Были обнаружены и изучены узкие места в программах, а также предложены возможные варианты для проведения их оптимизации. Так, при проведении анализа задачи волновой томографии было обнаружено, что в данной программе слишком часто происходят обращения в оперативную память, пропускной способности канала доступа к оперативной памяти становится недостаточно, и это является основным узким местом. В этом случае рекомендуется повысить локальность обращений в память, чтобы улучшить эффективность использования кэш-памяти. Также были выявлены значительные накладные расходы при организации работы OpenMP, и на основе полученной информации были предложены варианты оптимизации данной программы. В задаче изучения механизмов микрососудистого тромбоза были выявлены следующие потенциальные проблемы с производительностью: слабая векторизация операций с плавающей точкой, значительные зависимости по данным, а также большая доля ошибок при предсказании переходов. В каждом случае были предложены направления для проведения оптимизации. Задача обработки больших графов реализована на графических ускорителях, и анализ работы с ускорителями выявил низкую эффективность работы с глобальной памятью, а также низкую производительность графических процессоров на операциях с плавающей точкой, что в целом характерно при работе с большими графами. Проведенное исследование этих реальных приложений показало, что разработанные методы проведения анализа полезны на практике, они позволяют выявлять причины снижения производительности и исследовать причины возникновения этих признаков. На основе полученного опыта был составлен набор практических рекомендаций как по реорганизации потоков задач, так и по оптимизации конфигураций существующих суперкомпьютеров. Данные рекомендации предназначены для администраторов и руководства суперкомпьютерных центров и направлены на повышение эффективности прохождения потока задач, выполняющихся на суперкомпьютере. Всего было составлено около 20 рекомендаций, которые были разбиты на три группы. Первая группа направлена на изменение конфигурации работы суперкомпьютера с учетом особенностей потока задач, что позволяет учитывать нужды пользователей. Вторая группа призвана подстраивать свойства потока задач под характеристики текущего суперкомпьютера. В третьей группе сформулированы общие советы, не связанные с возникновением какой-то конкретной проблемной ситуации.
грант РНФ |
# | Сроки | Название |
1 | 31 июля 2017 г.-30 июня 2018 г. | Разработка фундаментальных основ и реализация программного комплекса для массового анализа качества параллельных приложений на основе технологий суперкомпьютерного кодизайна |
Результаты этапа: За время выполнения первого этапа проекта были получены следующие результаты. Разработаны фундаментальные основы создания средств и технологий массового анализа качества параллельных приложений. Эти основы сформулированы в виде набора базовых принципов и требований, которым должен следовать разрабатываемый комплекс. С учетом сформулированных требований, определена базовая функциональность и разработана общая архитектура разрабатываемого комплекса. Составлено описание общего алгоритма функционирования комплекса, выделены отдельные подсистемы и модули в его составе, указаны запланированные технологии для реализации различных частей комплекса. Выделены ключевые характеристики для проведения первичного анализа – наиболее важные входные данные, которые могут быть использованы на этом этапе. Основным источником информации о задачах являются данные системного мониторинга, однако также необходимо собирать и анализировать другую информацию, например, данные о программных пакетах и системном программном обеспечении, используемых в задаче, или данные о произошедших сбоях в программно-аппаратной среде суперкомпьютера, которые могут повлиять на эффективность выполнения задачи. Выполнена разработка методов проведения первичного анализа всех приложений, выполняющихся на суперкомпьютере, с учетом составленного списка ключевых характеристик. Основу для проведения первичного анализа составил набор статически заданных правил, каждое из которых описывает конкретную проблему с эффективностью в приложении. Каждое правило задает условие срабатывания (какой признак неэффективности найден), предположение о причинах возникновения данной проблемы и рекомендации по устранению этой проблемы. Выполнена реализация разработанных методов первичного анализа на основе правил, которая была апробирована на суперкомпьютере петафлопсного уровня Ломоносов-2. Реализовано 22 правила, которые были использованы для анализа реальных данных. Реализован web-интерфейс, который позволяет получить результаты первичного анализа по любой завершенной задаче. В рамках данного интерфейса реализована web-страница, которая позволяет пользователю увидеть список его задач с краткой информацией о найденных проблемах с эффективностью. При выборе определенной задачи можно перейти на другую страницу с детальным описанием всех результатов первичного анализа по этой конкретной задаче. После проведения апробации выполнена оценка эффективности использованных методов, которая показала, что предложенное в проекте решение может быть успешно использовано для проведения первичного анализа на реальных крупных суперкомпьютерах петафлопсного уровня. Проведен первичный анализ трех реальных приложений (исследования механизмов микрососудистого тромбоза, волновой томографии и решения типовых задач обработки больших графов) с использованием разработанных методов. Для этого проведена ручная оптимизация этих приложений, описаны способы проведения оптимизации и свойства приложений, которые были затронуты проведенной оптимизацией, а затем для полученных версий приложения – исходной и оптимизированной – выполнено сравнение полученных результатов первичного анализа. Полученные результаты показали, что применение разработанных методов первичного анализа хорошо отражает проведенную оптимизацию и позволяет адекватно оценить изменения в поведении разных вариантов приложения. Стоит отметить, что в дальнейшем планируется расширять набор правил, а также выполнять подстройку параметров работы этих правил под особенности целевого суперкомпьютера. Выделено и описано 15 типов детального анализа, которые могут использоваться для получения подробной информации о работе задач. Разработаны базовые идеи и методы, которые планируется применять для накопления знаний по отдельной задаче при выполнении нескольких типов анализа. Разработаны методы сбора интегральных данных для изучения полного потока задач, выполняющихся на суперкомпьютере. В рамках разрабатываемого комплекса для выполнения этой подзадачи требуется собирать данные трех типов: данные о поведении и эффективности выполнения каждой отдельной задачи; данные о текущем состоянии суперкомпьютера и выполняемых на нем вычислительных задачах, агрегированные по всей вычислительной системе или некоторой выделенной части (например, по разделу с определенной архитектурой вычислительных узлов); данные о «здоровье» суперкомпьютера и его компонент (т.е. данные о сбоях в работе). Составлено описание каждого из типов данных, а также продемонстрированы реальные примеры этих данных, собранных на суперкомпьютере Ломоносов-2. Определен набор существующих решений, которые могут быть интегрированы для расширения функционала разрабатываемого комплекса. На основании проведенного исследования, составлен перечень из 36 существующих программных инструментов, которые являются наиболее перспективными для использования в качестве внешних средств анализа и сбора данных. Составлена таблица применимости выбранных внешних инструментов для каждого из 17 типов анализа (первичный анализ, 15 типов детального анализа, анализ полного потока задач). Выполнено описание рассмотренных внешних инструментов. Таким образом, на данном этапе все ожидаемые научные результаты были достигнуты. | ||
2 | 1 июля 2018 г.-30 июня 2019 г. | Разработка фундаментальных основ и реализация программного комплекса для массового анализа качества параллельных приложений на основе технологий суперкомпьютерного кодизайна |
Результаты этапа: За время выполнения второго этапа проекта были получены следующие результаты. Завершена реализация программной подсистемы, направленной на выполнение в автоматическом режиме первичного массового анализа приложений. Данная подсистема в настоящий момент постоянно работает на суперкомпьютере Ломоносов-2 и анализирует весь поток выполняющихся на нем приложений. Результаты первичного анализа стали доступны всем пользователям суперкомпьютера. Выполнено обновление набора правил для проведения первичного анализа. Добавлено 12 новых правил, что позволило расширить спектр проблем, обнаруживаемых на этом этапе. Данные правила направлены, в частности, на поиск зависших или некорректно работающих программ, существенного дисбаланса между узлами по загрузке процессоров и подсистемы памяти, а также определение чрезмерно низкой утилизации вычислительных ресурсов. Проведено уточнение и модификация созданных ранее правил с учетом проведенной апробации на реальных данных. Разработаны методы для проведения 10 типов детального анализа с целью получения подробной информации о различных аспектах работы приложений. В частности, разработаны методы для анализа многопоточных программ, исследования масштабируемости, низкоуровневого анализа на основе аппаратных датчиков, профилирования MPI-программ, общего анализа последовательных программ, анализа эффективности и корректности работы с памятью и т.д. Для этих типов составлено описание алгоритмов их выполнения, а также определен спектр проблем с эффективностью, которые потенциально могут быть обнаружены с их помощью. На основе разработанных методов выполнена реализация 5 типов детального анализа отдельных приложений: анализ эффективности работы с памятью, профилирование MPI-программ, анализ работы с ускорителями, сбор более детальных данных по задаче и анализ корректности работы с памятью. Для каждого типа реализован набор правил, определяющий перечень проблем с эффективностью, которые на практике доступны для обнаружения. Выполнена апробация на реальных приложениях, работающих на суперкомпьютере Ломоносов-2. Разработаны механизмы накопления знаний по задаче, которые предназначены для интеграции результатов от различных методов предварительного и детального анализа. Для описания процесса накопления знаний составлена общая схема, которая описывает, как с помощью разрабатываемых решений на практике могут быть обнаружены те или иные проблемы с эффективностью. Эта же схема помогает определить, какие реальные проблемы могут быть обнаружены с помощью выбранного типа первичного или детального анализа. Создана пилотная версия программного комплекса, реализующая разработанные методы первичного и детального анализа. Данное программное решение апробировано на суперкомпьютере петафлопсного уровня Ломоносов-2. Проведенное исследование масштабируемости решения с точки зрения обработки всего потока приложений показало, что оно может быть применено и для работы с суперкомпьютерами будущего производительностью в десятки и сотни Петафлопс. С помощью предложенного программного решения проведено исследование основных узких мест, влияющих на эффективность трех реальных приложений. Изучены проблемы, возникающие из-за неэффективной работы с MPI, в задаче волновой томографии. Проведен анализ работы с графическими ускорителями в задачах обработки больших графов. При анализе задачи исследования механизмов микрососудистого тромбоза наиболее интересные результаты получены при анализе корректности и эффективности работы с памятью. На основе созданных ранее методов сбора данных о состоянии суперкомпьютера разработаны методы анализа этих данных для изучения полного потока задач. Предложены и описаны 7 вариантов представления информации для оценки качества работы суперкомпьютерных центров. В частности, предложены конкретные варианты представлений для составления единого экрана администратора, разбора структуры потока задач, оценки надежности и работоспособности суперкомпьютера, определения эффективности работы отдельных пользователей или проектов и другие. Все ожидаемые на данном этапе научные результаты были достигнуты. | ||
3 | 1 июля 2019 г.-30 июня 2020 г. | Разработка фундаментальных основ и реализация программного комплекса для массового анализа качества параллельных приложений на основе технологий суперкомпьютерного кодизайна |
Результаты этапа: За время выполнения третьего этапа проекта были получены следующие результаты. Выполнена программная реализация 5 методов для проведения различных типов детального анализа. А именно, были реализованы и апробированы методы для выполнения низкоуровневого анализа и общего анализа программы, анализа многопоточной программы и особенностей ввода/вывода, а также трассировки MPI-программ. Апробация выполнялась на реальных приложениях, запускаемых пользователями в суперкомпьютерном центре МГУ. Реализованы разработанные ранее методы сбора и анализа интегральных данных для исследования соответствия потока задач текущей конфигурации суперкомпьютерных комплексов. На основе этих методов были созданы и апробированы 7 вариантов представления данных, отражающие различные аспекты общего состояния суперкомпьютера (СК). Например, были реализованы варианты представления для анализа общей статистики о состоянии суперкомпьютера и изучения эффективности работы пользователей и проектов, а также дайджест администратора. Данные варианты представления уже применяются на практике для исследования качества работы суперкомпьютера Ломоносов-2. Выполнена финальная доработка и интеграция всех реализованных методов. Данные методы легли в основу работы трех основных подсистем, предназначенных для проведения первичного и детального анализа, а также анализа качества работы суперкомпьютера. В результате проведенной интеграции подсистем был создан единый программный комплекс TASC (Tuning Applications for SuperComputers), реализующий всю заявленную в проекте функциональность. Часть TASC по проведению первичного анализа полностью реализована и постоянно работает на СК Ломоносов-2, доступ к результатам ее работы имеют все пользователи данного суперкомпьютера. Часть TASC по проведению детального анализа полностью реализована, апробирована на полной копии системы Октошелл и готова к внедрению в основную версию Октошелла, где доступ к ее результатам сможет получить любой пользователь суперкомпьютера. Внедрение этой части TASC в оперативную работу СК Ломоносов-2 будет выполнено после утверждения регламента ее включения в производственную цепочку администрацией суперкомпьютера. Часть TASC по проведению анализа качества работы суперкомпьютера полностью реализована, собирает и анализирует информацию о состоянии СК Ломоносов 2 в режиме 24*7, обеспечивая постоянный доступ к параметрам качества работы суперкомпьютера администраторам и руководству суперкомпьютерного центра. Выполнена масштабная апробация работоспособности и качества функционирования комплекса TASC на реальных данных суперкомпьютера Ломоносов-2. В частности, была изучена статистика по результатам проведения первичного анализа для более чем 300 тысяч задач, выполненных на суперкомпьютере Ломоносов-2. Также была собрана и изучена разнообразная информация о качестве работы данного суперкомпьютера за продолжительное время, на основе чего были выявлены причины снижения эффективности в различных реальных пользовательских приложениях. Данная апробация показала, что разработанный программный комплекс TASC применим на практике и исключительно полезен как для пользователей, так и для администраторов и руководства суперкомпьютерного центра МГУ. Он позволяет получать интересные и важные для практических выводов результаты, а также помогает анализировать и качественно повышать эффективность как отдельных приложений, так и суперкомпьютера в целом. Проведено детальное исследование особенностей, свойств и производительности трех реальных приложений, направленных на исследование механизмов микрососудистого тромбоза, волновой томографии и решения типовых задач обработки больших графов. Данное исследование было выполнено с помощью реализованных методов для проведения детального анализа в рамках комплекса TASC. Были обнаружены и изучены узкие места в программах, а также предложены возможные варианты для проведения их оптимизации. На основе полученного опыта был составлен набор практических рекомендаций как по реорганизации потоков задач, так и по оптимизации конфигураций существующих суперкомпьютеров. Данные рекомендации предназначены для администраторов и руководства суперкомпьютерных центров и направлены на повышение эффективности прохождения потока задач, выполняющихся на суперкомпьютере. Таким образом, все ожидаемые на данном этапе научные результаты были достигнуты. |
Для прикрепления результата сначала выберете тип результата (статьи, книги, ...). После чего введите несколько символов в поле поиска прикрепляемого результата, затем выберете один из предложенных и нажмите кнопку "Добавить".