Научная статья на тему 'Информационная структура алгоритмов и открытая энциклопедия AlgoWiki'

Информационная структура алгоритмов и открытая энциклопедия AlgoWiki Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
150
15
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ИНФОРМАЦИОННАЯ СТРУКТУРА / ПАРАЛЛЕЛИЗМ / ГРАФ АЛГОРИТМА / ALGOWIKI / ВИЗУАЛИЗАЦИЯ / ALGOVIEW

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Антонов Александр Сергеевич

В статье рассматриваются различные подходы к изучению информационной структуры алгоритмов. Одним из наиболее развитых подходов является построение и анализ информационных графов, называемых также графами алгоритмов. Информационный граф содержит всю необходимую информацию об информационных зависимостях, поэтому он может служить основой для обнаружения множества различных свойств исследуемого алгоритма. Открытая энциклопедия свойств алгоритмов AlgoWiki реализует в сети Интернет описание свойств различных вычислительных алгоритмов. Основой описания многих базовых свойств алгоритма в рамках AlgoWiki является информационный граф. В рамках данной работы разрабатывается программное средство AlgoView, позволяющее строить интерактивное трёхмерное представление информационного графа и встраивать его на страницы Открытой энциклопедия AlgoWiki.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Антонов Александр Сергеевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

This paper discusses various approaches to the study of the information structure of algorithms. One of the most developed approaches is the construction and analysis of information graphs, also called algorithm graphs. The information graph contains all the necessary information about information dependencies, so it can serve as the basis for detecting many different properties of the algorithm under study. The Open encyclopedia of algorithm properties AlgoWiki implements online description of the properties of various computational algorithms. The basis of the description of many basic properties of the algorithm in the framework of AlgoWiki is an information graph. As part of this work, the AlgoView software tool is being developed that allows you to build an interactive three-dimensional representation of an information graph and embed it on the AlgoWiki Open encyclopedia pages.

Текст научной работы на тему «Информационная структура алгоритмов и открытая энциклопедия AlgoWiki»

УДК 519.681

ИНФОРМАЦИОННАЯ СТРУКТУРА АЛГОРИТМОВ И ОТКРЫТАЯ ЭНЦИКЛОПЕДИЯ ALGOWIKI1 Антонов Александр Сергеевич

К.ф.-м.н., вед. н. с.,

Научно-исследовательский вычислительный центр МГУ имени М.В.Ломоносова, 119234 г. Москва, Ленинские горы, д.1 стр.4, e-mail: asa@parallel.ru

Аннотация. В статье рассматриваются различные подходы к изучению информационной структуры алгоритмов. Одним из наиболее развитых подходов является построение и анализ информационных графов, называемых также графами алгоритмов. Информационный граф содержит всю необходимую информацию об информационных зависимостях, поэтому он может служить основой для обнаружения множества различных свойств исследуемого алгоритма. Открытая энциклопедия свойств алгоритмов AlgoWiki реализует в сети Интернет описание свойств различных вычислительных алгоритмов. Основой описания многих базовых свойств алгоритма в рамках AlgoWiki является информационный граф. В рамках данной работы разрабатывается программное средство AlgoView, позволяющее строить интерактивное трёхмерное представление информационного графа и встраивать его на страницы Открытой энциклопедия AlgoWiki.

Ключевые слова: Информационная структура, параллелизм, граф алгоритма, AlgoWiki, визуализация, AlgoView.

Цитирование: Антонов А.С. Информационная структура алгоритмов и открытая энциклопедия AlgoWiki // Информационные и математические технологии в науке и управлении. 2019. № 2 (14). С. 112-121. DOI: 10.25729/2413-0133-2019-2-10

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

1 Работа выполняется при поддержке РФФИ, грант 19-07-01030. Результаты получены с использованием оборудования Центра коллективного пользования сверхвысокопроизводительными вычислительными ресурсами МГУ имени М.В. Ломоносова.

