Институт механики и машиностроения Казанского научного
центра Российской Академии наук
Современная наука, ориентируясь на
вычислительный эксперимент, претерпевает качественное изменение в формах и
объемах экспериментальной базы. Отсюда вытекают изменения в технологиях поиска
решений актуальных задач. Обзор технологических цепочек (от постановки задачи
до получения ее решения) позволяет сделать интересное наблюдение. Как различны
проявления разрешений задач, стоящих в отличных друг от друга направлениях
научной деятельности, так и при использовании современного инструментария,
каковым является многопроцессорная вычислительная система, или иначе –
суперЭВМ, существует множественность подходов
к разрешению уже только одной конкретной задачи. Многовариантность подходов, порой, требует от исполнителей
приобретения ими определенных навыков работы с суперЭВМ.
Начинающим пользователям
многопроцессорных ЭВМ очень трудно сориентироваться во всех тонкостях их
использования при разработке программ по прикладным задачам. Как показывает
практика, трудности начинаются тогда, когда к разрабатываемому параллельному
программному обеспечению предъявляется требование его эффективности и
мобильности. Это связано с тем, что универсальные средства, облегчающие труд
программиста и обеспечивающие полноценный доступ к отладочной информации, еще
находятся в стадии разработки. Проблема, на самом деле, заключается в
отсутствии стандартов в области создания и отладки программ для суперЭВМ в виду
молодости компьютерной отрасли. По этой же причине на настоящий момент
отсутствуют логически завершенные учебные курсы по параллельному
программированию для начинающих.
Учитывая широкое разнообразие
выходящей в свет информации по использованию многопроцессорной вычислительной
техники и основываясь только на российский опыт, автор настоящего обзора
предпринял попытку в расстановке «маяков»
на некоторые общепринятые, а также вновь разрабатываемые технологии
использования суперЭВМ. При этом особое внимание обращено на проблемы, с
которыми сталкиваются программисты при решении прикладных задач на суперЭВМ.
Развитие многопроцессорной
вычислительной техники неразрывно связано с разработкой технологий
параллельного программирования – как универсальных, так и под конкретную
архитектуру суперЭВМ. Под технологией программирования, то есть под
организацией работы с памятью, подразумевается использование средств управления
конкретной вычислительной техникой.
Необходимо отметить, что при
составлении программных средств под суперЭВМ (как средств управления, так и
средств для решения прикладных задач) особое внимание следует уделять технике
программирования, то есть построению логической архитектуры программы. Здесь
подразумевается развитие и дополнение алгоритмов распараллеливания, повышающих
эффективность их выполнения на многопроцессорных ЭВМ.
Данный обзор подготовлен на основе
материалов, публикуемых в российской научной периодической печати, а также в
российской зоне сети Интернет.
1.1. Роль вычислительного эксперимента в научных исследованиях
С появлением электронных вычислительных машин (ЭВМ) в науке появился и бурно развивается принципиально новый научный метод – вычислительный эксперимент, значительно расширяющий и усиливающий ее возможности. Отметим, что основой численного эксперимента служит математическая модель (совокупность всех закономерностей, уравнений и других связей), которая с определенной точностью позволяет описать явление, воспроизвести процесс, а также охарактеризовать свойства исследуемого объекта. Хотя своему рождению новый метод проведения исследований обязан именно появлению мощных вычислительных машин, полнокровная его жизнь определяется триадой [1]: Физика – Математика – ЭВМ.
Вспомним, что «Физика» отвечает, в первую очередь, за следующий круг вопросов:
- выбор рационального подхода к изучению проблемы;
- установление различного уровня точности схем явления;
- проверка достоверности и пределов применимости схем и ММ;
- выявление особенностей изучаемой проблемы на основе анализа результатов вычислительного эксперимента.
«Математика» прежде всего выполняет следующие функции:
- дает математическую постановку задачи;
- обеспечивает выбор, модификацию или создание эффективного численного метода ее решения;
- создает алгоритм решения задачи, учитывающий особенности ЭВМ;
- отвечает за теоретические обоснования, связанные с постановкой задачи, сходимостью численного метода и т.д.;
- предлагает математические методы контроля за вычислениями.
«ЭВМ» объединяет ту часть забот по организации вычислительного эксперимента, которые непосредственно связаны с вычислительной машиной:
- создание программных средств для надежной и экономической реализации алгоритма;
- разработку и систематическое осуществление методов численного контроля;
- организацию и проведение вычислительного эксперимента на ЭВМ;
- участие в анализе его результатов, проведение дополнительных расчетов и т.д.
Новые возможности, открывающиеся перед исследователем, благодаря вычислительному эксперименту, заставляют шире и глубже смотреть на проблему проведения научного эксперимента, обращаясь и к ее методологическим аспектам.
В свое время вычислительный эксперимент стимулировал развитие дискретных подходов к изучению математических моделей [2]. Дискретные модели не только более удобны для их реализации на ЭВМ, но и богаче по своим возможностям. Однако обработка дискретных моделей в вычислительной практике связана с огромными затратами, которые характеризуются не только большим объемом используемой памяти, но и значительно большим временем обработки огромных числовых массивов математическими и графическими функциями. По этой причине практическое решение многих задач стало возможно только благодаря созданию многопроцессорных вычислительных систем.
Современные вычислительные
установки (суперЭВМ), позволяют существенно расширить фронт научных и
научно-технических
разработок [3, 4]. СуперЭВМ – это многопроцессорные вычислительные системы с
максимальной производительностью, максимальным объемом оперативной и дисковой
памяти в совокупности со специализированным программным обеспечением, с помощью
которого этой системой можно эффективно пользоваться.
Многопроцессорные вычислительные системы позволяют разрешить проблемы, связанные с использованием однопроцессорных компьютеров. Это находит свое отражение как в расчетном времени, так и в качестве визуализации состояния численной модели в процессе получения промежуточного результата глобального исследования.
СуперЭВМ могут быть использованы для решения задач прогнозирования, проектирования, распознавания и синтеза. Поэтому они становятся незаменимыми помощниками при решении задач физики, механики, материаловедения, химии, биологии и др. [4], которые, в свою очередь, диктуются все более усложняющимися запросами практики, а также попытками создания более рациональных общих теоретических моделей для изучения сложных физических явлений. Следует отметить, что при этом накапливается огромный информационный потенциал, поддерживаемый базами данных, управление которыми также может базироваться на применении суперЭВМ.
Использование многопроцессорных систем требует новых подходов к процессу программирования исследовательских комплексов. В настоящей работе освещены лишь некоторые направления, ориентированные на разрешение проблем в подходах к разработке параллельного программного обеспечения.
Исследовательские программные комплексы могут быть предназначены как для изучения математических моделей, так и для получения на их основе конкретных научных решений. Реализация таких программ на суперЭВМ позволяет проводить работу по моделированию условий эксплуатации исследуемого объекта, а также предоставлять в достаточном количестве визуальную информацию о состоянии исследуемой системы. Такие наработки, по сути, заменяют дорогостоящие натурные эксперименты.
1.2. От цели к разработке. Моделирование
объекта распараллеливания
Разрабатываемые подходы использования компьютеров основаны на тезисе: компьютер – это инструмент познания, при помощи которого добывают новую информацию об исследуемом объекте или явлении [5]. Следовательно, квалифицированный пользователь должен владеть современной методологией познания – моделированием. Моделирование – это не только конструирование объекта познания, но и метод познания. Моделирование есть методология работы, эффективность которой раскрывается лишь при высокой квалификации специалистов и при их свободном владении современными средствами формализации – логикой и математикой.
Сформулировав задачу и обозначив конечную цель, исследователь включается в поиск решения. Одним из путей его нахождения является моделирование. Пройденный путь становится методом.
Процесс моделирования предполагает как движение «от предмета к модели» (отражение действительности в системе понятий), так и движение «от модели к предмету» (испытание истинности модели на ее возможностях). Компьютер является естественным средством проведения такого рода «исследовательских» циклов.
Специалисты по теории разработки программного
обеспечения при описании процесса его создания весьма редко уделяют внимание
моделированию. С другой стороны специалисты по моделированию обосновывают
настоятельную необходимость широкого использования своих методов при
проектированиии любых сложных систем. Так как программный комплекс является
сложной системой с большим количеством уровней и компонентов, а также со
сложной структурой связей между
ними, то при разработке таких систем необходимо применять моделирование.
Принимая во внимание, что разработка параллельного программного обеспечения (объекта распараллеливания) на сегодняшний день представляется достаточно сложной, проблема создания теоретических основ его проектирования стоит еще более остро. Кроме анализа структуры и свойств разрабатываемых программ на всех этапах проектирования моделирование может позволить описать все особенности взаимодействия параллельных процессов на уровне имитационной модели. В работе [6], на основании требований, предъявляемых к параллельному программному обеспечению, предлагается использование графоаналитического подхода к имитационному моделированию проекта программы. Целью упомянутой работы явилась выработка требований к аппарату имитационного моделирования параллельного программного обеспечения, а также создание аппарата, сохраняющего баланс между математической простотой и строгостью - с одной стороны, и практической применимостью - с другой.
Таким образом, можно констатировать, что наиболее удобным средством анализа вычислительных алгоритмов параллельных вычислений являются графы (см. также [7]).
Проблема создания современных пакетов прикладных программ, ориентированных на широкий класс задач механики, выходит далеко за рамки синтеза этих задач из отдельных программных модулей. Она связана с глобальной оптимизацией всей вычислительной последовательности задач. Поэтому пакет программ, как продукт, используемый в научно-прикладных целях не только самими создателями, должен производиться на качественно новом уровне программирования. При разработке современного программного обеспечения необходимо не только учитывать нелинейные (с обратным влиянием) связи между всеми звеньями вычислительной цепочки, но и реализовывать возможность сегментации программы на высоком, среднем и низшем уровнях параллелизации вычислительного процесса. Сегментация необходима для более эффективного использования многопроцессорных систем. Кроме этого, при разработке численного алгоритма следует увязывать между собой вопросы точности и надежности конечного программного обеспечения, а также вопросы его эффективности и переносимости под конкретную архитектуру суперЭВМ. Такое параллельное программирование существенно отличается от традиционного – последовательного.
Освещению вышеперечисленных вопросов перехода от модели проекта параллельной программы к конечной разработке программного продукта и посвящена настоящая работа.
2.1. Архитектура суперЭВМ – среда
распараллеливания
В качестве фундаментальной работы, посвященной особенностям архитектуры суперЭВМ и неразрывно связанными с ними аспектами параллельного программирования можно выделить монографию Воеводина В.В. [8].
Концепция параллелизма привлекала внимание специалистов потенциальными возможностями повышения производительности и надежности вычислительных систем. Первой промышленной разработкой, ориентированной на массово-параллельные системы, стали транспьютеры (это микрокомпьютер с собственной внутренней памятью и каналами для соединения с другими транспьютерами) [9]. Первый транспьютер появился в 1983 г. Отличительным признаком транспьютера на момент его появления являлся встроенный межпроцессорный интерфейс. Однако со временем подобный интерфейс появился во всех микропроцессорах. С начала 90-х годов, в связи с потерей конкурентоспособности в производительности, транспьютеры были заменены более высокопроизводительными системами.
Прежде, чем перейти к описанию современных суперЭВМ отметим, что использование современных многопроцессорных систем подразумевает параллельную обработку данных. Различают два способа параллельной обработки [4]: собственно параллельную и конвейерную. Параллельная обработка данных подразумевает одновременную работу независимых устройств. Идея конвейерной обработки данных заключается в расчленении операции на отдельные этапы – ступени конвейера. Каждая ступень, выполнив свою работу, передает результат следующей ступени, одновременно принимая новую порцию входных данных.
Современные суперкомпьютеры можно условно разделить на следующие классы:
- Векторно-конвейерные компьютеры, характеризующиеся наличием функциональных конвейерных устройств и набором векторных команд.
- Массивно-параллельные компьютеры с распределенной памятью, представляющие собой соединение микропроцессоров с помощью сетевого оборудования.
- Параллельные компьютеры с общей памятью, вся оперативная память которых разделяется несколькими одинаковыми процессорами, обращающимися к общей дисковой памяти. При этом проблем с обменом данными между процессорами и синхронизацией их работы, практически, не возникает. Вместе с тем главным недостатком такой архитектуры является то, что по чисто техническим причинам число процессоров, имеющих доступ к общей памяти, нельзя сделать большим.
- Кластерные компьютеры. Это класс суперкомпьютеров, представляющих собой комбинации предыдущих трех.
На сегодняшний день наиболее широкое распространение получили массивно-параллельные масштабируемые системы и кластеры серии МВС.
Суперкомпьютерная установка системы МВС представляет собой мультипроцессорный массив, объединенный с внешней дисковой памятью и устройствами ввода-вывода информации под общим управлением персонального компьютера или рабочей станции [10, 11].
Многопроцессорная вычислительная система МВС-100, система второго поколения, предназначена для решения прикладных задач, требующих выполнения большого объема вычислений, и по своему характеру допускающих подразделение на некоторое число компонент – подзадач, работающих параллельно на разных процессорах.
Отличительным признаком МВС является наличие некоторого набора соединенных между собой процессорных узлов (2, 4, 8, 16, …), который и представляет из себя "процессорное поле". С этим процессорным полем и связана обычная персональная вычислительная машина, которую ниже будем называть фронтальной. Фронтальная машина обеспечивает общение с процессорным полем МВС. Как правило, на ней производится подготовка задач к счету (редактирование текстов, трансляция, линковка и т.д.). Часто на ее дисках находится файловая система пользователя. Большое процессорное поле может быть разбито на секции, каждая из которых может быть предоставлена отдельному пользователю, то есть каждая такая секция связана с отдельной фронтальной машиной. Кроме этого отдельному пользователю может быть предоставлено объединение нескольких таких секций. Деление на секции позволяет более гибко и экономно использовать дорогостоящее оборудование. Каждый процессорный узел МВС представляет собой либо транспьютер, либо пару: транспьютер + вычислитель i860. Процессорный узел располагает оперативной памятью значительного объема (порядка нескольких МБайт). Пиковая производительность i860 достигает 80-100 мегафлопс (миллионов операций в секунду) над 64-разрядными числами. Среди процессорных узлов вычислительного комплекса могут быть специализированные узлы, обслуживающие файловую и графическую системы.
МВС-1000 - система третьего поколения, основана на использовании микропроцессоров Alpha 21164 с производительностью до 2 млрд. операций в секунду и присоединенной оперативной памятью объемом 0,1-2 ГБайт. Мультипроцессорный массив системы с блоками вторичного электросилового питания и вентиляцией располагается в стойках промышленного стандарта. Межпроцессорный обмен в данной системе по исполнению структурно аналогичен тому, что используеется в системе МВС-100. Он реализуется в двух модификациях: на базе "транспьютероподобного" связного микропроцессора TMS320C44, имеющего 4 канала с пропускной способностью каждого - 20 Мбайт/с, либо на базе связного микропроцессора SHARC ADSP 21060, имеющего 6 внешних каналов с пропускной способностью каждого - 40 Мбайт/с.
Кластерное исполнение МВС-1000К отличается использованием для межпроцессорного обмена коммутационной сети myrinet с пропускной способностью канала в дуплексном режиме 2x160 Мбайт/с. Кроме того, предусмотрено подключение к каждому процессору памяти на жестком диске с объемом 2-9 Гбайт.
Вычислительный кластер – это мультикомпьютер, состоящий из множества отдельных компьютеров (узлов), связанных между собой единой коммуникационной системой [12]. Каждый узел имеет свою локальную оперативную память. При этом общей физической оперативной памяти для узлов не существует. Каждый узел может быть мультипроцессором (мультипроцессорный компьютер с общей памятью). Коммуникационная система обычно позволяет узлам взаимодействовать между собой только посредством передачи сообщений, но некоторые системы могут обеспечивать и односторонние коммуникации , то есть позволять любому узлу выполнять массовый обмен информацией между своей памятью и локальной памятью любого другого узла.
Причины, по которым создаются распределенные системы, и в чем их преимущества перед централизованными ЭВМ [13]:
1-ая причина – экономическая.
2-ая причина – техническая. Путем объединения микропроцессоров можно достичь такой высокой производительности, которая недостижима в централизованном компьютере.
3-я причина – естественная распределенность.
4-ая причина – надежность.
5-я причина – наращиваемость производительности.
Также обратим внимание на используемые сегодня архитектуры машин баз данных [14]. Они представляют из себя следующие системы.
Системы с разделяемой памятью и дисками – все процессоры при помощи общей шины соединяются с разделяемой памятью и дисками. Поскольку здесь каждому процессору доступны вся память и любой диск, проблема балансировки загрузки процессоров не вызывает принципиальных трудностей. В силу этого такие системы демонстрируют для небольших конфигураций (не превышающих 20 процессоров) более высокую производительность по сравнению с остальными архитектурами. При большом количестве процессоров начинаются конфликты доступа к разделяемой памяти, что может привести к серьезной деградации общей производительности системы (поэтому масштабируемость реальных систем ограничивается 20-ю – 30-ю процессорами).
Системы с разделяемыми дисками – каждый процессор имеет собственную память и доступ к любому диску. Такие системы демонстрируют лучшую масштабируемость и более высокую степень отказоустойчивости. Однако при реализации подобных систем существует ряд технических проблем, из-за которых эти системы не поддерживаются в чистом виде.
В системах без совместного использования ресурсов – каждый процессор имеет собственную память и собственный диск. Процессоры соединяются друг с другом при помощи высокоскоростной соединительной сети. Системы с такой архитектурой имеют наилучшие показатели по масштабируемости и отказоустойчивости. Но основным их недостатком является сложность в обеспечении сбалансированной загрузки процессоров.
Иерархические архитектуры. Для преодоления недостатков, присущих вышеописанным системам используются иерархические (гибридные) архитектуры. Одним из таких примеров служит двухуровневая иерархическая архитектура – система без совместного использования ресурсов, объединяющая в себе системы с разделяемой памятью и дисками. В настоящее время разрабатывается более прогрессивная трехуровневая иерархическая архитектура [15], в основе которой лежит дисковый массив, управляемый двухпроцессорными модулями с разделяемой памятью. Отличительными особенностями предложенной архитектуры являются отказоустойчивость, высокая готовность данных и возможность эффективной балансировки загрузки в условиях перекосов данных. Параллельно с этой разработкой ведется работа по созданию программной системы обработки базы данных с использованием межкластерной и внутрикластерной фрагментации данных. Такой принцип управления базой данных должен обеспечить балансировку загрузки процессоров и при этом избежать перемещения по соединительным сетям больших объемов данных.
Как видно из приведенного выше примера, архитектура суперЭВМ непосредственно влияет на структуру программы. Об этом влиянии и пойдет речь в следующем разделе.
2.2. Аппаратно-эксплуатационная зависимость. Уровни декомпозиции объектов
распараллеливания
Для предоставления пользователям суперЭВМ возможности одновременного выполнения большого числа научных вычислений, или многопоточной обработки запросов в базе данных на многопроцессорных ЭВМ должно стоять соответствующее серверное обеспечение. В данном случае, функции распараллеливания лежат не только на прикладном программном обеспечении, но и на операционной системе.
В общем случае, при создании операционных систем параллельной обработки данных центральными являются две взаимосвязанные проблемы: первая - минимизация времени выполнения заданных объемов вычислений; и вторая - синхронизация большего числа одновременно взаимодействующих параллельных процессов [16]. Для решения каждой из них разрабатываются свои подходы. В упомянутой работе предлагается учитывать тот факт, что при реализации сложных механизмов синхронизации происходит рост накладных расходов, что самым негативным образом сказывается на оперативности решения задач. Выявленная проблема в многопроцессорных системах с ограниченным параллелизмом по числу процессоров разрешается методом минимизации общего времени выполнения заданных объемов вычислений.
Результаты реализации
такого подхода относятся, прежде всего, к «операционному параллелизму». В таких
системах может оказаться полезным метод, основанный на построении расписания
моментов запуска и окончания каждого из конкурирующих процессов, что дает
возможность не только наиболее эффективно решить проблему синхронизации
процессов, но и существенно минимизировать системные затраты и
непроизводительные простои процессоров. Метод по управлению
взаимодействием между параллельными процессами осуществляется с помощью
технологии «семафоров» [17].
При создании исследователями прикладного программного обеспечения практическая ценность разрабатываемых ими численных методик определяется не только результатами, полученными с их помощью при исследовании сложных явлений, но и их применимостью на конкретных суперЭВМ. Обнаружено, что с ростом производительности персональных компьютеров, стимулирующим развитие вычислительных методов, происходят также качественные изменения в архитектуре суперкомпьютеров, ориентированные на углубление параллелизма и специализации процессоров. А это, в свою очередь, стимулирует поиск новых представлений физических явлений, допускающих более прямое отображение на архитектуру вычислительной техники. Так, например, появился клеточно-автоматный подход в газо- и гидродинамике [18]. В статье представлена новая модель параллельных вычислений – клеточно-нейронная сеть (КНС). В ней описывается суть клеточно-автоматной модели, а также показаны широкие возможности КНС для представления пространственно-временной динамики активных сред. Эта модель может служить основой для создания параллельных программ, предназначенных для решения дифференциальных уравнений в частных производных, а также для имитации явлений нелинейной динамики. Отмечается, что применение КНС-методов вычисления с использованием параллельных процессоров позволит резко повысить решение задач такого класса.
Целью любой работы, связанной с параллельным программированием, является рассмотрение взаимосвязей между структурой математического алгоритма и архитектурой многопроцессорной вычислительной системы. В зависимости от сложности поставленной задачи возможна реализация различных видов взаимосвязей. Последние называются уровнями декомпозиции исходной задачи. Они могут быть определены следующим образом [19]:
Первый уровень - разбивка задачи на несколько подзадач.
Второй уровень - разбиение каждой отдельно взятой подзадачи на множество одновременно выполняемых при различных исходных данных квазиоднотипных процедур. В математической физике такой тип параллелизма называют геометрическим параллелизмом или параллелизмом данных, так как распараллеливание здесь производится путем распределения вычислений в разных точках расчетной области в разные процессоры.
Третий уровень - распараллеливание отдельных процедур.
Наиболее глубокий уровень распараллеливания, четвертый – разбиение арифметических процессов на число процессоров.
Последний не рекомендуется к использованию на суперЭВМ с распределенной памятью, у которых на каждый процессор выделена локальная память. Исследователями большинства прикладных задач рекомендуется останавливать процесс их декомпозиции на втором уровне.
Далее рассмотрим, какие объекты в алгоритмах решений задач поддаются распараллеливанию.
Основные численные методы (метод конечных элементов, метод конечных разностей и другие) сводят исходную задачу к формированию (тем или иным способом) системы линейных алгебраических уравнений (СЛАУ) и последующему ее решению [20]. В последовательной программе, например, реализующей метод конечных элементов, основная часть времени приходится на формирование самой СЛАУ (расчет коэффициентов), а не на ее решение. Важно также отметить, что элементы матрицы СЛАУ зависят только от своего положения в ней и не зависят друг от друга. В этом случае складывается благоприятная ситуация для применения параллельных алгоритмов формирования СЛАУ. При этом необходимо выполнить следующие операции:
1) расщепить вычислительную задачу на параллельные ветви;
2) провести вычисления в этих ветвях;
3) сформировать и решить СЛАУ (тем или иным способом).
В статье [21] приводится пример описания параллельного алгоритма формирования СЛАУ, а также особенности применения технологии MPI, о которой будет сказано ниже, для решения поставленной задачи.
В статье [22] рассматривается реализация метода Гауса для решения разреженных систем линейных алгебраических уравнений на ЭВМ с параллельными процессами и общей памятью. Отмечается, что разбиение на несколько потоков команд возможно либо по функциональному признаку, либо непосредственно по данным. В предложенной постановке задачи возможна только реализация разбиения по данным. При этом обращается внимание на допустимость выделения из задачи несвязных областей.
Кроме этого в той же статье указывается на привязку предлагаемого параллельного алгоритма к конкретной архитектуре ЭВМ, но при этом отмечается, что эффективность алгоритма распараллеливания зависит от соотношения числа процессов к числу процессоров, а также от объема обрабатываемой информации за один цикл.
Обобщая вышеизложенный пример, можно сформулировать тезис о том, что циклы – это одни из наиболее важных программных конструкций с доступным параллелизмом. Проблема извлечения мелкозернистого параллелизма (параллелизма внутри циклов) из этих конструкций имеет важное значение в свете возрастающей популярности суперскалярных ЭВМ и она подробно освещена в работе [23]. Далее приводится пример оправданности использования декомпозиции на уровне арифметических операций.
В статье [24] представлены алгоритмы вычислительных процедур, а также полученные с их помощью результаты, основанные на методологии сверхточной параллельной арифметики. Эту методологию предлагается применять для решения прикладных задач линейной алгебры и математической физики. Отмеченная работа посвящена созданию алгоритмических и программных средств поддержки точных матричных вычислений, основанных на комплексном использовании параллелизма MIMD-систем [8] и многоразрядной арифметики с динамической длиной операндов. Особое внимание уделяется влиянию округлений в базовых матричных операциях на точность вычисления матричных задач. В работу включены библиотека программ, а также тестовые примеры, демонстрирующие эффективность разработанного подхода. Представленные результаты демонстрируют возможность выполнения на параллельных ЭВМ точных матричных вычислений с одновременной передачей сообщений. Разработанный пакет прикладных программ может быть легко адаптирован к выполнению на параллельных компьютерах различных типов.
Очевидно, что использование многоразрядной арифметики не является типичным для суперкомпьютеров. Ее применение неизбежно ведет к замедлению выполнения приложения. Однако потери времени в этом случае могут быть компенсированы не только проведением расчетов с максимальным использованием стандартных типов данных, но также и адаптацией высокоэффективных параллельных алгоритмов, изначально приспособленных к исполнению на однопроцессорной ЭВМ, к средствам высокоточной обработки. Многоразрядная арифметика должна применяться только в самых «тяжелых» участках алгоритма. Но даже в этом случае динамическая длина операндов помогает обрабатывать только ограниченное количество разрядов. Именно таким образом предлагается достигать баланс между скоростью и точностью вычислений.
В статье [25] подробно анализируется векторно-конвеерная архитектура суперЭВМ семейства CRAY. В результате проведенных исследований обнаружены факторы программирования, снижающие производительность суперЭВМ.
К ним относятся:
- секционирование длинных векторных операций (увеличивает накладные расходы);
- перегрузка буферов команд (увеличивает накладные расходы);
- конфликты при обращении в память (в случае использования общих ресурсов);
- ограниченная пропускная способность каналов передачи данных (зависит от архитектуры суперЭВМ);
- и другие.
Здесь также приводятся примеры (в программных кодах), демонстрирующие выход из неблагоприятных ситуаций.
В ряду выше упомянутых исследовательских работ особо выделяется разработка, в которой структура алгоритма не приспосабливается к структуре ЭВМ, а сама определяет структуру последней [26]. Работа ориентирована на создание новых современных вычислительных технологий и методов параллельного программирования, направленных на повышение эффективности решения фундаментальных научных и прикладных проблем в области численного моделирования задач аэродинамики и физической газовой динамики. Особое внимание в ней уделено теоретическим вопросам распараллеливания. В работе рассматриваются различные методы декомпозиции полной задачи на ряд одновременно выполняемых подзадач. Весьма важным, имеющим стратегическое значение, является теоретический этап исследования проблемы распараллеливания программного комплекса, то есть разработка принципов (а на их основе – конкретных методов и способов) оптимальной декомпозиции всей совокупности алгоритмов, составляющих процессорную систему и ее операционную среду.
В статье предлагаются три основных вида декомпозиции (сегментации) для планируемого к разработке программного комплекса «Поток-3» в процессе подготовки к параллелизации составляющих его алгоритмов:
- физико-математический;
- геометрический;
- технологический.
Одним из глобальных видов структурирования высокого уровня для решаемой проблемы является декомпозиция исследуемого физического процесса по составляющим его подпроцессам и, соответственно, сегментация общего алгоритма решения полной задачи на ряд алгоритмов решения составляющих подзадач.
В работе предлагается сегментный алгоритм параллельного проведения вычислений по физическим процессам, при этом работа всех модулей-сегментов вычислительного ядра программы инициируется одновременно. Кроме того, в каждом сегменте может одновременно стартовать работа подсегментов.
Исключительно важное значение при распараллеливании вычислительных процедур приобретает синхронизация вычислений и маршрутизация данных, неудачная организация которых приводит либо к неверному счету, либо к большим накладным расходам компьютерного и астрономического времени из-за всякого рода задержек счета на ожидание данных и, соответственно, бездействия процессоров в некоторых сегментах. Предполагается, что последнее приводит к неоптимальности, или даже невозможности использования реконфигурируемого процессорного пространства.
Геометрическая декомпозиция (сегментация) полной задачи и последующая параллелизация вычислений позволяет существенно снизить величину астрономического времени, требуемого на вычисления. Геометрическая декомпозиция заключается в разделении всей области интегрирования на карту подобластей (сегментов), а также в одномоментном расчете состояния физического процесса в каждой из подобластей с последующей сшивкой решений. В статье приводятся требования к математической постановке задачи, допускающие геометрическую декомпозицию.
Технологическая декомпозиция подразумевает под собой сегментирование математически независимых задач. Возможны несколько уровней технологической декомпозиции. Самый наглядный пример декомпозиции – это распараллеливание программы на определенные физико-математические задачи, каждая из которых тоже может состоять из алгоритмически независимых задач. Процесс технологической декомпозиции сильно зависит от структуры программы и от используемых в ней численных методов.
Применение последнего вида декомпозиции предполагает повышенное внимание к эффективности параллельной программы.
2.3. Эффективность параллельной программы
Применение суперЭВМ налагает особые требования на вновь создаваемые программные средства, обеспечивающие надежную и экономичную реализацию алгоритма при решении прикладных задач. Эффективность использования суперЭВМ проявляется при создании сложных исследовательских комплексов и экспертных систем.
Написать эффективную параллельную программу намного труднее, чем последовательную. Создание программного обеспечения для параллельных компьютеров – это центральная проблема суперкомпьютерных вычислений [4].
Частично, проблема выбора оптимального числа параллельных ветвей в соответствии с критерием минимума суммарных затрат времени может быть решена в автоматах генерации параллельной программы. Частный случай разрешения этой проблемы для вычислительных систем с MIMD архитектурой рассмотрен в статье [27].
Эффективность использования многопроцессорных вычислительных систем в значительной мере определяется качеством прикладных параллельных программ. Программа считается эффективной, когда во время ее выполнения загружены все процессоры, выделенные под процессы. Но практически, это не реализуемо. Существует множество факторов, вытекающих из технических возможностей организации распараллеливания процессов.
При составлении параллельных программ необходимо выбирать оптимальное число параллельных ветвей (процессов). Существуют два вида распараллеливания: статическое и динамическое. Под статическим распараллеливанием понимается: выявление параллелизма, допускаемого исходной программой; формирование параллельных ветвей (процессов). Под динамическим распараллеливанием понимается: определение операторов, готовых к выполнению; планирование параллельного вычислительного процесса.
Отметим, что идеальная параллельная программа обладает следующими свойствами:
1. Длины параллельно выполняемых ветвей равны между собой.
2. Полностью исключены простои из-за ожидания данных, передачи управления и возникновения конфликтов при использовании общих ресурсов.
3. Обмен данными полностью совмещен с вычислениями.
Увеличение степени эффективности параллелизма (уменьшение временных затрат на накладные расходы) достигается следующими способами:
- укрупнением единиц распараллеливания;
- уменьшением сложности алгоритмов генерации параллельных процедур (подпрограмм);
- изначальной подготовкой пакета различных вариантов исходных данных;
- распараллеливанием алгоритмов генерации параллельных процедур (подпрограмм).
Основные этапы самого процесса адаптации программ к архитектуре параллельных компьютеров, а также описание задач, возникающих на каждом из этих этапов, представлены в статье [28]. На некоторые из задач, с которыми столкнулись авторы проведенного исследования, хотелось бы обратить особое внимание. Среди них следующие:
Исследование общей структуры программы:
- выделение основного вычислительного ядра, локализация ввода-вывода;
- определение потенциального параллелизма фрагмента;
- выделение чисто последовательных фрагментов вычислений и попытка использования альтернативных алгоритмов для таких фрагментов;
- определение и минимизация точек перераспределения данных;
- преобразование традиционных циклов под параллельные алгоритмы;
- минимизация числа и объема временных массивов для оптимизации работы с кэш-памятью;
- переход от исходной программы, работающей с полными массивами, к программе, обрабатывающей только локальную порцию, распределенную на процессор: изменение размеров массивов и соответствующее преобразование текста программы.
Отметим, что решение этих задач позволяет достичь эффективности переноса последовательной программы на параллельную архитектуру.
Процесс разработки параллельной программы очень длителен и трудоемок, не смотря на то, что, как правило, на момент ее создания уже имеется реализация ее "последовательного" аналога. Обычно программа разрабатывается на машине с одной архитектурой, а ее практическое применение производится на другой с отличной от первой топологией, но при этом более мощной. Такой подход позволяет экономить машинное время на более мощных суперЭВМ, которых на порядок меньше по сравнению с более дешевыми моделями суперкомпьютеров.
При переносе параллельной программы на машины с различной архитектурой перед программистом встает проблема неработоспособности однажды разработанных параллельных процедур.
На сегодняшний день не существует универсальных средств адаптации программ под конкретную архитектуру суперЭВМ, поэтому большую часть этой проблемы приходится решать вручную, что делает процесс адаптации очень трудоемким [28]. Для облегчения труда программиста в математических институтах РАН разрабатываются библиотеки эффективных процедур и алгоритмов под конкретные архитектуры суперЭВМ (УРО РАН, НИВЦ МГУ им.М.В.Ломоносова). Обращение к этим библиотекам может частично облегчить труд программиста-прикладника не только на этапе модификации программы под более мощные суперЭВМ, но и на этапе первичной разработки параллельной программы.
Кроме этого, использование предлагаемых процедур и алгоритмов, соответствующих особенностям архитектуры целевого компьютера, должно обеспечивать наибольшую эффективность исходной программы.
2.4. Технологии управления вычислительными процессами и базами данных – средства
распараллеливания
2.4–А. Если приложение реализовано в виде множества процессов (или нитей), то эти процессы (нити) могут взаимодействовать двумя основными способами:
- посредством разделения памяти (оперативной или внешней);
- посредством передачи сообщений.
Технология, реализующая первый способ взаимодействия между параллельными процессами, в основном, реализована в языках высокого уровня с внедренными в них функциями управления параллельной обработки данных [29].
Для реализации второго способа распараллеливания пригодны, например, технологии MPI и DVM [12].
Поскольку наибольшее распространение получили суперЭВМ, для которых реализуем принцип передачи сообщений, то остановим свое внимание на описании последних технологий.
Предпочтительность использования той или иной технологии определяется следующими факторами:
- легкость программирования;
- эффективность разработанных программ;
- переносимость и повторное использование программ;
- качество средств отладки программ.
С этих позиций было проведено сравнение выше перечисленных технологий [12]. Приведем основные результаты этого исследования.
MPI расшифровывается как "Message passing interface" ("Взаимодействие через передачу сообщений") [30] - одна из популярных технологий управления процессами в приложениях. Ее цели:
- создать интерфейс прикладного программирования;
- обеспечить возможность эффективных коммуникаций (избежать копирования из памяти в память, позволить совмещение вычислений и коммуникаций или разгрузку на коммуникационный процессор там, где он есть);
- определить интерфейс, который мог бы быстро быть реализован на многих продаваемых платформах без серьезной переделки ниже лежащего коммуникационного и системного ПО;
- и другие.
MPI предоставляет программисту единый механизм взаимодействия ветвей внутри параллельного приложения независимо от машинной архитектуры (однопроцессорные/многопроцессорные с общей/раздельной памятью), взаимного расположения ветвей (на одном процессоре/на разных)
В числе основных достоинств MPI по сравнению с интерфейсами других коммуникационных библиотек обычно называют следующие его возможности:
- возможность использования в языках Фортран, Си, Си++;
- предоставление возможностей для совмещения обменов сообщениями и вычислений;
- предоставление режимов передачи сообщений, позволяющих избежать излишнего копирования информации для буферизации;
- широкий набор коллективных операций допускающих гораздо более эффективную реализацию параллельной программы;
- удобные средства именования адресатов сообщений, упрощающие разработку стандартных программ или разделение программы на функциональные блоки.
Однако разработчики MPI
подвергаются и суровой критике за то,
что интерфейс получился слишком громоздким и сложным для прикладного
программиста. Интерфейс оказался сложным и для реализации. В итоге
в настоящее время практически не
существует реализаций MPI, в которых в полной мере обеспечивается совмещение
обменов с вычислениями.
Модель параллелизма по данным и управлению DVM – это модель, положенная в основу языков параллельного программирования Фортран-DVM и Си-DVM. Она объединяет достоинства модели параллелизма по данным и модели параллелизма по управлению. Базирующаяся на этих языках система разработки параллельных программ (DVM) создана в Институте прикладной математики им. М.В. Келдыша РАН [31, 32].
В отличие от модели параллелизма по данным, в системе DVM программист распределяет по процессорам виртуальной параллельной машины не только данные, но и соответствующие вычисления. DVM спецификации параллелизма реализованы таким образом, что они остаются прозрачными для обычных компиляторов. Эта особенность оформляется в виде специальных комментариев. Во-первых, это упрощает внедрение новых параллельных языков, поскольку программист знает, что его программа без каких-либо изменений может выполняться в последовательном режиме на любых ЭВМ. Во-вторых, это позволяет использовать следующий метод поэтапной отладки DVM-программ. На первом этапе программа отлаживается на рабочей станции как последовательная программа, используя обычные методы и средства отладки. На втором этапе та же программа выполняется на той же рабочей станции в специальном режиме проверки DVM-указаний. На третьем этапе программа может быть выполнена в специальном режиме, когда промежуточные результаты параллельного выполнения сравниваются с эталонными результатами (например, результатами последовательного выполнения).
Программа на языках Фортран-DVM и Си-DVM, помимо описания алгоритма обычными средствами языков Фортран 77 или Си, содержит правила параллельного выполнения этого алгоритма.
Программисту предоставляются следующие возможности спецификации параллельного выполнения программы:
- распределение элементов массива между процессорами;
- распределение витков цикла между процессорами;
- спецификация параллельно выполняющихся секций программы (параллельных задач) и отображение их на процессоры;
- организация эффективного доступа к удаленным (расположенным на других процессорах) данным.
Еще раз подчеркнем, что DVM-программы, без каких-либо изменений, могут компилироваться и выполняться на последовательных ЭВМ в среде компиляторов Фортран 77/90 или Си.
Переносимость DVM-программы на произвольные кластеры или сети ЭВМ обеспечивается тем, что она преобразуется в программу на языке Фортран 77 (или Си), содержащую вызовы функций системы поддержки, которая для организации межпроцессорного взаимодействия использует библиотеку MPI. Такая программа может выполняться всюду, где есть MPI и компиляторы с языков Си и Фортран 77.
2.4–Б. Переход к информационному обществу сопровождается лавинообразным ростом объемов информации, хранимой в ЭВМ. Это, в свою очередь, порождает проблему эффективной организации и поиска информации. Для представления в ЭВМ больших объемов данных используются технологии баз данных. Для работы с базами данных используется специальное системное программное обеспечение, называемое СУБД (Система управления базами данных) [14].
До недавнего времени большинство машин баз данных включали в себя только один процессор. Однако в последнее десятилетие возник целый ряд задач, требующих хранения и обработки сверхбольших объемов данных. В результате возникла проблема, которая привела к тому, что даже самые мощные однопроцессорные ЭВМ не справляются с их обработкой. Естественное решение проблемы обработки сверхбольших баз данных – использовать в качестве машин баз данных многопроцессорные ЭВМ, позволяющие организовать параллельную обработку данных.
В основе современной технологии систем баз данных лежит реляционная модель, состоящая из отношений, которые легче всего представить в виде двумерных (плоских) таблиц. Реляционная модель наилучшим образом подходит для распараллеливания запросов. В общей форме этот процесс можно описать так: каждое отношение делится на фрагменты, которые располагаются на различных дисковых устройствах, при этом каждый фрагмент обрабатывается на отдельном процессоре.
Но подобный способ разбиения отнюдь не идеален, так как в результате мы, скорее всего, получим фрагменты, существенно различающиеся между собой по размерам, а это в свою очередь может привести к сильным перекосам в загрузке процессоров. Следовательно, чтобы распараллеливание запросов в параллельной машине стало эффективным, необходим механизм, позволяющий выполнять перераспределение (балансировку) нагрузки между процессорами динамически, то есть во время выполнения запроса.
Другая серьезная проблема, связанная с использованием параллельных машин баз данных, возникает из-за ограничения масштабируемости, которая связана с использованием общих ресурсов разными участниками запросов.
Существует еще одна серьезная проблема – проблема обеспечения отказоустойчивости параллельной системы.
Проект над технологией управления базами данных, в которой реализованы критерии быстродействия (быстрый отклик на запрос), загруженности машины и сохранность данных носит название «Омега» [29].
2.5. Проблемы отладки и мониторинга.
Верификация объекта распараллеливания
Проблема отладки и мониторинга очень актуальна в виду отсутствия менеджеров, которые предоставляли бы разработчику прикладного ПО промежуточную информацию, особенно актуальную на начальном этапе проектирования. В управлении же операционной системой суперЭВМ такая проблема является повседневной реальностью. Ситуация становится еще сложнее, если речь идет об управлении распределенными разнородными системами. В общем случае задача отладки и мониторинга таких систем ставится следующим образом [33]. Имеется сеть разнородных по аппаратным и/или программным платформам узлов, на каждом из которых (квази)параллельно выполняется множество процессов (нитей). Имеется также совокупность пользователей, каждый из которых желает отслеживать и/или воздействовать на свое подмножество программных и/или аппаратных компонентов.
Трактовка отладки/мониторинга, как контролируемого выполнения, меняет место отладки в жизненном цикле систем, позволяет применить архитектурные и протокольные решения, характерные для средств управления. Это делает средства отладки масштабируемыми, способными обслуживать распределенные разнородные системы.
Для дальнейшего развития средств отладки/мониторинга важно формирование набора спецификаций, определяющих функциональность разрабатываемых программ-менеджеров.
Программы представляют собой сложные динамические системы. Особенно это относится к параллельным и реактивным программам (работающим в диалоговом режиме), которые включают в себя сложные взаимодействия между процессами программы и взаимодействие с внешним миром. Исследование таких программ нельзя проводить в терминах отношений между входными и выходными значениями программы, как это обычно делается для последовательных программ. Это показывает, что проверка и доказательство правильности работы таких программ требует разработки адекватных средств формальной спецификации. В частности, необходимо иметь возможность формально выражать отношения между состояниями системы в моменты времени, в которые происходят те или иные события при работе программной системы. В статье [17] обсуждается подход к анализу параллельной программы, основанный на применении методов математической логики.
Функция управления процессами является одной из важнейших задач операционной системы. Для выполнения этой задачи на суперЭВМ может использоваться технология семафоров [13], которая заключается в блокировке и разблокировке процессов.
Семафоры традиционно использовались для синхронизации процессов, обращающихся к разделяемым данным. Каждый процесс должен исключать для всех других процессов возможность одновременного обращения к своим данным.
При решении прикладных задач, в большинстве случаев, объем получаемой информации настолько велик, что исключается возможность верификации – детального анализа данных, получаемых непосредственно вычислительной программой. Поскольку для таких ситуаций не существует универсальных графических пакетов с визуализацией различных изометрических проекций и цветовых гамм, поэтому разработчикам прикладного программного обеспечения рекомендуется их дополнительная разработка.
3.1. Эффективность программных
средств
Несмотря на несомненные успехи в применении мультипроцессорных систем, имеют место рассуждения о низкой их эффективности [34]. Рост производительности мультипроцессорной системы в целом обусловлен сбалансированностью вычислительной работы и обменов на ее фоне. Невыполнение этого условия – одна из причин деградации по производительности при распараллеливании с увеличением числа вычислительных модулей программы. Поэтому выводы следует делать на основе достижения приемлемой эффективности при распараллеливании на число процессоров, фактически необходимое для решения задачи в заданные временные сроки.
Оценка эффективности программ ведется еще со времен первых мультипроцессорных систем – транспьютеров [35]. Уже тогда предпринимались попытки для успешного разрешения проблемы максимального использования времени под вычисления. Как отмечалось выше, при решении конкретной задачи, в первую очередь, необходим поиск вариантов параллелизма на основе разбивки отдельно взятой задачи на несколько подзадач. Во вторую очередь, допускается параллелизм данных (или геометрический параллелизм), являющийся одним из возможных уровней декомпозиции задачи для ее реализации на многопроцессорной технике. Этот вид параллелизма означает, что вычислительная область разбивается на подобласти, каждая из которых сопоставляется с отдельно взятым процессором системы.
Критерии эффективности распараллеливания вычислительных процессов в больших задачах математического моделирования, включающих системы дифференциальных уравнений, нелинейные и нестационарные задачи, а также процедуры оптимизации на вычислительных системах с распределенной памятью, проанализированы в работе [36]. Предложенный авторами этой работы анализ можно резюмировать тремя выводами:
1. Эффективность распараллеливания при решении многомерных сеточных задач определяется, главным образом, способом декомпозиции области и ее отображения на архитектуру вычислительной сети.
2. Увеличение вычислительной сложности проблемы (ввод или включение нелинейности, нестационарности, оптимального управления) принципиально не меняют ни ускорение, ни эффективность его распараллеливания.
3. Увеличение логической и «интеллектуальной» сложности алгоритмов (адаптивные сетки с динамическими локальными сгущениями, визуальный контроль за вычислительным процессом и его коррекция) значительно снижает эффект распараллеливания.
Однако авторами той же статьи отмечается, что при решении практической задачи определяющими факторами могут оказаться именно «тактические уловки» и искусство программиста, умеющего использовать особенности конкретной вычислительной системы.
В настоящее время наибольшее распространение получили суперЭВМ сетевой конфигурации MIMD архитектуры. Сетевое управление таких систем поддается администрированию программными средствами. Одним из программных средств распараллеливания, получившим на сегодня наибольшую популярность, является технология MPI. MPI предоставляет программисту единый механизм взаимодействия ветвей внутри параллельного приложения независимо от машинной архитектуры. Однако на основании приведенных в главной части обзора сведений, следует обратить внимание на технологию DVM. Приведем количественную оценку сложности параллельного программирования на соотношениях количества дополнительных операторов по отношению к последовательной программе. Так в последовательную версию программы при ее распараллеливании необходимо добавить следующее количество операторов – порядка 50% для MPI и до 10% для DVM. При этом следует отметить, что дополнительные операторы DVM-программы являются простыми спецкомментариями, не зависящими от размеров массивов и числа процессоров. Дополнительный код MPI-программы представляет собой сложную систему программ управления передачей сообщений, зависящих от размеров массивов и числа процессоров.
При разработке реальных
параллельных программ, как правило, достижение высокой эффективности требует
многократных изменений программы для поиска наилучшей схемы ее
распараллеливания. Успешность такого поиска определяется простотой модификации
программы. Кроме того, прикладному программисту трудно реализовать многие часто
используемые приемы распараллеливания так же эффективно, как они реализуются
системами программирования. Поэтому на реальных программах
MPI-подход, как
правило, проигрывает DVM-подходу
по эффективности.
3.2. Перспективы развития материальной базы и
технологий
В последнее время широкое распространение получили распределенные вычислительные системы (кластеры) из-за сложности реализации архитектуры и дороговизны централизованных ЭВМ.
Проблема будущего при использовании суперЭВМ – возможность проведения вычислений на неоднородных системах, то есть параллельное выполнение множества процессов в сети разнородных по аппаратным и программным платформам узлов. В настоящее время разрабатываются средства отладки и мониторинга ПО как для разработчиков, так и для пользователей. Однако для этого требуется проведение дополнительных работ по совершенствованию методов описания быстроменяющихся целевых архитектур.
Если все входящие в состав вычислительного кластера узлы имеют одну и ту же архитектуру и производительность, то мы имеем дело с однородным вычислительным кластером, в противном случае – с неоднородным.
В настоящее время, когда говорят о кластерах, то часто подразумевают однородность. Однако для того, чтобы сохранить высокий уровень соотношения производительность/стоимость приходится при наращивании кластера использовать наиболее подходящие в данный момент процессоры, которые могут отличаться не только по производительности, но и по архитектуре. Поэтому постепенно большинство кластеров могут стать неоднородными кластерами.
Неоднородность же вносит серьезную проблему в процесс управления выполняющимися ветвями программы. Различие в производительности процессоров требует соответствующего учета при распределении работы между процессами, выполняющимися на разных процессорах.
Дальнейшее развитие концепции контролируемого выполнения видится [33] в стандартизации и включении средств мониторинга и активной отладки в единый программный комплекс.
Второе важное направление - совершенствование методов описания целевых архитектур и применение для этой цели механизма управляющих информационных баз.
Дальнейшее развитие технологий (а их в настоящее время насчитываются десятки), зависит от активности их применения в научных численных экспериментах - от узкого круга задач до универсального.
Еще раз отметим, что на сегодняшний день подготовка прикладной задачи для счета на суперЭВМ требует значительно больших усилий, чем подготовка для счета на однопроцессорных вычислительных машинах. Однако труд программиста–прикладника может существенно облегчиться, если будет разрешена одна из основных задач при создании системного программного обеспечения и инструментальных средств параллельного программирования, то есть принцип, обеспечивающий мобильность (независимость) прикладных программ от конкретного аппаратного построения многопроцессорной вычислительной системы.
1.
Белоцерковский О.М. ЭВМ в науке, авиации, жизни. М.: Машиностроение,
1993. – 288 с.
2.
Белоцерковский О.М. Вычислительная механика. Современные проблемы и
результаты. М.: Наука, 1991. – 183 с.
3.
Забродин А.В. СуперЭВМ МВС-100, МВС-1000 и опыт их использования при решении задач
механики и физики. // Математическое моделирование, 2000, т. 12,
№ 5, с. 61-66.
4.
Воеводин В.В. Суперкомпьютеры: вчера, сегодня, завтра. // Сборник
научно-популярных статей «Российская наука на заре нового века». Под редакцией
академика В.П. Скулачева. – М.: научный мир, 2001. С. 475-483
5.
Захарьева Н.Л., Хозиев В.Б., Ширков П.Д. Моделирование и образование.// Математическое моделирование, 1999, т. 11, № 5, с. 101-116.
6.
Марков Н.Г. Мирошниченко Е.А., Сарайкин А.В. Моделирование параллельного программного
обеспечения с использованием PS-сетей. //
Программирование. 1995, № 5, с. 24-32.
7.
Ершов Н.М.
Построение графов вычислительных алгоритмов методом автотрассировки. //
Программирование. 2000, № 6, с. 58-64.
8.
Воеводин В.В. Математические модели и методы в параллельных процессах. – М.: Наука,
1986. – 296 с.
9.
Корнеев В.В., Киселев А.В. Современные микропроцессоры. М.: «Нолидж», 1998
10.
Абрамова В.А., Вершубский В.Ю., Позняков Л.А.,
Храмцов М.Ю., Шеина Н.П. Система
программирования GNS. Конфигуратор.
Руководство пользователя. Препринт Института прикладной математики им. М.В.
Келдыша РАН, 1998, №61.
11.
Левин Вл. К. Отечественные суперкомпьютеры семейства МВС. / http://parallel.ru
12.
Крюков В.А.
Разработка параллельных программ для
вычислительных кластеров и сетей. // http://parallel.ru
13.
Крюков В.А.
Операционные системы распределенных вычислительных систем. (учебный курс)
// http://parallel.ru
14.
Соколинский Л.Б. Параллельные машины баз данных. // Сборник научно-популярных статей
«Российская наука на заре нового века». Под редакцией академика В.П. Скулачева.
– М.: научный мир, 2001. С. 484-494.
15.
Соколинский
Л . Б . Организация
параллельного выполнения запросов в многопроцессорной машине баз данных с
иерархической архитектурой. / Программирование , 2001 , №6, с . 13-29
16.
Иванников В.П., Ковалевский Н.С., Метельский В.М. О минимальном времени реализации распределенных
конкурирующих процессов в синхронных режимах. // Программирование. 2000, № 5, с. 44-52.
17.
Валиев М.К.
Применение временной логики к спецификации программ. // Программирование.
1998, № 2, с. 3-9.
18.
Бандман О.Л. Клеточно-нейронные модели пространственно-временной динамики. //
Программирование. 1999, № 1, с. 4-17.
19.
Дуйсекулов А.Е., Елизарова Т.Г. Использование многопроцессорных вычислительных
систем для реализации кинетически-согласованных разностных схем газовой
динамики. // Математическое моделирование, 1990, т. 2, № 7, с. 139-147.
20.
Дмитриева О.А. Параллельные алгоритмы численного решения систем обыкновенных
дифференциальных уравнений. //Мат. Моделирование № 5, 2000, с. 81-86.
21.
Москвин Д.Б., Павлов В.А. Опыт использования MPI технологии для решения системы интегральных
уравнений Фредгольма второго порядка. //Математическое моделирование, 2000, №
8, с. 3-8.
22.
Заворин А.Н. Параллельное решение линейных систем при моделировании электрических
цепей. // Математическое моделирование, 1991, т. 3, № 3, с. 91-96.
23.
Ки-Чанг Ким. Мелкозернистое распараллеливание неполных гнезд циклов. //
Программирование. 1997, № 2, с. 52-66.
24.
Морозов В.А., Важенин А.П. Матричная арифметика многократной точности для
параллельных систем с передачей сообщений. // Программирование. 1999, №1,
с. 66-77.
25.
Воеводин Вл.В. Просто ли получить обещанный гигафлоп? // Программирование. 1995, № 4, с. 13-23.
26.
Тарнавский Г.А., Шпак С.И. Декомпозиция методов и распараллеливание алгоритмов
решения задач аэродинамики и физической газовой динамики: вычислительная
система «Поток-3». // Программирование. 2000,
№ 6, с. 45-57.
27.
Костенко В.А. К вопросу об оценке оптимальной степени параллелизма. //
Программирование. 1995, № 4, с. 24-28.
28.
Антонов А.С., Воеводин Вл.В. Эффективная адаптация последовательных программ для
современных векторно-конвеерных и массивно-параллельных супер-ЭВМ. //
Программирование. 1996, № 4, с. 37-51.
30.
http://www.csa.ru:81/~il/mpi_tutor
31.
DVM-система. http://www.keldysh.ru/dvm/
32.
Коновалов Н.А., Крюков В.А., Михайлов С.Н.,
Погребцов Л.А. Fortran-DVM – язык
разработки мобильных параллельных программ. // Программирование. 1995, № 1.
С. 49-54.
33.
Галатенко В.А., Костюхин К.А. Отладка и мониторинг распределенных разнородных
систем. // Программирование, 2002, №1. С. 27–37
34.
Забродин А.В. Параллельные вычислительные технологии. Состояние и перспективы.
//Препринт Института прикладной математики им. М.В. Келдыша РАН, 1999, №71.
35.
Елизарова Т.Г., Четверушкин Б.Н. Применение многопроцессорных транспьютерных систем
для решения задач математической физики. // Математическое моделирование, 1992,
т. 4, №11, с. 75-100.
36.
Ильин В.П.
О стратегиях распрараллеливания в математическом моделировании. //
Программирование. 1999, № 1, с. 41-46.