!55Ы_1992-6502_(РПП^_
2015. Т. 19, № 2 (68). С. 150-159
ISSN 2225-2789 (Online) http://journal.ugatu.ac.ru
УДК 004.021
Первая версия Открытой энциклопедии свойств алгоритмов
А. С. Антонов 1, Вад. В. Воеводин 2, Вл. В. Воеводин 3, А. М. Теплов 4,
А. В. Фролов 5
1 [email protected], 2 [email protected], 3 [email protected], 4 [email protected], 5 [email protected]
1,2,3,4 Московский государственный университет имени М. В. Ломоносова 5 Институт вычислительной математики РАН
Поступила в редакцию 24 февраля 2015 г.
Аннотация. Открытая энциклопедия свойств алгоритмов AlgoWiki представляет собой проект создания в сети Интернет wiki-подобной публичной энциклопедии, максимально подробно описывающей свойства и характеристики наиболее используемых математических алгоритмов. Предложенная структура описания свойств алгоритма состоит из двух частей: машинно-независимых свойств алгоритма и особенностей различных реализаций данного алгоритма. Первая версия Открытой энциклопедии свойств алгоритмов реализована в сети Интернет по адресу http://algowiki-project.org. Потенциал разработанной технологии продемонстрирован на описаниях более чем 10 реальных алгоритмов. Статья рекомендована к публикации программным комитетом международной научной конференции «Параллельные вычислительные технологии 2015».
Ключевые слова: свойства алгоритмов, параллелизм, эффективность, производительность, локальность, масштабируемость, вики-технология, MediaWiki.
ИССЛЕДОВАНИЕ СВОЙСТВ АЛГОРИТМОВ Введение в проблематику
Задача исследования свойств алгоритмов остается весьма актуальной в особенности из-за повсеместного проникновения параллелизма в архитектуру современных вычислительных систем. Для эффективной реализации алгоритма на параллельных вычислительных системах помимо традиционных свойств, требуется исследовать и свойства, связанные с использованием ресурса параллелизма, такие как оценка параллельной сложности алгоритма, сбалансированность параллельных шагов по числу и типу операций и т.д. [1, 2]
Для определения тонких информационных свойств алгоритмов разработан подход, связанный с исследованием графа информационных зависимостей или графа алгоритма [1, 3-7] -единственной графовой модели программ и алгоритмов, содержащей полную информацию об их структуре. Этот подход позволяет опреде-
лить все необходимые свойства исследуемого алгоритма, как традиционные, так и связанные с использованием параллелизма. Ориентация на использование графа алгоритма гарантирует полноту определения ресурса параллелизма.
Потенциальный параллелизм особенно важен, так как в этом случае появляется возможность описания машинно-независимых свойств программ и их последующее эффективное отображение на различные архитектуры, а также их запись с помощью различных технологий параллельного программирования.
Одно из направлений работ в рамках данного проекта связано с отработкой и стандартизацией методов визуального представления графа алгоритма. Часто граф алгоритма является сложным многомерным объектом, а многие его свойства становятся понятными только при его удачном визуальном отображении. Один из примеров текущего варианта визуализации графа алгоритма приведен на рис. 1.
Использование разных типов вычислительных систем (компьютеров с общей и распределенной памятью, разнородных систем, систем, использующих различные типы ускорителей и т. д.) приводит к тому, что применительно к каждому типу компьютеров свойства алгоритмов должны использоваться по-разному. Возникает также ряд свойств, связанных с качеством именно различных параллельных реализаций рассматриваемого алгоритма. Это, например, свойства, описывающие степень локальности данных и вычислений в программе [8-11], или свойства, связанные с исследованием масштабируемости параллельной программы [12-15].
Исследования по определению информационной структуры программ опираются на методы статического анализа программ, т. е. на анализ лишь исходных текстов без какого-либо учета данных времени исполнения. Вместе с этим у авторского коллектива есть значительный задел и в области исследования динамических характеристик программно-аппаратных сред [16-18], что прекрасно дополняет сведения, полученные в статике. Разработана система мониторинга данных системного уровня, позволяющая для каждого приложения определять как типичные значения характеристик поведения, так и обнаруживать аномалии, сигнализирующие о деградации реальной производительности суперкомпьютерных систем.
В рамках данного проекта разработанная технология будет использована для описания свойств целого множества реальных алгоритмов и их реализаций для классов архитектур - это также является одной из задач проекта. На начальном этапе основной упор делается на алгоритмы линейной алгебры: различные варианты нахождения сумм элементов векторов и скалярного произведения, варианты перемножения матриц, умножения матрицы на вектор, различ-
ные алгоритмы решения систем линейных уравнений, алгоритмы решения задач на собственные вектора и значения, варианты задач как с плотными, так и с разреженными структурами. В дальнейшем множество алгоритмов будет расширено.
Предполагается, что выполненное описание свойств реальных алгоритмов ляжет в основу Открытой энциклопедии свойств алгоритмов в сети Интернет. Энциклопедия посвящена свойствам алгоритмов и должна предоставлять возможность коллективной работы всего вычислительного сообщества над ее пополнением и совершенствованием. Несмотря на ориентацию данного проекта в сторону мощных суперкомпьютерных систем, сформулированная проблема актуальна для всех компьютерных платформ, вплоть до мобильных телефонов и планшетов, которые также стали параллельными. Сегодня почти весь компьютерный мир стал параллельным, и другим он уже не станет никогда.
Структура описания свойств алгоритмов
Разработанное описание свойств алгоритмов состоит из двух частей [19]. В первой части описываются собственно алгоритмы и их свойства, а вторая посвящена описанию особенностей их программной реализации с учетом конкретных программно-аппаратных платформ. Такое деление на части сделано для того, чтобы машинно-независимые свойства алгоритмов, которые определяют качество их реализации на параллельных вычислительных системах, были бы выделены и описаны отдельно от множества вопросов, связанных с последующими этапами программирования алгоритмов и исполнения результирующих программ.
ЧАСТЬ I. Описание свойств и структуры алгоритмов: общая часть
1. Общее описание алгоритма
Общее словесное описание алгоритма является необходимым элементом схемы описания свойств алгоритмов, поскольку дает пользователю информацию как о том, к какому классу схожих по структуре алгоритмов данный алгоритм принадлежит, так и об особенностях алгоритма и объектов, с которыми он работает. По данной информации, а также по описанию математических свойств и структуры входных данных пользователь может однозначно понять суть решаемой задачи и определить, нужно ли ему дальнейшее знакомство с данным алгоритмом.
2. Математическое описание алгоритма
Математическое описание решаемой задачи
в виде совокупности формул и соотношений необходимо для строгой и однозначной постановки решаемой задачи для человека, знающего математику.
3. Выделение вычислительного ядра алгоритма
Выделение и описание вычислительного ядра (вычислительных ядер) алгоритма необходимо для понимания того, на какую часть приходится основное время работы алгоритма. Скорее всего, именно эти части будут представлять наибольший интерес для пользователя при дальнейших исследованиях.
4. Определение макроструктуры алгоритма
Многие алгоритмы удобно описывать не целиком, а в виде макроструктуры, ссылаясь на другие описанные алгоритмы в качестве составных частей.
5. Описание схемы реализации последовательного алгоритма
Прежде чем переходить к описанию параллельных вариантов алгоритма, полезно бывает понять, как устроен исходный последовательный вариант. Возможно, некоторым пользователям будет достаточно и его, либо же алгоритм может не иметь эффективной параллельной реализации.
6. Определение последовательной сложности алгоритма
Оценка последовательной сложности алгоритма в виде числа последовательных операций, которые нужно выполнить для получения результата работы алгоритма, позволяет понять, насколько сложным является последовательный вариант алгоритма. Недостаточное количество операций может говорить о том, что задача рас-
параллеливания данного алгоритма не имеет практического смысла.
7. Определение информационного графа алгоритма
Информационный граф (граф алгоритма) является удобным представлением алгоритма при исследовании его структуры, ресурса параллелизма, а также других свойств. Граф алгоритма обладает компактностью за счет параметризации. Визуальное представление графа алгоритма, а также его описание позволяют оценить многие полезные свойства исходного алгоритма.
8. Описание ресурса параллелизма алгоритма
Оценка параллельной сложности алгоритма как числа шагов, за которое можно выполнить данный алгоритм, в предположении доступности неограниченного числа необходимых исполнителей (процессоров, функциональных устройств, вычислительных узлов, нитей и т.п.) дает информацию о минимальном времени, за которое в принципе может быть выполнен данный алгоритм. Описание ресурса параллелизма в виде суперпозиции конечного и массового параллелизма позволяет оценить, каким потенциалом для распараллеливания данный алгоритм обладает.
9. Описание входных и выходных данных алгоритма
Описание объема, структуры, особенностей и свойств входных и выходных данных алгоритма позволяет судить о необходимости использования и необходимых характеристиках дисковых или иных хранилищ данных, а также о характеристиках каналов связи с ними при реализациях данного алгоритма. Предположения относительно диапазона значений входных данных могут повлиять на выбор той или иной реализации алгоритма.
10. Описание свойств алгоритма, важных на этапе реализации
Свойства алгоритма, независимые от программно-аппаратной среды, позволяют судить о многих особенностях алгоритма, которые необходимо учитывать при реализации на любом целевом суперкомпьютере.
ЧАСТЬ II. Описание свойств и структуры алгоритмов: программная реализация
1. Особенности реализации последовательного алгоритма
При переходе к реализациям полезно сначала оценить особенности и варианты реализации алгоритма в виде последовательной программы, которые влияют на эффективность ее выполне-
ния. Если последовательный вариант по какой-то причине является неэффективным на данной вычислительной платформе, то с большой вероятностью параллельная реализация также будет неэффективна.
2. Описание локальности данных и вычислений
Локальность работы с данными в программе является одним из базовых факторов, определяющих эффективность ее работы. Приводимые результаты оценки локальности работы с данными для конкретных реализаций должны помочь оценить влияние данного фактора и способствовать выбору оптимального варианта.
3. Возможные способы и особенности реализации параллельного алгоритма
Способов реализации обнаруженного в алгоритме ресурса параллелизма может быть много. Информация из данного раздела должна помочь выбрать тот вариант реализации, который будет наиболее эффективным.
4. Масштабируемость алгоритма и его реализации
Масштабируемость является ключевой характеристикой при использовании высокопроизводительных вычислительных систем. Всесторонний анализ этого фактора должен помочь более эффективному использованию имеющихся вычислительных ресурсов.
5. Динамические характеристики и эффективность реализации алгоритма
Анализ различных динамических характеристик различных реализаций алгоритма должен помочь определению реальных причин снижения производительности параллельного приложения, определению узких мест алгоритма, особенностей реализации и отображения на конкретную вычислительную платформу.
6. Выводы для классов архитектур
Выделение позитивных и негативных факторов по отношению к конкретным классам архитектур и определение вариантов оптимизации программы для различных суперкомпьютеров дает информацию, необходимую как для выбора целевой вычислительной платформы, так и для оптимизации программы под уже имеющийся суперкомпьютер.
7. Существующие реализации алгоритма
Для многих алгоритмов накоплен большой
багаж реализаций для самых разных целевых вычислительных платформ. Информация из данного раздела должна помочь ориентироваться в этом множестве реализаций, чтобы выбрать из них наиболее подходящую для конкретного пользователя.
ПЕРВАЯ ВЕРСИЯ ОТКРЫТОЙ ЭНЦИКЛОПЕДИИ
Технологическая основа
Первая версия Открытой энциклопедии свойств алгоритмов AlgoWiki [19, 20] реализована в сети Интернет по адресу http://algowiki-project.org. В качестве основы реализации был выбран программный механизм MediaWiki [21], реализующий систему управления контентом в стиле так называемой «вики»-технологии. Вики-технология предоставляет возможность создать сайт в сети Интернет, структуру и содержимое которого могут самостоятельно изменять пользователи с помощью предоставленных инструментов. Для форматирования текста и вставки различных объектов предлагается специальная разметка. На базе этой технологии построены Википедия [22] и многие другие сайты.
MediaWiki является свободно распространяемым программным средством с открытым кодом и написано на языке PHP. Для хранения данных используется база данных MySQL.
MediaWiki предлагает свой формат разметки текста, называемый викитекст, который поддерживает гиперссылки для создания ссылок между страницами и является более простым, наглядным и безопасным, чем язык HTML. Его использование позволяет создавать и редактировать страницы пользователям, не знакомым с такими технологиями, как XHTML и CSS.
Все варианты редактируемой пользователем страницы записываются в базу данных MySQL. Это дает возможность администратору легко аннулировать произведенные изменения в случаях как непреднамеренной порчи содержимого, так и вандализма или спама.
Для некоторых специальных целей (отображения формул, генерации pdf, специального форматирования и т.д.) используются специальные расширения, написанные на PHP независимыми разработчиками. Таких расширений разработано большое количество, их использование позволяет администраторам и пользователям получить возможность адаптировать сайт под собственные запросы.
Для представления на сайте математических формул используется расширение MathJax версии 0.7. Оно позволяет показывать формулы в форматах TeX и MathML путем вызова JavaScript-инструменгария MathJax.
Для поддержки многоязычности (в текущей реализации - русского и английского языков) установлено расширение Interwiki версии 2.0. Interwiki - это средство организации ссылок между различными вики-сайтами в сети Интернет. Оно предоставляет возможность избежать
вставки в текст полного адреса страницы, ограничившись внутренней ссылкой. При этом ссылка формируется из двух частей: к префиксу удаленного вики-сайта добавляется название удаленной страницы.
Для предоставления возможности конвертации страниц сайта в формат pdf установлено расширение Collection версии 1.5. К сожалению, получаемый файл в формате pdf иногда выглядит не идеально. Из-за того, что формулы генерируются в виде картинок и затем вставляются в итоговый файл вместе с текстом, на месте стыка текста и формул наблюдаются артефакты: не соблюдаются интервалы, математические символы немного «плавают» и т. д. На данный момент исследуется возможность использовать для этой цели другие расширения.
Для предоставления возможности сравнения различных версий одной и той же страницы установлено расширение Wikidiff2.
Для подсветки синтаксиса языков программирования установлено расширение SyntaxHighlight версии 1.0.8.4.
Организация сайта
В настоящее время пользователь по ссылке http://algowiki-project.org попадает на русскоязычную страницу Открытой энциклопедии свойств алгоритмов AlgoWiki (рис. 2). Это временное решение, оно связано с тем, что на первом этапе все описания алгоритмов выполняются на русском языке. В дальнейшем предполагается одновременное наполнение как русскоязычной, так и англоязычной версий энциклопедии. Сейчас для явного доступа в англоязычной части можно использовать адрес http://algowiki-project.org/en. Для связывания какой-либо страницы со страницей из другой части сайта (например, русскоязычной страницы с ангоязычной), в конце исходного кода помещается конструкция вида [[en:Main Page]], после этого в боковой панели слева, в разделе «На других языках» появится ссылка «English». Для того чтобы просто вставить в текст гиперссылку на страницу из другой части сайта, необходимо написать [[:en:Main Page]]. Примерно таким же образом многоязычность реализована и в Википедии.
Для того чтобы в русскоязычной и англоязычной частях не требовалось дублировать общие элементы описаний (такие, например, как рисунки), введен специальный раздел сайта, называемый вики-складом (http://algowiki-project.org/pool), предназначенный для хранения файлов, которые потенциально могут использоваться в обеих частях. Чтобы вставить на стра-
.*-*;./.■_. «т.« Обсужл«« читан, просмотр истащя [По—
Algowikii-.. Открытая энциклопедия свойств алгоритмов
Ошиепра..* Добро пожаловать! Присоединяйтесь!
«ршрлачи« Ф**л» Algowifci - зга открытая энциклопедия по свонс гган
Исиив файпи алгорчтмоа ш осовеиностам ах реализации на ратичныж
Ссылал cosa »оллслтир'ЮЙ работы ВМГ6 мирово о •нХиСЛиТсИаИМ'в
•шчат» которое поможет оценить его потенциал применительно к
конкретной параллельной вычислительной платформе. Кроме
«оммуиикяцмонный профиль «омратнш реалиицчй и нндгие
Структура проекта
Рис. 2. Главная страница Открытой энциклопедии свойств алгоритмов
ницу изображение, загруженное на вики-склад, использовать Interwiki не нужно, достаточно просто написать [[File:my_image.png]]. Система сконфигурирована так, что при отсутствии локального файла она ищет его на вики-складе. При этом оставлена возможность загружать файлы локально, а при конфликте имен действует приоритет локального хранилища.
Все три раздела (русскоязычный, англоязычный и вики-склад) поддерживают единые учетные записи. То есть достаточно один раз зарегистрироваться на любом из разделов, чтобы потом работать со всеми.
Главная часть Открытой энциклопедии свойств алгоритмов AlgoWiki находится в разделе «Классификация алгоритмов». В этом разделе доступ ко всем описаниям алгоритмов производится по группам, соответствующим типам выполняемых операций.
Для того чтобы всеми пользователями однозначно понимались термины, применяемые в описаниях алгоритмов, введен специальный раздел «Глоссарий». Пример статей из Глоссария можно увидеть на рис. 3. По принятым
algowki-project.org-'и/Глоссарий_- е| И- Google О. * -A Ú Й * , ф , =
23 Эффективность распараллеливания
Эффективность распараллеливания [parallel efficiency) Е = 5/р (rae S ■ полученное ускорение работы программы, а р - число используемых процессоров) определяет среднюю долю времени выполнения параллельного алгоритма, в течение которого процессоры реально используются для решения задачи, получение большого ускорения за счёт использования большого числа процессоров зачастую приводит к снижению эффективности.
Если не брать в расчёт эффект суперлинейного ускорения, то ускорение выполнения программы не превосходит числа используемых процессор«» р. а значит, эффективность распараллеливания не превосходит единицы. Чем ближе этот показатель к единице, тем лучше для пользователя, поскольку говорит о меньшем количестве накладных расходов, а значит, о лучшем качестве распараллеливания программы.
24 Эффективность реализации
Эффективность реализации (implementation efficiency) программы Rmax/Rpeak определяется как отношение реальной производительности Rmax к пиковой производительности Rpm,.
программы всегда меньше единицы, чем ближе этот показатель к единице, тем лучше для пользователя, поскольку говорит о том, что более эффективно задействованы ресурсы компьютера,
25 Ярусно-параллельная форма графа алгоритма
Ярусно-параллельная форма (ЯПФ) — это представление графа алгоритма, в котором;
• начальная вершина каждой дуги расположена на ярусе с номером меньшим, чем номер яруса конечной вершины.
Рис. 3. Фрагмент Глоссария Открытой энциклопедии свойств алгоритмов
на данный момент соглашениям ссылка на термин в Глоссарии вставляется на первое вхождение данного термина в редактируемой странице.
Для того чтобы по одной схеме заполнять все разделы описания свойств разных алгоритмов, началось формирование раздела «Руководства и методики», куда заносятся пошаговые инструкции по получению данных для соответствующих разделов описаний.
Само описание свойств конкретного алгоритма строится по приведенной выше структуре. В начале описания помещается карточка алгоритма, в которую выносятся основные свойства, характеризующие данный алгоритм. Информация из карточки алгоритма должна позволить читателю быстро оценить, насколько данный алгоритм может быть ему полезен. На рис. 4 приведено начало описания разложения Холецкого из Открытой энциклопедии свойств алгоритмов с показанной карточкой алгоритма. В дальнейшем планируется дополнять информацию в карточке алгоритма экспертными оценками (например, «хорошо реализуется только на компьютерах с общей памятью», «позволяет эффективно использовать графические ускорители» и т. д.) а также данными об эффективности наиболее популярных реализаций.
Рис. 4. Начало описания разложения Холецкого с карточкой алгоритма
Некоторые алгоритмы являются вариантами реализации какого-то общего метода решения математической задачи. В этом случае представляется разумным вводить дополнительный верхний уровень описания, а именно страницу с описанием общего метода решения, с которой идут ссылки на описания реализующих данный метод алгоритмов. В некоторых случаях представляется достаточным подробно описать некий базовый алгоритм, а на странице описания метода указать отличия других вариантов реализации алгоритмов от базового. Так, сейчас в рамках текущего варианта Открытой энцикло-
педии свойств алгоритмов для метода Холецкого выполнено подробное описание базового точечного вещественного варианта для плотной симметричной положительно-определенной матрицы, а далее на странице метода Холецкого будут описываться отличия блочного вещественного варианта для плотной симметричной положительно-определенной матрицы, варианта для плотной комплексно-симметричной матрицы и т.д.
В конце любых описаний Открытой энциклопедии свойств алгоритмов приводится список используемых источников. Также предполагается возможность указания авторства людей, осуществивших это описание.
Организация работы с сайтом
Для начала работы с сайтом пользователь должен зарегистрироваться. На данный момент регистрация свободная, но в будущем планируется введение какого-либо режима подтверждения регистрации. Сразу после получения доступа пользователь может создавать и редактировать страницы. Почти все действия по структурированию и обработке содержимого делаются пользователями вручную. Для разметки редактируемой страницы можно использовать вики-текст, вставляя вручную или с помощью встроенного редактора соответствующие теги.
Поскольку описание структуры алгоритмов предполагает широкое использование формул, для их набора используются конструкции LaTeX, заключенные в теги <math>...</math>. Для задания выключенных формул (тех, которые пишутся с новой строки и центрируются), используется конструкция : <math>... </math> (начинается с двоеточия).
Для создания новой страницы достаточно на ссылающейся странице ввести конструкцию вида [[Новая страница]] и перейти по автоматически получившейся ссылке. Есть специальные конструкции для установления ссылки на существующую страницу, для вставки рисунков и т. д. Для загрузки рисунка нужно использовать ссылку «Загрузить файл» в левой колонке. Лучше всего рисунки загружать на вики-склад.
Пользователю предоставляется возможность как создать pdf-файл из текущей страницы (нажав ссылку «Скачать как PDF» в левой колонке), так и выбрать конкретные страницы, из которых он хочет собрать pdf-файл (нажав ссылку «Создать книгу» в левой колонке).
Все последние произведенные действия с сайтом можно посмотреть по ссылке «Свежие правки» в левой колонке сайта.
НАЧАЛЬНОЕ НАПОЛНЕНИЕ ОТКРЫТОЙ ЭНЦИКЛОПЕДИИ
Классификация алгоритмов
В разделе «Классификация алгоритмов» делается попытка разложить все описываемые алгоритмы по тематическим разделам. Предполагается, что эта классификация будет со временем видоизменяться и пополняться по мере подключения к проекту специалистов, описывающих алгоритмы из других научных областей. Ничему также не противоречит, если какие-то алгоритмы будут входить сразу в несколько разделов.
На момент написания статьи классификация алгоритмов имеет такой вид:
1. Векторные операции
2. Умножение матрицы на вектор
3. Матричные операции
4. Разложения матриц
4.1 Треугольные разложения
4.2 Унитарно-треугольные разложения
4.3 Разложения на унитарные и хессенбер-говы матрицы
4.4 Разложения на унитарные и диагональные матрицы
5. Решение систем линейных уравнений
6. Тесты производительности компьютеров
7. Преобразование Фурье
8. Алгоритмы на графах
9. Алгоритмы поиска
10. Алгоритмы сортировки
11. Вычислительная геометрия
12. Компьютерная графика
13. Криптографические алгоритмы
14. Нейронные сети
15. Алгоритмы оптимизации
16. Алгоритмы теории игр
17. Алгоритмы моделирования квантовых систем
17.1 Алгоритмы моделирования кван-
товых вычислений
18. Другие алгоритмы
Список алгоритмов для начального наполнения
Для начального наполнения Открытой энциклопедии свойств алгоритмов А^о'^Ы был выбран ряд алгоритмов от весьма простых до достаточно сложных и содержательных. Этот набор в будущем должен послужить образцом при включении в проект новых специалистов, описывающих свои предметные области.
На момент написания статьи в разной степени готовности на сайте представлены следующие алгоритмы:
• Разложение Холецкого (метод квадратного корня)
• Суммирование сдваиванием
• Равномерная норма вектора, вещественная версия, последовательный вариант
• Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант
• Скалярное произведение векторов, вещественная версия, последовательный вариант
• Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант
• High Performance Conjugate Gradient (HPCG) benchmark
• Linpack benchmark
• Сумма вектора и произведения матрицы на другой вектор, вещественная версия, последовательный вариант, плотная матрица
• Сумма вектора и произведения матрицы на другой вектор, вещественная версия, последовательный вариант, разреженная матрица
• Последовательно-параллельный метод суммирования
• Последовательно-параллельный метод нахождения всех частных выражений для ассоциативных операций
• Схема Горнера, вещественная версия, последовательный вариант
• Сдвиг аргументов многочлена по схеме Горнера, вещественная версия, последовательный вариант
• Решение правой двухдиагональной СЛАУ, вещественная версия, последовательный вариант
• Решение правой двухдиагональной СЛАУ с единичной диагональю, вещественная версия, последовательный вариант
• Решение левой двухдиагональной СЛАУ, вещественная версия, последовательный вариант
• Решение левой двухдиагональной СЛАУ с единичной диагональю, вещественная версия, последовательный вариант
• Разложение трехдиагональной матрицы, вещественная версия, последовательный вариант (первая стадия прогонки)
• Разложение трехдиагональной матрицы, вещественная версия, последовательный вариант без корней (первая стадия прогонки)
• Разложение трехдиагональной матрицы, вещественная версия, последовательный вариант с корнями (первая стадия прогонки)
• Быстрое преобразование Фурье для степеней двойки
• Умножение плотных матриц
• Умножение плотной матрицы на вектор
• Метод Гаусса решения СЛАУ (прямой ход)
• Метод Гаусса решения СЛАУ (обратный ход)
• Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)
ЗАКЛЮЧЕНИЕ
Основная задача, которая ставится в данном проекте - это разработка фундаментальных основ и формализация процесса отображения алгоритмов на архитектуру параллельных вычислительных систем. Решение данной задачи позволит получить ответ на многие вопросы, такие как:
• Каковы фундаментальные основы процесса разработки эффективного программного обеспечения?
• Что в реальности влияет на эффективность?
• Что здесь можно воспринять из сделанного ранее, чтобы не повторять одну и ту же работу снова и снова?
• Как сохранить инвестиции (время, финансы и др.), вкладываемые в разработку программного обеспечения для высокопроизводительных вычислительных систем?
Создаваемая Открытая энциклопедия свойств алгоритмов А^о'^Ы не имеет прямых аналогов в мировой практике. Проблема тут не в том, чтобы сделать и опубликовать энциклопедию, работающую на принципах вики-технологий. Проблема в том, что нет не только адекватного контента, но даже понимания, как подобный контент можно было бы формировать.
Первая версия Открытой энциклопедии свойств алгоритмов не является окон-
чательной и будет модифицироваться и совершенствоваться. Однако на ней отрабатываются те принципы, которые хочется заложить в окончательный вариант энциклопедии, наполняемой мировым вычислительным сообществом.
Данные о динамических характеристиках конкретных реализаций алгоритмов, описанных
в рамках Открытой энциклопедии свойств алгоритмов AlgoWiki, получены на суперкомпьютерах СКИФ МГУ «Чебышев» [23] и «Ломоносов» [24].
Исследование выполнено в Московском государственном университете имени М. В. Ломоносова за счет гранта Российского научного фонда (проект N14-11-00190).
СПИСОК ЛИТЕРАТУРЫ
1. Воеводин В. В., Воеводин Вл. В. Параллельные вычисления. СПб.: БХВ-Петербург, 2002, 608 с. [ V. V. Voevodin, Vl. V. Voevodin, Parallel Computing, (in Russian), BHV-St.Petersburg, 2002, 608 p. ]
2. Гергель В. П. Высокопроизводительные вычисления для многопроцессорных многоядерных систем. М.: Издательство Московского университета, 2010. 544 с. [ V .P. Gergel, High-performance Computing for Multiprocessor Multi-core Systems, (in Russian), Moscow University Press, 2010, 544 p. ]
3. Воеводин В. В. Математические основы параллельных вычислений. М.: Изд. Моск. ун-та, 1991. 345 с. [ V. V. Voevodin, Mathematical Foundations of Parallel Computing, (in Russian), Moscow University Press, 1991, 345 p. ]
4. Воеводин В. В. Информационная структура алгоритмов. М.: Изд. Моск. ун-та, 1997. 139 с. [ V. V. Voevodin, Informational Structure of Algorithms, (in Russian), Moscow University Press, 1997, 139 p. ]
5. Воеводин Вл. В. Теория и практика исследования параллелизма последовательных программ // Программирование. 1992. N 3. С. 38-53. [ Vl. V. Voevodin, Theory and Practice of Parallelism Research of Sequential Programs, (in Russian), Programmirovanie. 1992. N 3. p. 38-53. ]
6. Воеводин Вл. В. Статический анализ и вопросы эффективной реализации программ // Вычислительные процессы и системы / под ред. Г. И. Марчука. М.: Физмат-лит, 1993. N 9. С. 249-301. [ Vl. V. Voevodin, Static Analysis and Effectiveness of Programs, (in Russian), in Vychislitel'nye processy i sistemy (ed. G. I. Marchuk), Phismatlit, 1993. N 9. p. 249-301. ]
7. Воеводин Вл. В. Описание входных и выходных данных фрагментов программ // Вестник Московского университета. Серия 15. 1997. N 1. С. 41-44. [ Vl. V. Voevodin, Description of Input and Output Data of Program Fragments, (in Russian), in Vestnik MSU. Part 15, 1997. N 1. p. 41-44. ]
8. Воеводин Вад. В. Характеристики типовых алгоритмических структур // Вестник Нижегородского университета. 2011. N 1(2). С. 181-189. [ Vad. V. Voevodin, Characteristics of Typical Algorithmic Structures, (in Russian), in Vestnik NNSU. 2011. N 1(2). p. 181-189. ]
9. Воеводин Вад. В. Визуализация и анализ профиля обращений в память // Вестник Южно-Уральского государственного университета. Серия Математическое моделирование и программирование. 2011. N 17(234). C. 76-84. [ Vad. V. Voevodin, Visualization and Analysis of the Memory References Profile, (in Russian), in Vestnik SUSU. 2011. N 117(234). P.76-84. ]
10. Воеводин Вад. В., Швец П. А. Метод покрытий для оценки локальности использования данных в про-
граммах // Труды XV Международной суперкомпьютерной конференции «Научный сервис в сети Интернет: все грани параллелизма». Абрау-Дюрсо, 2013. C. 176-180. [ Vad. V. Voevodin, P. A. Shvets, Cover Method to Estimate Locality of Data usage in Programs, (in Russian), in Proc. XV International Supercomputer Conference «Science Service & Internet». Abrau-Durso, 2013. p. 176-180. ]
11. Воеводин Вл. В., Воеводин Вад. В. Спасительная локальность суперкомпьютеров // Открытые системы.
2013. № 9. С. 12-15. [ Vl. V. Voevodin, Vad. V. Voevodin, The Saving Locality of Supercomputers, (in Russian), Otkrytye sistemy, 2013, № 9. p. 12-15. ]
12. Антонов А. С., Теплов А. М. Исследование масштабируемости программ с использованием инструментов анализа параллельных приложений на примере модели атмосферы NH3D // Вестник Южно-Уральского государственного университета. Серия «Вычислительная математика и информатика», Т. 2, N 1, 2013. С. 5-16. [ A. S. Antonov, A. M. Teplov, Study of Programs Scalability Using the Tools of Analysis of Parallel Applications on the Model of the Atmosphere NH3D, (in Russian), Vestnik SUSU, Vol. 2, N 1, 2013. p. 5-16. ]
13. Антонов А. С., Теплов А. М. Использование данных системного мониторинга для определения факторов, уменьшающих масштабируемость приложения // Научный сервис в сети Интернет: многообразие суперкомпьютерных миров: труды Всероссийской научной конференции (22-27 сентября 2014 г., г.Новороссийск). М.: Изд-во МГУ,
2014. С. 87-96. [ A. S. Antonov, A. M. Teplov, Using Data of Monitoring System to Determine the Factors that Reduce the Scalability of the Application, (in Russian), in Proc. International Supercomputer Conference «Science Service & Internet: a Variety of Supercomputing Worlds». Novorossijsk, 2014. p. 87-96. ]
14. Антонов А. С., Теплов А. М. О практической сложности понятия масштабируемости параллельных программ // Высокопроизводительные параллельные вычисления на кластерных системах (HPC 2014): Материалы XIV Международной конференции (г.Пермь, 10-12 ноября 2014 г.) Пермь: Издательство Пермского национального исследовательского политехнического университета, 2014. С. 20-27. [ A. S. Antonov, A. M. Teplov, On the Practical Complexity of Parallel Programs Scalability, (in Russian), in Proc. International Conference HPC 2014. Perm, 2014. P.20-27. ]
15. Теплов А. М. Об одном подходе к сравнению масштабируемости параллельных программ // Вычислительные методы и программирование: Новые вычислительные технологии (Электронный научный журнал). Т. 15, выпуск 4, 2014. С. 697-711. [ A. M. Teplov, An Approach to the Comparison of Parallel Programs Scalability, (in Russian), in Numerical Methods and Programming (Scientific on-line open access journal). Vol. 15, N 4, 2014. P. 697-711. ]
16. Никитенко Д. А. Комплексный анализ производительности суперкомпьютерных систем, основанный на данных системного мониторинга // Вычислительные методы и программирование: Новые вычислительные технологии (Электронный научный журнал). Т. 15, 2014. С. 85-97. [ D. A. Nikitenko, Overall supercomputer performance analysis based on system monitoring data, (in Russian), in Numerical Methods and Programming (Scientific on-line open access journal). Vol. 15, 2014. P. 85-97. ]
17. Антонов А. С., Жуматий С. А., Никитенко Д. А., Стефанов К. С., Теплов А. М., Швец П. А. Исследование
динамических характеристик потока задач суперкомпьютерной системы // Вычислительные методы и программирование: Новые вычислительные технологии (Электронный научный журнал). Т. 14, Сек. 2, 2013. С. 104-108. [ A. S. Antonov, S. A. Zhumatii, D. A. Nikitenko, K. S. Stefanov, A. M. Teplov, P. A. Shvets, Examination of Supercomputer System Jobs Flow Dynamic Characteristics, (in Russian), in Numerical Methods and Programming (Scientific on-line open access journal). Vol. 14, Sec. 2, 2013. P. 104-108. ]
18. Адинец А. В., Брызгалов П. А., Воеводин В. В., Жуматий С. А., Никитенко Д. А., Стефанов К. С. JobDigest -подход к исследованию динамических свойств задач на суперкомпьютерных системах // Вестник Уфимского государственного авиационного технического университета. Т. 17, № 2(55). С. 131-137. [ A. V. Adinetz, P. A. Bryzgalov, Vad. V. Voevodin, S. A. Zhumatiy, D. A. Nikitenko, and K. S. Stefanov, Job Digest: an approach to dynamic analysis of job characteristics on supercomputers, (in Russian), Vestnik UGATU, vol. 17, no. 2 (55), pp. 131-137, 2013. ]
19. Воеводин Вл. В. Открытая энциклопедия свойств алгоритмов AlgoWiki: от мобильных платформ до экзаф-лопсных суперкомпьютерных систем // Вычислительные методы и программирование: Новые вычислительные технологии (Электронный научный журнал) Т. 16, раздел 1, 2015. С. 99-111. [ Vl. V. Voevodin, AlgoWiki: an Open Encyclopedia of Parallel Algorithmic Features, (in Russian), in Numerical Methods and Programming (Scientific on-line open access journal). Vol. 16, Sec. 1, 2015. P. 99-111. ]
20. Воеводин Вл. В. Суперкомпьютер «Ломоносов», прикладные пакеты и особенности алгоритмов // Сборник докладов конференции СКТП-2014. Крыловский государственный научный центр. СПб, 2014. С. 25-28. [ Vl. V. Voevodin, «Lomonosov» Supercomputer, Application Packages and Algorithms Features, (in Russian), in Proc. Conference SCTI. SPb, 2014. P. 25-28. ]
21. MediaWiki [Электронный ресурс]. URL: http://www.mediawiki.org (дата обращения 28.01.2015). [ MediaWiki [Online]. Available: http://www.mediawiki.org ]
22. Wikipedia [Электронный ресурс]. URL: https://www.wikipedia.org (дата обращения 28.01.2015). [ Wikipedia [Online]. Available: http://www.mediawiki.org ]
23. Антонов А. С. СКИФ МГУ - основа Суперкомпьютерного комплекса Московского университета // Вторая Международная научная конференция «Суперкомпьютерные системы и их применение» (SSA'2008): доклады конференции (27-29 октября 2008 года, Минск). Минск: ОИПИ НАН Беларуси, 2008. С. 7-10. [ A. S. Antonov, SKIF MSU - the Foundation of Moscow University Supercomputing Center, Second International Conference «Supercomputing Systems and Applications»: papers (27-29 October 2008, Minsk)]. OIPI NAN Belarusi, 2008. P. 7-10. ]
24. Воеводин Вл., Жуматий С., Соболев С., Антонов А., Брызгалов П., Никитенко Д., Стефанов К., Воеводин Вад. Практика суперкомпьютера «Ломоносов»// Открытые системы, N 7, 2012. С. 36-39. [ Vl. Voevodin, S. Zhumatij, S. Sobolev, A. Antonov, P. Bryzgalov, D. Nikitenko, K. Stefanov, Vad. Voevodin, Practice of «Lomonosov» Supercomputer, Otkrytye sistemy. No. 7, 2012. P. 36-39. ]
ОБ АВТОРАХ
АНТОНОВ Александр Сергеевич, вед. науч. сотр. лаборатории парал. инф. технол. НИВЦ МГУ имени
М. В. Ломоносова. Дипл. мат-к. (МГУ имени М. В. Ломоносова, 1995). Канд. физ.-мат. наук по мат. и программному обеспечению выч. машин, комплексов, систем и сетей (МГУ имени М. В. Ломоносова, 1999). Тех-нол. парал. программирования, методы статического и динамич. анализа программ.
ВОЕВОДИН Вадим Владимирович, науч. сотр. лаборатории парал. инф. технол. НИВЦ МГУ имени М. В. Ломоносова. Дипл. мат-к, системный программист (МГУ имени М. В. Ломоносова, 2003). Канд. физ.-мат. наук (Иссл. задачи отображения программ и алгоритмов на архитектуру). Иссл. в обл. эффективности программ, локальности данных.
ВОЕВОДИН Владимир Валентинович, зам. дир. НИВЦ МГУ имени М. В. Ломоносова; зав. каф. суперкомпьютеров и квантовой информатики фак. ВМК МГУ имени М. В. Ломоносова; проф. фак. вычисл. мат. и информатики ЮУрГУ. Дипл. мат-к (МГУ имени М. В. Ломоносова, 1984). Канд. физ.-мат. наук по мат. и программ. обеспеч. выч. машин, комплексов, систем и сетей (МГУ имени М. В. Ломоносова, 1989). Д-р физ.-мат. наук по мат. и программ. обеспеч. выч. машин, комплексов, систем и сетей (МГУ имени М. В. Ломоносова, 1997). Чл.-кор. Рос. Ак. наук, отд. мат. наук, секция прикл. мат. и информатики (2003). Технол. параллельного программирования, методы статич. и динамич. анализа программ.
ТЕПЛОВ Алексей Михайлович, мл. науч. сотр. лаборатории парал. инф. технол. НИВЦ МГУ имени М. В. Ломоносова. Дипл. прикл. мат-к, сист. программист, прикл. мат. и информатика (МГУ имени М. В. Ломоносова, 2011). Масштабируемость, эффективность парал. программ, инструменты анализа парал. программ.
ФРОЛОВ Алексей Вячеславович, ст. науч. сотр. ИВМ РАН. Дипл. инж.-физик, автоматика и электроника (МФТИ, 1987). Канд. физ.-мат. наук, выч. мат. и мат. и програм. обеспеч. выч. машин, комплексов, систем и сетей (ИВМ РАН, 1990). Доц. каф. теории вероятностей и мат. статистики (РУДН, 1997). Линейная алгебра, парал. выч., теор. распараллеливание, методики распараллеливания, практич. распараллеливание алгоритмов.
rithm consists of two parts: a machine-independent properties of the algorithm and the characteristics of the different implementations of the algorithm. The first version of the Open encyclopedia of algorithmic features implemented in the Internet at http://algowiki-project.org. The potential of the technology demonstrated in the more than 10 real algorithms. The paper was recommended for publication by the program committee of the International Conference «Parallel Computing Technologies 2015».
Key words: algorithmic features, parallelism, efficiency, performance, locality, scalability, wiki technology, MediaWiki.
About authors:
ANTONOV, Alexander Sergeevich, Leading Researcher, MSU RCC. Dipl. Mathematician (Moscow State Univ., 1995). Cand. of Phys.&Math. Sci. (MSU, 1999). VOEVODIN, Vadim Vladimirovich, research associate in Parallel information technologies laboratory. Specialist in mathematics and system programming (MSU, 2003). VOEVODIN, Vladimir Valentinovich, Deputy Director for Research, Research Computing Center, Lomonosov Moscow State University; Chair of the Department on Supercomputers and quantum informatics at the Computational Mathematics and Cybernetics Faculty of MSU; Professor at the Computational Mathematics and Informatics Faculty of South-Ural State University. Dipl. Mathematician (Moscow State Univ., 1984). Cand. of Phys.&Math. Sci. (MSU, 1989). Dr. of Phys.&Math. Sci. (MSU, 1997). TEPLOV, Alexey Mikhailovich, Jr. Researcher LPIT RCC MSU. Dipl. Specialist in Mathematics and System Programming, Applied Mathematics and Computer Science (Moscow State Univ., 1995).
FROLOV, Alexey Vyacheslavovich, Senior Researcher, INM RAS. Dipl. Engineer-Physicist, Automation and Electronics (MIPT, 1987). Cand. of Phys.&Math. Sci. (INM RAS, 1990).
METADATA
Title: First Version of an Open Encyclopedia of Algorithmic Features.
Authors: A. S. Antonov1, Vad. V. Voevodin2, Vl. V. Voevodin3, A. M. Teplov4, A. V. Frolov5
Affiliation:
1,2,3,4 Moscow State University, Russia.
5 Institute of Numerical Mathematics, Russia.
Email: 1 [email protected].
Language: Russian.
Source: Vestnik UGATU (scientific journal of Ufa State Aviation Technical University), vol. 19, no. 2 (68), pp. 150-159, 2015. ISSN 2225-2789 (Online), ISSN 1992-6502 (Print).
Abstract: An Open encyclopedia of algorithmic features is a project of creation a public wiki-encyclopedia in the Internet, describing in details the properties and characteristics of the most commonly used mathematical algorithms. The proposed structure describing the properties of the algo-