зачастую можно частично или полностью автоматизировать, как это делалось, например, в системе У-Яау [15], разработанной в НИВЦ МГУ имени М.В. Ломоносова.

Анализ способов вычисления арифметических выражений [1] или исследование только ациклических участков программ не могут быть признаны достаточными, поскольку основной ресурс параллелизма программ сосредоточен в циклах. Методам анализа циклических конструкций и пространства итераций также уделено много внимания, например, в работах [7, 12 - 14]. В настоящее время ряд исследовательских групп идёт по пути изучения типовых алгоритмических структур (например, [10]), но большинство этих методов имеют только ограниченную применимость и не описывают весь потенциал параллелизма исследуемого фрагмента программы.

Для избавления от указанных недостатков применяют подходы, ориентированные на использование графовых моделей программ [5]. В них в соответствие исследуемому фрагменту программы ставится некоторый граф, вершины и дуги которого могут нести различную смысловую нагрузку. В зависимости от выбранной смысловой нагрузки получают различные типы графовых моделей, исследование которых даёт информацию о структуре анализируемого фрагмента программы.

Информационный граф как основа изучения информационной структуры алгоритмов. Одним из наиболее развитых подходов к исследованию информационной структуры является построение и анализ информационных графов, называемых также графами алгоритмов [2, 3]. Под информационным графом понимается ациклический ориентированный граф, вершины которого соответствуют отдельным срабатываниям операторов программы, а дуги - истинным информационным зависимостям между ними. Информационный граф содержит всю необходимую информацию об информационных зависимостях, поэтому он может служить основой для обнаружения множества различных свойств исследуемого алгоритма. В [4] доказано, что для достаточно широкого класса программ можно найти компактное параметрическое описание отвечающих им информационных графов. Наличие таких описаний позволяет проводить автоматический анализ исследуемых программ.

Открытая энциклопедия свойств алгоритмов AlgoWiki. Открытая энциклопедия свойств алгоритмов AlgoWiki [6, 16] - это проект создания портала в сети Интернет, в рамках которого по единой схеме описываются свойства (в первую очередь, связанные с параллелизмом) различных вычислительных алгоритмов. Главной целью энциклопедии является исчерпывающее описание алгоритмов, которое помогает оценить их потенциал применительно к конкретной параллельной вычислительной платформе.

Все вычислительные алгоритмы в энциклопедии AlgoWiki описываются согласно единой структуре (см. рис. 1). Описание алгоритма состоит из двух частей, в первую часть включены разделы, связанные с машинно-независимыми свойствами алгоритмов, а во вторую - разделы, связанные с реализациями исследуемого алгоритма для различных программно-аппаратных платформ. Свойства, описанные в первой части, характеризуют сам анализируемый алгоритм и не должны изменяться при смене вычислительной парадигмы.

Основой описания многих базовых свойств алгоритма в рамках AlgoWiki является информационный граф.

1 Свойства и структура алгоритмов

1.1 Общее описание алгоритма

1.2 Математическое описание алгоритма

1.3 Вычислительное ядро алгоритма

1.4 Макроструктура алгоритма

1.5 Схема реализации последовательного алгоритма

1.6 Последовательная сложность алгоритма

1.7 Информационный граф

1.8 Ресурс параллелизма алгоритма

1.9 Входные и выходные данные алгоритма

1.10 Свойства алгоритма

2 Программная реализация алгоритма

2.1 Особенности реализации последовательного алгоритма

2.2 Локальность данных и вычислений

2.3 Возможные способы и особенности параллельной реализации алгоритма

2.4 Масштабируемость алгоритма и его реализации

2.5 Динамические характеристики и эффективность реализации алгоритма

2.6 Выводы для классов архитектур

2.7 Существующие реализации алгоритма

3 Литература

Рис. 1. Структура описания свойств алгоритмов в энциклопедии AlgoWiki

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

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

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

На рис. 2 приведён пример информационного графа для алгоритма умножения плотной матрицы на вектор. Он состоит из одной группы вершин, расположенной в

