УДК 519.6:519.725:681.3
ПОСЛЕДОВАТЕЛЬНО-ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
ДЛЯ СУПЕРКОМПЬЮТЕРОВ
©
1999 г. В. И. Мунерман
Введение
Проблема
программирования для суперкомпьютеров
относится к числу сложнейших проблем. Эта
сложность объясняется тем, что процесс
распараллеливания алгоритмов трудно
формализовать, и в большинстве случаев успех
распараллеливания зависит от искусства
программиста. Одно из решений указанной проблемы
состоит в использовании параллелизма данных. Достоинство
этого метода состоит в том, что программист
отвлекается от идеи распараллеливания и отдает
все силы созданию обычной последовательной
программы, которая на самом деле выполняется
параллельно, поскольку сами данные
обрабатываются параллельно [1,2]. Не будет преувеличением
сказать, что первые разработки параллелизма
данных были сделаны в Институте Кибернетики им.
В. М. Глушкова в работах В.А. Вышинского и З. Л.
Рабиновича, в которых впервые в качестве
базового типа данных для суперкомпьютеров были
предложены матрицы. Полученные результаты были
систематизированы в [3]. Настоящая статья посвящена
методу программирования суперкомпьютеров на
основе алгебры многомерных матриц [4], которая на наш взгляд наиболее
удобна для алгоритмизации задач и
структуризации данных [5, 6]. В настоящее время известен ряд
исследований по применению многомерных матриц
для представления данных в электронных таблицах
и базах данных и знаний. Далее в тексте термины
матрица и многомерная матрица обычно будут
использоваться как синонимы.
Алгебра
многомерных матриц
Рассмотрим кратко алгебру многомерных матриц. Обычно в математике рассматриваются числовые многомерные матрицы над полем действительных чисел. Однако в конкретных задачах матрицы могут содержать элементы произвольной природы. Кроме того, операции над элементами матриц не обязательно должны быть традиционными операциями сложения и умножения. Так в [7] рассматриваются матрицы над полукольцами (S, +, , 0, 1), где S - множество элементов, + и - соответственно ассоциативные аддитивная и мультипликативная операции, а 0 и 1 - нейтральные элементы для этих операций.
Пример 1. При решении задачи построения матриц доступности графа используется полукольцо ({0,1},,,0,1). В этом случае мы имеем дело с булевскими матрицами, элементы которых можно интерпретировать как "ложь" и "истина". В качестве аддититивной операции выступает дизъюнкция, а мультипликативной конъюнкция.
Пример 2. Для вычисления кратчайшего пути на графе используется полукольцо (R+,MIN,+,+,0). Здесь R+ - множество неотрицательных действительных чисел. В качестве аддитивной операции выступает операция MIN с нейтральным элементом +, а в качестве мультипликативной - операция + с нейтральным элементом 0.
В общем случае для определения элементов матриц не требуются даже полукольца. Рассмотрим алгебраическую систему (S, +, ), где S - множество элементов, + и - соответственно аддитивная и мультипликативная операции. Такие системы будем называть 2-группоидами, так как от каждой операции требуется только замкнутость на множестве S. 2-груп-поид - наиболее общий тип для элементов матриц, так как предъявляет минимальные требования к операциям. . Выбор аддитивной и мультипликативной операций может быть достаточно традиционным, как в примере 1, и весьма экзотическим как в примере 2.
В дальнейшем мы будем считать, что элементы матриц принадлежат, по крайней мере, к 2-группоидам.
Определим p-мерную матрицу как совокупность элементов где индексы i1,…,ip принимают значения от 1 до n соответственно. Таким образом, p-мерная матрица содержит n1…np элементов. Обозначим многомерную матрицу . Для многомерных матриц определяются операции сложения и умножения.
Суммой двух p-мерных матриц и с одинаковыми наборами индексов i1,…,ip называется p-мерная матрица с тем же набором индексов, элементы которой вычисляются по формуле .
Определим умножение многомерных матриц. Пусть даны две матрицы и , p и q-мерные соответственно. Разобьем совокупности индексов i1,…,ip и i1,…,iq на четыре группы, содержащие соответственно , , и индексов (, , , 0). Причем ++=p, а ++=q. Обозначим группы индексов как l=l1,…,l, s=s1,…,s, c=c1,…,c и m=m1,…,m. Представим матрицы A и B в виде и . Индексы групп s и c в матрицах A и B полностью совпадают. Тогда матрица , элементы которой вычисляются по формуле , называется произведением матриц A и B. Произведение многомерных матриц называется (свернутым произведением и обозначается (AB). Из определения (свернутого произведения следует, что для любой пары многомерных матриц можно, подбирая различные значения и , построить много различных произведений. Традиционная для алгебры матриц операция транспонирования задается перестановкой индексов .
Для матриц, определенных над алгебраическими системами с обратимым элементом по умножению, определяется операция обращения матрицы.
Наконец для многомерных
матриц определяется операция свертки матрицы.
Свертка матрицы
определяется через разбиение совокупности ее
индексов i1,…,ip на группы s=s1,…,s, c=c1,…,c
(+=p).
Матрица (q=), называется
сверткой матрицы А, если ее элементы
вычисляются по формуле .
Свертка матрицы A обозначается
B=А.
Многомерные матрицы и современные технологии
программирования
Обработка многомерных матриц хорошо согласуется с современными принципами и технологиями разработки программного обеспечения, в частности с объектно-ориентированным программированием, присущим всем современным языкам программирования, в том числе и языкам, используемым для программирования суперкомпьютеров.
Сама многомерная матрица легко представляется в виде объекта.
Совокупность данных этого объекта содержит:
Базовыми методами этого объекта являются:
В качестве примера рассмотрим задачу построения матриц, элементы которых - кортежи, содержащие элементы разных типов. Такие матрицы целесообразно использовать при программирование программ обработки информации в базах данных и знаний.
Пример 3. Пусть дана совокупность типов данных, T1,…,Tn, каждый из которых является по крайней мере 2-группоидом. Тогда кортеж c=(t1,…,tn), где tiTi (i=1,...,n), можно рассматривать как объект наследующий все свойства типов T1,…,Tn, в том числе и операции сложения и умножения элементов кортежей. Для кортежей также можно определить аддитивную и мультипликативную операции. Это может быть поэлементное сложение и умножение. Такой подход позволяет нам определить многомерную матрицу кортежей как объект, наследующий свойства объекта-кортежа. Построение многомерной матрицы кортежей показано на рис. 1. Мы используем здесь принцип множественного наследования, присущий ряду современных языков программирования. Этот принцип использован только для наглядности, так как его отсутствие в конкретном языке не является препятствием для построения матриц кортежей. Направление наследования свойств на рисунке - сверху вниз.
Рис. 1. Объектная модель многомерной
матрицы кортежей
Рассмотренные нами свойства многомерных матриц позволяют в заключение сформулировать один принцип, который позволяет облегчить алгоритмизацию задач, для решения которых необходимо использование суперкомпьютеров.
Принцип
последовательно-параллельного программирования
Сформулируем принцип последовательно-параллельного программирования в виде следующих четырех положений:
- в качестве базового типа данных используется алгебра многомерных матриц;
- операции этой алгебры реализуются как базовые процедуры обработки данных для конкретных суперкомпьютеров, с максимально допустимой степенью параллелизма;
- многомерные матрицы включаются в языки программирования как самостоятельные объекты;
- алгоритмы представляются как последовательности операций над многомерными матрицами.
Перечислим основные достоинства принципа последовательно-параллельного программирования.
Во-первых, исключается связь между свойствами конкретной архитектуры суперкомпьютера и способностью данного алгоритма к распараллеливанию.
Во-вторых, ограничивается число реализуемых параллельно алгоритмов, так как необходимо распараллелить только операции алгебры многомерных матриц. Поэтому можно наиболее полно использовать возможности данного суперкомпьютера для оптимизации программ, реализующих эти операции.
В-третьих, алгоритм и программа, реализующие задачу из некоторой предметной области разрабатываются как обычные последовательные алгоритмы и программы. Данные, представленные в виде многомерных матриц, последовательно обрабатываются операциями алгебры многомерных матриц как неделимые объекты. Такой подход наиболее естественен для человека.
В-четвертых, программа
выполняется на суперкомпьютере параллельно, так
как каждая операция над многомерными матрицами
реализуется параллельным алгоритмом.
Заключение
Параллельная обработка данных превращается сегодня из экзотики в естественный и необходимый при решении подавляющего большинства задач метод обработки данных. Это в свою очередь требует повышения эффективности работы программистов. Использование принципа последовательно-параллельного программирования позволяет использовать хорошо известные и отработанные и методы разработки, тестирования и отладки программ.
Представление информации посредством многомерных матриц, позволяет разрабатывать модели для различных предметных областей. Эти модели могут быть реализованы на суперкомпьютерах с минимальными затратами на программирование.
Например, анализ задачи оценки виброзащитных характеристик, при обработке результатов летных испытаний показал, что исходные данные удобно представляются с помощью многомерных матриц, а алгоритмы сводятся к выполнению операций над этими матрицами. Применение принципа последовательно-параллельного программирования при решении этой задачи позволяет существенно повысить эффективность этих алгоритмов благодаря параллельной реализации на суперкомпьютерах [6].
Одним из направлений использования метода последовательно-параллельного программирования являются экспертные системы. Многомерные матрицы представляют собой идеальное средство для классификации и представления правил принятия решений.
Сказанное позволяет
надеяться, что применение изложенного в статье
метода обеспечит возможность решения сложных
задач, требующих больших объемов вычислений.
1. Fox G. C. Solving Problems on Concurrent Processors. - Prentice Hall, 1988.
2. Foster I. Designing and Building Parallel Programs. - Addison-Wesley Publishing Company, Inc, 1995.
3. Рабинович З. Л. Машинный интеллект и ЭВМ пятого поколения. - Киев. - Кибернетика. - №3. - 1985. - С. 95-107.
4. Соколов Н. П. Введение в теорию многомерных матриц. - Киев: Наукова думка, 1972.
5. Гендель Е. Г., Мунерман В. И. Применение алгебраических моделей для синтеза процессов обработки файлов. - УСиМ. - 1984. - № 4. - С.69-72.
6. Митенков В. Б., Конычев В. И., Емельченко Е. П., Муннерман В.И., Самойлов М. Ю., Самойлова Т. А. Эффективное решение задач обработки результатов летных испытаний на суперкомпьютерах. // Тезисы докладов к международной конференции "Авиационные технологии 2000". - Жуковский, 1997. - С. III-16.
7. Ахо А., Хопкрофт Дж.,
Ульман Дж. Построение и анализ вычислительных
алгоритмов. - М., Мир, 1979.
Кафедра информатики
Смоленский государственный педагогический университет
Поступила в редакцию 3.07.99.