целочисленных узлах двумерной области, соответствующих операции а+bс . На рисунке отлично виден ресурс параллелизма данного алгоритма. Отдельными вершинами также показаны как входные (матрица a и вектор c°), так и выходные (вектор out0) данные алгоритма.

Рис. 2. Информационный граф умножения плотной матрицы на вектор

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

В ряде случаев для упрощения получаемого изображения применяются специальные дополнительные методы, например, построение макрографа на основе группировки отдельных операций в макровершины. Так, на рис. 3 показана часть информационного графа метода Гивенса QR-разложения квадратной матрицы. Рис. 3а) показывает структуру алгоритма на самом верхнем уровне на основе укрупнённых операций, помеченных на графе как «Б1» и «Б2». Этот рисунок позволяет оценить ресурс параллелизма данного алгоритма на внешнем уровне и выбрать метод его реализации. Рис. 3б) и 3в) показывают

информационную структуру макроопераций, соответствующих вершинам, помеченным 1» и <^2». В свою очередь, граф на рис. 3б) сам является макрографом, поскольку строится на основе операций, помеченных как <^0», «VI» и <<У2», структура каждой из которых далее изображается в виде отдельного информационного графа.

Рис. 3. Информационный граф метода Гивенса QR-разложения квадратной матрицы: а) макрограф; б) и в) - детализация макровершин F1 и F2

Система интерактивной трёхмерной визуализации информационных графов AlgoView. Во многих случаях процесс построения изображения информационного графа может быть частично или полностью автоматизирован. В рамках данной работы разрабатывается программное средство AlgoView [8, 9], позволяющее строить интерактивное трёхмерное представление информационного графа и встраивать его на страницы Открытой энциклопедии AlgoWiki.

Информационные графы в рамках системы AlgoView строятся на основании описания, заданного на языке XML. Подробнее про данный формат описания графов можно прочитать в статье [8]. По XML-файлу, соответствующему исходному алгоритму, строится набор 3D-моделей в формате JSON [11]. Полученные модели визуализируются в окне браузера посредством технологии WebGL [17] и предоставляются на страницах описаний алгоритмов Открытой энциклопедия AlgoWiki.

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

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

Рис. 4. Информационный граф алгоритма перемножения плотных матриц

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

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

относительно небольших графов такое изображение недостаточно наглядно, поэтому в интерактивной системе визуализации AlgoView предложен другой способ изображения канонической ярусно-параллельной формы. При нажатии определённых кнопок пользователь может получить ряд изображений, каждое из которых соответствует одному ярусу ярусно-параллельной формы. Так можно оценить ресурс параллелизма на конкретном шаге выполнения алгоритма, а пролистывая ярусы ярусно-параллельной формы, можно проследить продвижение «фронта», проходящего через информационный граф в процессе выполнения алгоритма. Так, на рис. 5 показан один ярус канонической ярусно-параллельной формы информационного графа метода Гивенса QR-разложения квадратной матрицы. Светлые вершины соответствуют операциям текущего яруса, более тёмные вершины -операциям последующих ярусов, а самые тёмные вершины - операциям предыдущих ярусов.

Рис. 5. Каноническая ярусно-параллельная форма информационного графа метода Гивенса QR-разложения квадратной матрицы

Заключение. В данной статье рассмотрен подход к исследованию информационной структуры алгоритмов, используемый в рамках Открытой энциклопедия AlgoWiki. Основой данного подхода является информационный граф, который может быть формально построен для широкого класса вычислительных алгоритмов. Информационный граф обладает многими полезными свойствами, в частности, содержит всю необходимую информацию для определения ресурса параллелизма анализируемого алгоритма.

В статье показаны некоторые способы представления информационных графов, предусмотренные в Открытой энциклопедии AlgoWiki. Для широкого графа алгоритмов возможно автоматическое построение информационного графа с использованием программного средства AlgoView. Дополнительные возможности предоставляются благодаря предусмотренным способам интерактивного взаимодействия с пользователем. Программное средство AlgoView продолжает развиваться, на его базе планируется замкнуть цепочку от анализа исходного кода программы до детальной визуализации информационной структуры реализуемого алгоритма.

СПИСОК ЛИТЕРАТУРЫ

1. Вальковский В.А. и др. Элементы параллельного программирования. (Под ред. Котова В.Е.). М.: "Радио и связь". 1983.

2. Воеводин В.В. Математические основы параллельных вычислений. М.: Изд. Моск. ун-та, 1991. 345 с.

3. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. СПб.: БХВ - Петербург. 2002.

4. Воеводин Вл.В. Теория и практика исследования параллелизма последовательных программ // Программирование. 1992. № 3. С. 38-53.

5. Воеводин Вл.В. Статический анализ и вопросы эффективной реализации программ // Вычислительные процессы и системы (Под ред. Марчука Г.И.). М.:"Физматлит". 1993. № 9. С. 249-301.

6. Открытая энциклопедия свойств алгоритмов. Режим доступа: https://algowiki-project.org (дата обращения 15.03.2019).

7. Allen J R., Kennedy K. Automatic Loop Interchange // SIGPLAN Notices. Vol. 19. No 6. Pp. 233-246. 1984.

8. Antonov A.S., Volkov N.I. An AlgoView Web-visualization System for the AlgoWiki Project // Communications in Computer and Information Science. 2017. Vol. 753. Pp. 3-13. DOI: 10.1007/978-3-319-67035-5_1.

9. Antonov A., Volkov N. Interactive 3D Representation as a Method of Investigating Information Graph Features // Communications in Computer and Information Science. 2018. Vol. 965. Pp. 587-598. DOI: 10.1007/978-3-030-05807-4_50.

10. Asanovic K., Bodik R., Catanzaro B.C., et al. The Landscape of Parallel Computing Research: A Viewfrom Berkeley, Report UCB/EECS-2006-183 (Univ. California at Berkeley, Berkeley, 2006).

11. Introducing JSON. Режим доступа: https://www.json.org (дата обращения 15.03.2019).

12. Lamport L. The Parallel Execution of Do Loops // Communications of the ACM. 1974. Vol. 17. No 2. Pp. 83-93.

13. Maydan D.E., Hennessy J.L., Lam M.S. Efficient and Exact Data Dependence Analysis // Proceedings of the ACM SIGPLAN'91 Conference on Programming Language Design and Implementation.

14. Pugh W. A Practical Algorithm for Exact Array Dependence Analysis // Communications of the ACM. August 1992. Vol. 35, No 8. Pp. 102-114.

15. Voevodin V.V., Voevodin V.V. The V-Ray Technology of Optimizing Programs to Parallel Computers // Proc. of the 1st workshop on numerical analysis and applications. Russe, Bulgary. 1996. Pp. 24-27.

16. Voevodin V., Antonov A., Dongarra J. AlgoWiki: an Open Encyclopedia of Parallel Algorithmic Features // Supercomputing Frontiers and Innovations. 2015. Vol. 2. No 1. Pp. 4-18.

17. WebGL 2.0 Specification. Режим доступа: https://www.khronos.org/registry/webgl/specs/latest/2.0 (дата обращения 15.03.2019).

UDK 519.681

INFORMATION STRUCTURE OF ALGORITHMS AND OPEN ENCYCLOPEDIA ALGOWIKI Alexander S. Antonov

Ph.D., Leading researcher Research Computing Center, Lomonosov Moscow State University 1, bld.4, Leninskie Gory, 119234, Moscow, Russia, e-mail: asa@parallel.ru

Abstract. This paper discusses various approaches to the study of the information structure of algorithms. One of the most developed approaches is the construction and analysis of information graphs, also called algorithm graphs. The information graph contains all the necessary information about information dependencies, so it can serve as the basis for detecting many different properties of the algorithm under study. The Open encyclopedia of algorithm properties AlgoWiki implements online description of the properties of various computational algorithms. The basis of the description of many basic properties of the algorithm in the framework of AlgoWiki is an information graph. As part of this work, the AlgoView software tool is being developed that allows you to build an interactive three-dimensional representation of an information graph and embed it on the AlgoWiki Open encyclopedia pages.

Keywords: Information structure, parallelism, algorithm graph, AlgoWiki, visualization, AlgoView

References

1. Val'kovskij V.A. i dr. Jelementy parallel'nogo programmirovanija [Elements of parallel programming]. (Ed. Kotov V.E.). Moscow. Radio i svjaz' = Radio and communication. 1983. (in Russian)

2. Voevodin V.V. Matematicheskie osnovy parallel'nyh vychislenij [Mathematical Foundations of Parallel Computing]. Moscow. Izd. Mosk. un-ta = MSU Publ. 1991. 345 p. (in Russian).

3. Voevodin V.V., Voevodin Vl.V. Parallel'nye vychislenija [Parallel computing]. St. Petersburg. BHV-Peterburg. 2002. (in Russian)

4. Voevodin Vl.V. Teorija i praktika issledovanija parallelizma posledovatel'nyh programm [Theory and practice of studying parallelism of sequential programs] // Programmirovanie = Programming. 1992. N 3. Pp. 38-53. (in Russian)

5. Voevodin Vl.V. Staticheskij analiz i voprosy jeffektivnoj realizacii programm [Static analysis and program implementation issues] // Vychislitel'nye processy i sistemy = Computational processes and systems (Ed. Marchuk G.I.), M.: Fizmatlit, 1993. N 9. Pp. 249-301. (in Russian)

6. Otkrytaja jenciklopedija svojstv algoritmov [Open Encyclopedia of Parallel Algorithmic Features]. Available at: https://algowiki-project.org (accessed 15.03.2019). (in Russian)

7. Allen J R., Kennedy K. Automatic Loop Interchange // SIGPLAN Notices. Vol. 19. No 6. Pp. 233-246. 1984.

8. Antonov A.S., Volkov N.I. An AlgoView Web-visualization System for the AlgoWiki Project // Communications in Computer and Information Science. 2017. Vol. 753. Pp. 3-13. DOI: 10.1007/978-3-319-67035-5 1.

9. Antonov A., Volkov N. Interactive 3D Representation as a Method of Investigating Information Graph Features // Communications in Computer and Information Science. 2018. Vol. 965. Pp. 587-598. DOI: 10.1007/978-3-030-05807-4_50.

10. Asanovic K., Bodik R., Catanzaro B.C., et al. The Landscape of Parallel Computing Research: A Viewfrom Berkeley, Report UCB/EECS-2006-183 (Univ. California at Berkeley, Berkeley, 2006).

11. Introducing JSON. Режим доступа: https://www.json.org (дата обращения 15.03.2019).

12. Lamport L. The Parallel Execution of Do Loops // Communications of the ACM. 1974. Vol. 17. No 2. Pp. 83-93.

13. Maydan D.E., Hennessy J.L., Lam M.S. Efficient and Exact Data Dependence Analysis // Proceedings of the ACM SIGPLAN'91 Conference on Programming Language Design and Implementation.

14. Pugh W. A Practical Algorithm for Exact Array Dependence Analysis // Communications of the ACM. August 1992. Vol. 35, No 8. Pp. 102-114.

15. Voevodin V.V., Voevodin V.V. The V-Ray Technology of Optimizing Programs to Parallel Computers // Proc. of the 1st workshop on numerical analysis and applications. Russe, Bulgary. 1996. Pp. 24-27.

16. Voevodin V., Antonov A., Dongarra J. AlgoWiki: an Open Encyclopedia of Parallel Algorithmic Features // Supercomputing Frontiers and Innovations. 2015. Vol. 2. No 1. Pp. 4-18.

17. WebGL 2.0 Specification. Available at: https://www.khronos.org/registry/webgl/specs/latest/2.0 (accessed 15.03.2019).

i Надоели баннеры? Вы всегда можете отключить рекламу.