Математическое и программное обеспечение распределения данных в проблемно-ориентированных параллельных программах тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат наук Палагин, Владимир Владимирович
- Специальность ВАК РФ05.13.11
- Количество страниц 149
Оглавление диссертации кандидат наук Палагин, Владимир Владимирович
ОГЛАВЛЕНИЕ
ОГЛАВЛЕНИЕ
ГЛОССАРИЙ
ВВЕДЕНИЕ
Глава 1 Исследование современного состояния проблемы разработки параллельных программ для многопроцессорных вычислительных систем
1.1 Архитектурные особенности построения многопроцессорных
вычислительных систем
1.2 Технологические подходы к разработке параллельных программ
1.3 Анализ возможностей автоматического распараллеливания
1.4 Формирование набора требований к параллельным программам
1.5 Выбор стратегии модификации параллельных программ
1.6 Постановка задачи
Глава 2 Разработка математического обеспечения распределения данных в проблемно-ориентированных параллельных программах
2.1 Формализация задачи
2.2 Математическая модель распределения времени выполнения
параллельных программ
2.3 Использование метаязыковых средств как инструмента модификации
исходного кода
2.4 Лексико-синтаксический анализ исходного кода
2.5 Балансировка времени выполнения между гнёздами циклов
2.6 Выводы по Главе 2
Глава 3 Разработка препроцессора «РуТЧогта» для модификации исходного кода параллельных программ
3.1 Основной управляющий скрипт программы
3.2 Библиотека ввода/вывода и хранения конфигурации
3.3 Библиотека лексико-синтаксического анализа
3.4 Библиотека работы с абстрактным синтаксическим деревом
2
3.5 Библиотека балансировки времени выполнения гнёзд циклов
3.6 Библиотека генерации тестов
3.7 Выводы по Главе 3
Глава 4 Тестирование препроцессора «PyNorma» на различных аппаратных платформах
4.1 Описание аппаратных платформ, на которых производилось тестирование
4.2 Результаты тестирования на вычислительном кластере МГУПИ
4.3 Результаты тестирования на суперкомпьютере «Ломоносов»
4.4 Выводы по Главе 4
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ПРИЛОЖЕНИЯ
Приложение 1. Свидетельство о государственной регистрации
препроцессора PyNorma
Приложение 2. Акт внедрения препроцессора PyNorma в компании ЗАО
Энергокомплект
Приложение 3. Акт внедрения препроцессора PyNorma в компании ООО Праймтек
ГЛОССАРИЙ
Многопроцессорная вычислительная система (МВС) с общей памятью - класс симметрично-мультипроцессорных вычислительных систем, реализующий архитектуру Symmetric Multi-Processing (SMP), при которой множество одинаковых процессоров выполняют одни и те же функции и тесно связаны друг с другом через общую шину. Все процессоры имеют равный доступ ко всем ресурсам вычислительной системы (памяти и устройствам ввода-вывода) и управляются одной копией операционной системы (ОС).
МВС с распределённой памятью - класс массово-параллельных вычислительных систем, реализующий архитектуру Massive Parallel Processing (МРР), при которой память физически разделена между группой вычислительных узлов (ВУ), объединённых между собой коммуникационной средой [14]. Каждый ВУ имеет доступ к своей локальной памяти или к памяти других вычислительных узлов через интерфейс передачи сообщений - Message Passing Interface.
Интерфейс передачи сообщений (Message Passing Interface, MPI) -программный интерфейс (Application Programming Interface) для передачи сообщений, позволяющий организовать процесс обмена данными между процессами на разных вычислительных узлах в рамках одной вычислительно задачи [43]. Разработаны коммерческие и свободные реализации для большинства аппаратных конфигураций и программных платформ.
Интерфейс программирования приложений (Application Programming Interface, API) - набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах [139]. Используется программистами для написания всевозможных приложений.
Вычислительный кластер (High-Performance Computing Cluster, HPC) -подкласс МВС с распределённой памятью, физически представляющий собой набор вычислительных, управляющих и вспомогательных улов, объединённых высокоскоростными каналами связи. В настоящее время, по данным рейтинга наиболее производительных суперкомпьютеров мира Тор500 [21] вычислительные кластеры являются наиболее распространённой аппаратной платформой (более 80% от общего числа) для параллельных вычислений промышленного уровня. В России лидирующую позицию занимает суперкомпьютер «Ломоносов», построенный компанией «Т-Платформы» для МГУ им. М.В. Ломоносова. (37 место на ноябрь 2013 года).
Проблемно-ориентированная параллельная программа - программы научно-технического характера инкапсулирующие основные вычисления в гнёздах циклов (ГЦ). Под термином параллельные программы для научно-технических расчётов понимаются программы, реализующие конечно-разностные или сеточные методы решения краевых задач, которые опираются на процедуры расчёта значений функции в точках с координатами соответствующие узлам сеток, сконструированных в многомерном пространстве аргументов функции
Гнездо циклов (ГЦ) (cycle nest) - структура вложенных до некоторого уровня циклов [5], где последовательность инструкций для многократного выполнения является телом цикла; единичное выполнение тела цикла -интеграцией; глубина вложенности ограничена синтаксическими правилами реализацией языка программирования.
Блок исходного кода (unit source) - участок исходного кода программы, группирующий один или несколько гнёзд циклов, в котором распределение данных по ВУ задано и неизменно в процессе выполнения программы [165]. В
состав блока может входить один или более гнездо циклов, а также набор исходных данных
Балансировка времени выполнения циклов - перераспределение времени выполнения между гнёздами циклов с зависимостью по данным в рамках блока исходного кода с целью минимизации времени выполнения блока [131].
Абстрактное синтаксическое дерево (АСД) - внутренние представление целевой параллельной программы препроцессором в виде структуры данных конечного (количество элементов ограничено), ориентированного дерева, в котором внутренние вершины сопоставлены с блоками исходного кода, а листья - с гнёздами циклов [122].
Препроцессор - специализированная компьютерная программа, предназначенная для обработки или изменения исходного кода целевой программы перед передачей его на следующей этап трансляции/компиляции [163].
Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК
Реализация моделей климата на многопроцессорных вычислительных системах кластерного типа2004 год, кандидат физико-математических наук Глухов, Валерий Николаевич
Модель параллельных вычислений для оценки масштабируемости итерационных алгоритмов на кластерных вычислительных системах2020 год, кандидат наук Ежова Надежда Александровна
Моделирование параллельных процессов с учётом схемы обмена и объёма передаваемых сообщений2019 год, кандидат наук Аль-Марди Мохаммед Хайдар Авадх
Метод, алгоритм и устройство расположения задач в реконфигурируемых вычислительных системах2022 год, кандидат наук Масюков Илья Игоревич
Средства управления ресурсами вычислительных систем в режиме обслуживания потока задач с нефиксированными параметрами2018 год, кандидат наук Перышкова Евгения Николаевна
Введение диссертации (часть автореферата) на тему «Математическое и программное обеспечение распределения данных в проблемно-ориентированных параллельных программах»
ВВЕДЕНИЕ
Важность и актуальность темы исследований. Актуальность исследований в области разработки эффективных параллельных программ в первую очередь определяется необходимостью решения широкого спектра национально-значимых задач в соответствии с приоритетными направлениями развития науки, технологий и техники в Российской Федерации и перечнем критических технологий Российской Федерации, утверждёнными указом Президента РФ от 7 июля 2011 г. N 899.
Инженерно-технические задачи моделирования различных процессов термодинамики, гидравлики, механики, физико-химических и ядерных реакций, глобальных атмосферных процессов в большинстве случаев используют алгоритмы, в которых вычисления производятся в циклах над значениями функции на границах элементов (узлах сетки). Проблемно-ориентированные параллельные программы, реализующие подобные алгоритмы [64], требуют значительных вычислительных ресурсов, формируя тем самым большую часть нагрузки на суперкомпьютерные системы.
В то же время основным вектором развития таких систем является повышение максимальной производительности, определяющей научный и технический потенциал отрасли на ближайшие годы и зависящей от быстродействия аппаратной базы вычислителя и эффективности программного обеспечения (ПО) [165]. Причём потребность в вычислительных ресурсах не успевает решаться только за счёт наращивания мощности аппаратной платформы средствами замены элементной базы или масштабирования.
Эффективность программного обеспечения для многопроцессорных вычислительных систем (МВС) определяется приемлемыми временными рамками обсчёта целевой задачи и объёмом потребляемых ресурсов аппаратной платформы. Ручная модификация существующих, и разработка новых параллельных программ эффективных по одному из вышеприведённых критериев является трудоёмкой и затратной процедурой.
Оптимизирующие/распараллеливающие компиляторы и системы не всегда эффективны с точки зрения проблемы «стена памяти» (memory wall) [16], заключающейся в отставании скорости подготовки данных при их передачи по коммуникационной сети от скорости вычислений на вычислительных узлах (ВУ) и являющейся одним из основных препятствий при достижении экзафлопсного барьера в суперкомпьютерных вычислениях.
Здесь необходимо отметить, что по данным в последние годы акцент в рейтинге проекта ТОР500 [21] сместился в сторону вычислительных кластеров (НРС), реализующих архитектуру МРР и занимающих более 80% от общего числа суперкомпьютеров мира с неизменным наращиванием преимущества. В этом контексте ещё более ужесточаются требования к программному обеспечению в части касающейся временной эффективности и ресурсоёмкости.
Одним из путей преодоления отмеченных проблемных мест в области разработки эффективных параллельных программ для вычислителей с архитектурой МРР является выбор рационального распределения обрабатываемых пулов, данных по локальным банкам данных на вычислительных узлах и, как следствие, повышения быстродействия целевой аппаратной платформы МВС.
В разное время вопросами параллельных вычислений занимались такие исследователи как Воеводин В.В., Воеводин Вл.В., Тыртышников Е.Е., Жуматий С.А., Стефанов К.С., Антонов A.C., Гергель В.П., Соколинский Л.Б., Букатов A.A., Дацюк В.Н., Жегуло А.И., Корнеев В.Д., Крюков В.А., Андрианов А.Н., Бугеря А.Б., Ефимкин К.Н.
Наиболее близкими к тематике исследования и посвящённые вопросам
размещения данных в распределённой памяти являются работы Штейнберга Б.Я.
и Полуяна C.B. Однако, проблематика размещения данных для проблемно-
ориентированных параллельных программ, нацеленных на промышленное
использование, со сложной структурой исходного кода, остаётся решённой не
полностью. Описанные выше причины вынуждают развивать методы
минимизации времени выполнения параллельной программы за счёт
8
модификации распределения данных в рамках блоков исходного кода с набором гнёзд циклов (ГЦ).
Объектом исследования являются МВС с распределённой памятью. Под термином МВС с распределённой памятью понимаются такие классы суперкомпьютеров как кластерные (High Performance Computing, НРС) и массово-параллельные (Massive Parallel Processing, МРР) вычислительные системы.
Предметом исследования являются проблемно-ориентированные параллельные программы, предназначенные для выполнения на МВС с распределённой памятью. Под термином проблемно-ориентированные параллельные программы понимаются программы научно-технического характера, основные вычисления которых сосредоточены в гнёздах циклов (cycle nest).
Целью работы является уменьшение времени выполнения проблемно-ориентированных параллельных программ за счёт рационального распределения массива исходных данных по вычислительным узлам аппаратной платформы МВС.
Задачи исследования. Достижение поставленной цели предполагает решения следующих основных задач исследования:
• исследование современного состояния разработки и специфики построения исходного кода проблемно-ориентированных параллельных программ;
• разработка математической модели, отражающей распределение времени выполнения параллельной программы относительно блоков исходного кода с набором гнёзд циклов;
• разработка методов лексико-синтаксического анализа исходного кода параллельной программы для поиска, группировки и оценки гнёзд циклов с зависимостью по данным;
• разработка системы эвристических правил, позволяющая производить выбор рационального варианта распределения данных для гнёзд циклов в рамках блоков исходного кода;
• разработка методов перераспределения времени выполнения между гнёздами циклов зависимостью по данным в рамках блоков исходного кода;
• проектирование, реализация и тестирование препроцессора для выполнения модификации исходного кода проблемно-ориентированных параллельных программ.
Методы исследования включают в себя методы теории компиляции программ, анализа исходного кода, теории графов, теории алгоритмов, технологии разработки программного обеспечения. При реализации программного обеспечения использовались принципы параллельного и функционального программирования.
Структура и объём работы. Диссертация состоит из введения, 4 глав, заключения, списка литературы и приложения. В конце работы помещены акты об использовании результатов работы, акты о внедрении результатов в учебный процесс и справка о регистрации программ. Общий объем работы - 149 страниц машинописного текста, из них 120 страниц - основное содержание, 17 страниц-библиографический список (168 наименований).
Глава 1 Исследование современного состояния проблемы разработки параллельных программ для многопроцессорных вычислительных систем
В настоящее время спектр задач, требующих для своего решения значительных вычислительных ресурсов, постоянно расширяется. В первую очередь это связано с тем, что произошли фундаментальные изменения в самой организации научных исследований. Вследствие широкого внедрения вычислительной техники, значительно усилилось направление численного моделирования и численного эксперимента. Численное моделирование, заполняя промежуток между физическими экспериментами и аналитическими подходами, позволило изучать явления, которые представляются либо слишком сложными для исследования аналитическими методами [1, 70], либо слишком дорогостоящими или опасными для экспериментального изучения. При этом численный эксперимент позволил значительно удешевить процесс научно-технологического поиска [2, 33]. Стало возможным за приемлемое время решать обширный пласт таких инженерно- технических задач как:
• моделирование аэрогазодинамических процессов, механики жидкостей и газов, гидравлики, термодинамики, теплопроводности;
• моделирование сложного поведения различных механических систем любой степени геометрической сложности, статической и динамической прочности;
• моделирование физико-химических и ядерных реакций, глобальных атмосферных процессов, а также процессы экономического и промышленного развития регионов/городов [67].
Очевидно, что решение таких масштабных задач невозможно без использования суперкомпьютерных вычислительных мощностей, которые предоставляют многопроцессорные вычислительные системы [3] (МВС). Постоянно ведущиеся работы в области совершенствования алгоритмов обычно отстают от требований, выдвигаемых со стороны заказчика. В то же время
повышение производительности классическими методами, такими как увеличение тактовой частоты, снижение ширины токопроводящих полос в кристалле процессора, уже достигло уровня насыщения и трудно ожидать прорыва в этом направлении [6]. Из возможных стратегий повышения вычислительных мощностей наиболее перспективной считается объединение мощностей многих процессоров параллельно в единый суперкомпьютер.
В общем случае суперкомпьютер представляет собой вычислительную машину мелкосерийного или штучного выпуска, многократно превосходящую по вычислительной мощности массово-выпускаемые компьютеры, когда быстродействие измеряется в миллионах/триллионах операций в секунду (FLOPS). Как правило, современные суперкомпьютеры представляют собой большое число высокопроизводительных вычислительных узлов [7] (ВУ), соединённых друг с другом высокоскоростной магистралью передачи данных. Суперкомпьютер нацелен, прежде всего, на масштабные вычисления, а значит на снижение времени выполнения сложных инженерных или научных расчетов. Однако на сегодняшний день существуют различные способы организации параллельных вычислений, которые характеризуются параметрами организации памяти, топологией связи между процессорами, способом исполнения операций, синхронностью работы устройств. Это приводит к необходимости анализа основных архитектур современных МВС.
1.1 Архитектурные особенности построения многопроцессорных вычислительных систем
Начиная с 60-х годов прошлого столетия, предпринимались попытки создания универсальной классификации архитектур МВС. Зачисление МВС в тот или иной класс даёт возможность разработчику параллельной программы информацию об особенностях реализации аппаратной платформы, методов достижения максимальной производительности, узких местах организации параллельных вычислений [20]. Наиболее значимыми достижениями в этой
области представляются работы Флинна М., Хокни Р., Фенг Т., Хендлер В., Шнайдер JL, Скилликорн Д.
В данной работе в качестве основного параметра классификации является организация памяти - наличие общей (Symmetric Multiprocessing, SMP [5]) или распределенной памяти (Massive Parallel Processing, МРР [6]). Промежуточным вариантам является NUMA-архитектура [8], обеспечивающая физическое разделение памяти при её логической общедоступности. Кластерные системы (High Performance Computing, НРС [162]) являются более доступным вариантом МРР с точки зрения соотношения цена/производительность. При аппаратной поддержке команд обработки векторных операций, речь идёт о векторно-конвейерных процессорах (Parallel Vector Process, PVP [9]). Все большую популярность приобретают идеи комбинирования различных архитектур в одной системе и построения неоднородных систем [19].
Параллельные векторные системы (PVP). С точки зрения архитектуры основным признаком PVP-систем является наличие специальных векторно-конвейерных процессоров, характеризующиеся конвейерной организацией обработки потоков команд с набором векторных операций которые позволяют оперировать с целыми массивами данных. В рамках многопроцессорных конфигураций ВУ получают доступ к общей памяти или могут быть объединены с помощью сети передачи данных. Примером могут служить такие системы как NEC SX-4/SX-5, серия векторно-конвейерных компьютеров CRAY (CRAY-1, CRAY J90/T90, CRAY SV1, CRAY XI), серия Fujitsu VPP [19]. Разработка эффективных параллельных программ для данной архитектуры подразумевает векторизацию циклов, для достижения приемлемого времени выполнения на одном процессоре, и их распараллеливание, для распределения нагрузки на ВУ.
Системы с неоднородным доступом к памяти (NUMA). С точки зрения
архитектуры система формируется из однородных базовых модулей в виде плат
расширения, укомплектованных блоками процессоров/памяти. Модули (ВУ) на
аппаратном уровне поддерживают концепцию единого адресного пространства
и доступа к памяти других модулей, объединённых с помощью
13
высокоскоростной сети передачи данных. В случае если имеется аппаратная поддержка когерентности кэшей во всей системе, такая архитектура называется cc-NUMA (cache-coherent NUMA [77]). Примером могут служить такие системы как HP 9000 V-class в SCA-конфигурациях, SGI 0rigin2000, Sun HPC 10000, IBM/Sequent NUMA-Q 2000, SNI RM600 [19]. Масштабируемость таких систем ограничивается объемом адресного пространства и поддержкой когерентности кэшей со стороны аппаратного обеспечения и возможностями операционной системы (ОС) со стороны программного обеспечения (ПО). Весь программно-аппаратный комплекс может функционировать под управлением единой или разных ОС в зависимости от функциональных требований.
Симметрично-мультипроцессорные системы (SMP). С точки зрения архитектуры система формируется из нескольких однородных процессоров и массива общей памяти. В таких системах имеет место параллелизм на уровне выполнения команд процессорами [17]. Все процессоры имеют доступ к любой точке общей памяти через коммуникационную среду, организованную по тип у общей шины, с одинаковой скоростью [108] (рис. 1.1.1).
Процессор 1
КЭШ-память
1
Процессор 2
КЭШ-память
Процессор 3
КЭШ-память
Процессор N
КЭШ-память М-
Общая ; оперативная память
$ $
Коммуникационная среда
J
J
Рисунок 1.1.1. - Схема архитектуры МВС с общей памятью
Примером могут служить такие системы как HP 9000 V-class, N-class, SMP-сервера и ВУ на базе процессоров Intel (IBM, HP, Compaq, Dell, ALR, Unisys, DG, Fujitsu) [19]. Подобные системы работают под управлением единой Unix/Linux-совестимой ОС. Поддержка синхронизации кэш-памяти и поддержания её в актуальном состоянии для всех процессоров происходит на аппаратном уровне [27]. Подобная организация доступа к памяти значительно упрощает разработку параллельных программ под данную архитектуру, однако с точки зрения
масштабируемости возникает ограничение на число процессоров, одновременно работающих с общей памятью [19]. Разработка параллельных программ для МВС с общей памятью происходит с помощью таких технологий как POSIX Threads или ОрепМР.
Массово-параллельные системы (МРР). С точки зрения архитектуры состоят из набора ВУ (узлы ввода-вывода, основные узлы, управляющие узлы), объединённых коммуникационной средой. В таких системах имеет место параллелизм по данным - распределение обрабатываемых массивов, и по командам - для процессоров на ВУ [22]. В процессе работы каждый ВУ получает прямой доступ к памяти других узлов только через коммуникационную среду, в качестве которой выступают высокоскоростные/низко-латентные магистрали передачи данных (Myrinet, InfiniBand) [26]. Соответственно, при такой организации вычислений обращения к данным, расположенным в пределах локальной памяти происходит значительно быстрее, чем к памяти других ВУ [131] (рис. 1.1.2).
Вычислительный узел 01
- - Процессор КЭШ-память •
Оперативная память
J
Вычислительный узел 02
Процессор КЭШ-память
Оперативная память
JJl
Вычислительный узел 03
Процессор 1 КЭШ-память
Оперативная память
1
Локальная память
Вычислительный узел N
Процессор КЭШ-память
Оперативная память
1
Коммуникационная среда
Рисунок 1.1.2. - Схема архитектуры МВС с распределённой памятью
Примером могут служить такие системы как IBM RS/6000 SP2, Intel PARAGON/ASCI Red, CRAY T3E, Hitachi SR8000, транспьютерные системы Parsytec [19]. Возможны варианты использование полноценной ОС (UNIX/Linux) на ВУ или значительно функционально-урезанного дистрибутива, обеспечивающего выполнение только расположенной в нем ветви параллельного приложения [25]. При использовании массово-параллельных
систем происходит программирование в рамках модели передачи сообщений, посредствам таких технологий как MPI, PVM, BSPlib [11]. По данным проекта ТОР 500 [21], который составляет рейтинг 500 самых мощных общественно известных компьютерных систем мира, на июнь 2013 года доля МРР систем составляет 17,8% от общего числа суперкомпьютеров. Однако необходимо учитывать, что НРС- и МРР-системы полностью вытеснили из списка ТОР 500 остальные рассмотренные выше архитектуры.
Кластерные системы (НРС). Относятся к классу МВС с распределённой памятью и с точки зрения архитектуры представляют собой набор ВУ, связанных высокоскоростной сетью и объединенных в логическое целое специальным ПО [24]. В качестве ВУ используются рабочие станции общего назначения, объединённые стандартными сетевыми технологиями (Fast/Gigabit Ethernet) на базе шинной архитектуры или коммутатора [28]. В качестве ОС используются свободно распространяемые решения UNIX/Linux в чистом виде или доработанные дистрибутивы на их основе со встроенными средствами поддержки параллельного программирования и балансировки нагрузки. Программирование происходит в рамках модели передачи сообщений аналогично МРР для которых кластерные решения являются более доступной альтернативой.
По данным проекта ТОР 500 [21] по составлению рейтинга и описаний 500 самых мощных общественно известных компьютерных систем мира на ноябрь 2013 года доля кластерных систем составляет 82,2% от общего числа суперкомпьютеров. Тенденция вытеснения большинства архитектур МВС со стороны вычислительных кластеров доказывает промышленную зрелость таких систем. Здесь необходимо обратить внимание на тот факт том, что из всех разновидностей архитектур в списке Тор 500 остались только МРР и кластерные системы, причём доля промышленных МРР систем неуклонно уменьшается год от года [163] (рис. 1.1.3).
Architecture - Systems Share
200- 2006 2008 2010
Рисунок 1Л .3. - Доля различных архитектур МВС среди суперкомпьютеров мира по данным ресурса Тор 500
Несмотря на отсутствие прямого доступа к локальной памяти ВУ, в последние годы происходит всё большее внедрение вычислительных кластеров в различные сферы науки и техники. Главной причиной активного развития этого направления стала общедоступность и дешевизна аппаратных платформ для высокопроизводительных вычислений, что является неоспоримым преимуществом по сравнению с другими реализациями архитектур МВС. Дополнительным фактором стал рост востребованности именно вычислительных кластеров для отраслей машиностроения, судостроения, авиационной промышленности, энергетически, фирмами с инженерным профилем, научно-исследовательскими центрами, киностудиями и мультипликационными студиями. Отдельно можно выделить несколько
основных преимуществ использования вычислительных кластеров по сравнению с другими реализациями МВС.
Масштабируемость. Возможность создания значительных массивов, объединённых ВУ, суммарно превосходящих по вычислительной мощности даже самые производительные МВС альтернативных архитектур. Кластер в состоянии содержать сотни/тысячи ВУ, каждый из которых может быть на базе нескольких многоядерных процессорах [4]. Такие системы строятся так, чтобы сохранить возможность наращивания, добавляя новые ВУ по мере необходимости [29]. Таким образом, имеется возможность начать с умеренной по производительности системы, расширяя ее по мере необходимости.
Коэффициент готовности. Каждый ВУ представляет собой самостоятельную ЭВМ, поэтому отказ одного из узлов не приводит к потере работоспособности системы в целом [30]. Во многих системах подобного рода отказоустойчивость автоматически отслеживается и поддерживается средствами специализированного ПО.
Соотношение цена/производительность. При построении суперкомпьютера на базе вычислительного кластера не требуется проводить дорогостоящие разработки, в качестве ВУ можно использовать обычные ЭВМ, в качестве коммуникационной среды - обычные Ethernet сети, при этом его стоимость будет ниже, чем у других классов МВС с эквивалентной вычислительной мощностью [31].
Все эти факторы позволяют наращивать присутствие вычислительных кластеров в списке ТОР 500 на фоне сокращения числа других реализаций МВС. Кроме того, кластерные системы гораздо легче поддаются настройке под конкретные задачи во многом благодаря своей архитектуре. Однако с дальнейшим развитием направления параллельных вычислений стало очевидным, что трудоемкость разработки параллельных программ для МВС с распределенной памятью, в том числе для ВК, является важной и актуальной научной задачей. Что в свою очередь привело к появлению большого количества
технологических подходов к процессу разработки, созданию десятков языков программирования и множества инструментальных средств.
1.2 Технологические подходы к разработке параллельных программ
На практике наиболее распространены следующие технологические подходы к программированию для МВС [34,37]. Непосредственное формирование потоков параллельного управления, с учетом особенностей архитектур МВС и ОС [35]. Данный подход представляет собой ручное программирование на стандартных и широко распространённых языках программирования с использованием высокоуровневых коммуникационных библиотек и интерфейсов прикладного программирования API (Application Programming Interface) [140] для организации взаимодействия между ВУ. Для МВС с распределённой памятью и вычислительных кластеров стандартом является интерфейс передачи сообщений MPI (Message Passing Interface) [36], для систем с общей памятью - открытый стандарт OpenMP (Open MultiProcessing) [38].
Программный интерфейс MPI представляет собой стандартизованный интерфейс обмена сообщениями между процессами в рамках одной параллельной программы. Разработаны стандартные расширения для различных языков программирования, в том числе для Си/Си++/Фортран. Существуют бесплатные и коммерческие реализации для многих архитектур МВС, а также для ВУ под управлением различных ОС. Реализации стандарта MPI поддерживают программные механизмы взаимодействия между ВУ по типу отношений один к одному и один ко многим. Передача сообщений между ВУ может быть организована с поддержкой буферизованных, небуферизованных, синхронных, асинхронных или с ожиданием методов доставки данных [41]. Интерфейс MPI позволяет использовать минимально-необходимый набор функциональных возможностей, состоящий из 6 функций передачи/приёма
сообщений, одновременно с этим являясь достаточно гибким и мощным инструментом, содержащим более 120 различных функций [42].
Открытый стандарт ОрепМР является одним из наиболее популярных средств организации параллельных вычислений для МВС с общей памятью и систем с многоядерными процессорами. Технология ОрепМР реализует параллельные вычисления с помощью многопоточности, в которой основной (master) поток создает набор подчиненных (slave) потоков с распределением активных задач между ними [39]. Задачи, выполняемые потоками параллельно, так же, как и данные, требуемые для выполнения этих задач, описываются с помощью специальных комментариев. Технология ОрепМР позволяет реализовать подход, при котором алгоритм организации параллельных вычислений добавляется в исходный код при помощи специальных комментариев [40]. Перед компиляцией блоки исходного кода с комментариями обрабатываются специальным препроцессором, при этом оставляя неизменным остальной массив исходного кода программы. В случае отсутствия препроцессора, компилятор сгенерирует последовательную программу.
Таким образом, обе технологии дают возможность программирования на
стандартных языках с использованием в качестве конструктивных элементов
механизмы передачи сообщений или заранее распараллеленных процедур из
набора поставляемых библиотек, подразумевая расширение существующего
синтаксиса языков операторами распараллеливания и синхронизации.
Примерами реализации такого подхода могут служить ряд таких библиотек как
Intel Threading Building Blocks (TDB), Boost С++ Libraries, Pthreads, Qt Threads
[22, 24, 25, 26]. Уровень параллелизма при использовании данных решений
полностью контролируется разработчиком и формируется исходя из его
квалификации на основе понимания архитектурных особенностей целевой МВС
[116]. Поэтому качественные характеристики параллельной программы
напрямую зависит от компетентности специалиста и его умения работать с
конкретными технологиями. Перенос ПО разработанного подобным образом без
существенной модификации исходного кода с одной архитектуры МВС на
20
другую практически невозможен [44]. В связи с этим наблюдается тенденция к абстрагированию от работы с низкоуровневыми интерфейсами и переход к использованию специализированных средств, позволяющих сосредоточится на алгоритме решения задачи, а не на её реализации. К таким программным средствам можно отнести функциональные/параллельные языки программирования и средства автоматического распараллеливания.
Описание параллелизма без использования явного управления. К данной категории в первую очередь относится концепция функционального подхода в программирование, которая не требует явного указания параллелизма задачи [35]. Достаточно задать информационную взаимосвязь между функциями, осуществляющими обработку исходных данных. В этом случае информационный граф алгоритма решения задачи может быть раскрыт компилятором/транслятором с максимально-возможным уровнем параллелизма [76]. В ходе компиляции/транслирования исходного кода программы, производится его преобразование согласно тем требованиям и ограничениям, которые определяются средой выполнения и целевой архитектурой МВС [50].
Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК
Отображение DVMH-программ на кластеры с графическими процессорами2013 год, кандидат наук Притула, Михаил Николаевич
Использование виртуализации для увеличения эффективности вычислении2020 год, кандидат наук Чжо За
Разработка и исследование архитектуры глобально адресуемой памяти мультитредово-потокового суперкомпьютера2010 год, кандидат технических наук Семенов, Александр Сергеевич
Методы и средства автоматизированного сопряжения функциональных узлов и блоков в приложениях для реконфигурируемых вычислителей2010 год, кандидат технических наук Раскладкин, Максим Константинович
Параллельные алгоритмы моделирования газодинамического обтекания тел на нерегулярных тетраэдральных сетках2004 год, кандидат физико-математических наук Суков, Сергей Александрович
Список литературы диссертационного исследования кандидат наук Палагин, Владимир Владимирович, 2014 год
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Таненбаум Э., Стеен М. Распределенные системы. Принципы и парадигмы. - СПб.: Питер, 2003. - С. 877.
2. Лацис А. Как построить и использовать суперкомпьютер. - М.: Бестселлер, 2003.-С. 400.
3. Воеводин Вл.В., Тыртышников Е.Е. Численные методы, параллельные вычисления и информационные технологии. - М.: Московский Университет, 2008. - С. 291.
4. Воеводин Вл.В., Жуматий С.А. Вычислительное дело и кластерные системы. - М.: МГУ, 2007. - С. 150.
5. Воеводин В.В., Воеводин Вл.В. Научное издание. Параллельные вычисления. - СПб.: BHV-Санкт-Петербург, 2002. - С. 608.
6. Букатов A.A., Дацюк В.Н., Жегуло А.И. Программирование многопроцессорных вычислительных систем. - Ростов-на-Дону: ООО «ЦВВР», 2003.-С. 208.
7. Гергель В.П. Теория и практика параллельных вычислений: Учебное пособие. - М.: Бином.ЛБЗ - Интернет-университет информационных технологий-ИНТУИТ.ру, 2007. - С. 423.
8. Гергель В.П., Стронгин Р.Г. Основы параллельных вычислений для многопроцессорных вычислительных систем: Учебное пособие. - Нижний Новгород: ННГУ им. Н.И., 2003. - С. 184.
9. Гофф. K.M. Сетевые распределенные вычисления: достижения и проблемы. - М.: КУДИЦ-Образ, 2005. - С. 320.
10. Богачев К.Ю. Основы параллельного программирования. - М.: Бином. Лаборатория знаний, 2010. - С. 344.
11. Малышкин В.Э., Корнеев В.Д. Параллельное программирование мультикомпьютеров. - Новосибирск.: НГТУ, 2007. - С. 296.
12. Грегори Р.Э. Основы многопоточного, параллельного и распределенного программирования. - СПб.: Вильяме, 2003. - С. 300.
127
13. Гостев И. M. О применении технологии CUDA для обработки изображений и распознаванию графических образов // Распределенные вычисления и ГРИД-технологии в науке и образовании: Труды 5-й международной конференции (г. Дубна, 16-21 июля, 2008 г.). - Дубна: Объединенный институт ядерных исследований, 2012. - С. 274-279.
14. Баканов В.М. Априорная количественная оценка эффективности параллельных программ на конкретных многопроцессорных системах. // Программная инженерия. -М.: 2011. -№1. - С. 34-38.
15. Палагин В.В. К вопросу об ускорении параллельных программ научно-технических расчётов путём использования архитектурных особенностей многопроцессорных вычислительных систем. // Программная инженерия. -М.: 2013.-№2.-С. 21-25.
16. Полуян C.B. Анализ обращений программы к памяти в оптимизирующей распараллеливающей системе: дис. канд. техн. наук: 05.13.11 / Полуян Степан Вячеславович. - Ростов-на-Дону, 2011. - С. 147.
17. Линев A.B., Кудин A.B. Архитектура и операционные системы параллельных вычислительных систем. - Нижний Новгород: ННГУ им. Н.И. Лабачевского, 2007. - С. 70.
18. Горбунов В., Эйсымонт Л. Экзафлопсный барьер: проблемы и решения. // Открытые системы. Платформы - 2010. - №5. - С. 10-13.
19. Основные классы современных параллельных компьютеров. Электронный ресурс. URL: http://www.parallel.ru/computers/classes.html (дата обращения: 10.05.2013)
20. Палагин В.В., Баканов В.М. Создание вычислительного кластера кафедрального уровня. // Программное и информационное обеспечение систем различного назначения на базе персональных ЭВМ: Межвузовский сборник научных трудов. - М.:, 2008. - С. 116-119.
21. Статистика по 500 самых мощных компьютеров мира. Электронный ресурс. URL: http://www.top500.org/statistics/list/ (дата обращения: 20.04.2013).
22. Philippe Marquet, Simon Duquennoy, Sebastien Le Beux. Massively Parallel Processing on a chip. // Proceedings of the 4th international conference on Computing frontiers. - 2007. - Pp. 277-286.
23. Палагин В.В. Оптимизация по времени выполнения проблемно-ориентированных параллельных программ для научно-инженерных расчётов. // Программное и информационное обеспечение систем различного назначения на базе персональных ЭВМ: Межвузовский сборник научных трудов - М., 2012. - Выпуск 15. - С. 84-89.
24. Thomas Raube, Gudula Riinger. Parallel Programming: for Multicore and Cluster Systems. // Springer 2010 edition. - 2010. - Pp. 466.
25. Predrag T. Tosic. A Perspective on the Future of Massively Parallel Computing: Fine-Grain vs. Coarse-Grain Parallel Models. // Proceedings of the 1st conference on Computing frontiers. - 2004. - Pp. 488-502.
26. David B. Kirk, Wenmei W. Hwu. Programming Massively Parallel Processors: A Hands-on Approach. Morgan Kaufmann 1 edition. Published by Elsevier Inc. -2011.-Pp. 280.
27. Alan Kaminsky. Building Parallel Programs: SMPs, Clusters & Java. Course Technology 1 edition. - 2009. - Pp. 896.
28. Matei Zaharia, Mosharaf Chowdhury, Michael J. Franklin. Spark: Cluster Computing with Working Sets. // Proceedings of the 2nd USENIX conference on Hot topics in cloud computing. - 2010. - Pp. 9-11.
29. Zhe Fan, Feng Qiu, Arie Kaufman. GPU Clusters for High-Performance Computing. // Proceedings of the 2004 ACM/IEEE conference on Supercomputing. - 2004. - Pp. 46-48.
30. Xian-He Sun, Yong Chen. Reevaluating Amdahl law in the multicore era. // Journal Journal of Parallel and Distributed Computing archive Volume 70 Issue 2. - 2010. - Pp. 183-188.
31. Палагин B.B., Баканов B.M. Современные проблемы повышения
производительности многопроцессорных вычислительных систем. //
Программное и информационное обеспечение систем различного
129
назначения на базе персональных ЭВМ: Межвузовский сборник научных трудов - М.: МГУПИ, 2009, выпуск 12. - С. 96-100.
32. Arata Shinozaki, Masatoshi Shima, Minyi Guo. Multiprocessor Simulator System Based on Multi-way Cluster Using Double-buffered Model. // 21st International Conference on Advanced Information Networking and Applications, AINA, 2007. - Pp. 893-900.
33. Мялицин B.B. Эффективное использование ресурсов вычислительного кластера. // Высокопроизводительные параллельные вычисления на кластерных системах: Материалы Седьмой Международной конференции-семинара. - Нижний Новгород: Нижегородский госуниверситет, 2007. - С. 268.
34. Палагин В.В. Оценка эффективности отображения структуры параллельной программы на архитектуру многопроцессорных вычислительных систем. // Актуальные проблемы аппаратно-программного и информационного обеспечения науки, образования, культуры и бизнеса: Сборник научных трудов по материалам 3 международной научно-практической интернет-конференции. - М., 2010. -С. 46-50.
35. Технологии параллельного программирования. Электронный ресурс. URL: http://parallel.ru/tech (дата обращения: 10.05.2013)
36. Палагин В.В. Обзор перспективных отечественных технологических направлений разработки параллельных программ для научно-инженерных расчётов. // Современные направления теоретических и прикладных исследований 2011: Сборник научных трудов по материалам международной научно-практической конференции. - Одесса, 2011. - Том 5. Технические науки. - С. 11-14.
37. Ali Ebnenasir, Rasoul Beik. Developing Parallel Programs: A design-oriented perspective. // Proceedings of the 2009 ICSE Workshop on Multicore Software Engineering. - 2009. - Pp. 1-8.
38. Бочаров Н.В. Технологии и техника параллельного программирования. Обзор. // Программирование. - 2003. -№1. - С. 5-23.
39. Антонов А.С. Параллельное программирование с использованием технологии ОрепМР: Учебное пособие. - М.: МГУ, 2009. - С. 77.
40. Barbara Chapman, Gabriele Jost, Ruud van der Pas. Using OpenMP: Portable Shared Memory Parallel Programming. The MIT Press, 2007. - Pp. 353.
41. Антонов A.C. Параллельное программирование с использованием технологии MPI: Учебное пособие. - М.: МГУ, 2004. - С. 72.
42. Quinn D. Parallel Programming in С With MPI and Openmp. // Mcgraw Hill Higher Education, 2003. - Pp. 480.
43. Matti Ropo, Jan Westerholm, Jack Dongarra. Recent Advances in Parallel Virtual Machine and Message Passing Interface. // Springer 2009 edition, 2009. -Pp.364.
44. Joseph D. Sloan. High Performance Linux Clusters with OSCAR, Rocks, OpenMosix, and MPI. O'Reilly Media, 1 edition, 2004. - Pp. 370.
45. Душкин P. В. Функциональное программирование на языке Haskell. - М.: ДМК Пресс, 2007. - С. 608.
46. Bryan O'Sullivan, John Goerzen, Don Stewart. Real World Haskell. O'Reilly Media 1 edition. - 2008. - Pp. 714.
47. Рыбаков A.A. Erlang как язык, направленный на создание параллельных приложений. // Современные информационные технологии и ИТ-образование: Сборник избранных трудов VI Международной научно-практической конференции: Учебно-методическое пособие. Под ред. проф. В.А. Сухомлина. - М.: ИНТУИТ.РУ, 2011. - С. 1052.
48. Francesco Cesarini, Simon Thompson. Erlang Programming. // O'Reilly Media, 2009.-Pp. 498.
49. Аветисян А. И., Бабкова В. В., Калугин М. Д. Разработка приложений в среде ParJava // Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики. - 2008. - № 54. - С. 139-144.
131
50. Казаков Ф.А. Функциональный язык для разработки переносимых параллельных программ: дис. канд. техн. наук: 05.13.11 / Фёдор Александрович. - Красноярск, 2003. - С. 170.
51. Ездаков A. JT. Функциональное и логическое программирование. - М.: Бином. Лаборатория знаний, 2009. - С. 120.
52. Палагин В.В., Баканов В.М. Перспективы использования функционального программирования в разработке параллельных программ для многопроцессорных вычислительных систем. // Программное и информационное обеспечение систем различного назначения на базе персональных ЭВМ: Межвузовский сборник научных трудов - М., 2011. - Выпуск 14. - С. 44-50.
53. Городняя Л. В. Основы функционального программирования. Курс лекций. - М.: Интернет-университет информационных технологий, 2004. -С. 280.
54. Легалов А. И. Функциональный язык для создания архитектурно-независимых параллельных программ. // Вычислительные технологии. -2005.-Том 10, № 1.-С. 71-89.
55. Привалихин Д.В. Языковая и инструментальная поддержка функционально-потокового параллельного программирования: дис. канд. техн. наук: 05.13.11 / Привалихин Денис Викторович. - Красноярск, 2004. -С. 154.
56. Advanced Projects Research, Incorporated. Электронный ресурс. URL: http://www.apri.com/ (дата обращения 01.07.2012).
57. The PIPS Workbench Project. Электронный ресурс. URL: http://www.cri.ensmp.fr/~pips/ (дата обращения 01.02.2013).
58. Prestige Services RV. Электронный ресурс. URL: http://www.psrv.com/ (дата обращения 02.07.2013).
59. Открытая распараллеливающая система. Электронный ресурс. URL: http://ops.rsu.ru/about.shtml (дата обращения 07.07.2011).
60. Система V-Ray. Электронный ресурс. URL: http://v-ray.parallel.ru/ (дата обращения 02.05.2012).
61. Кузнецов A.A., Роганов В.А. Поддержка топологии вычислительного пространства в системе OpenTS // Программные системы: теория и приложения: электрон, научн. журн. 2010. - № 3(3) - С. 93-106.
62. DVM система. Электронный ресурс. URL: http://sp.cmc.msu.ru/dvm/dvmhtml 107/rus/index.html (дата обращения 10.05.2011).
63. Клинов М.С., Крюков В.А. Автоматическое распараллеливание Фортран-программ. Отображение на кластер. // Вестник Нижегородского университета им. Н.И. Лобачевского, 2009. - № 2. - С. 128-134.
64. Крюков В.А. Разработка параллельных программ для вычислительных кластерных сетей. // Институт прикладной математики им. М.В. Келдыша РАН, 2003.-С. 22.
65. Васенин В. А., Водомеров А.Н. Формальная модель системы автоматизированного распараллеливания программ // Программирование. -2007.-№4.-С. 3-19.
66. Christopher Olston, Benjamin Reed, Adam Silberstein. Automatic optimization of parallel dataflow programs. // Proceeding АТС 2008 USENIX 2008 Annual Technical Conference on Annual Technical Conference. 2008. - Pp. 267-273.
67. Карпов B.E. Введение в распараллеливание алгоритмов и программ. // Компьютерные исследования и моделирование. - 2010. - Том 2, № 3. - С. 231-272.
68. Торчигин C.B. Исследование методов отладки аппаратуры и программного обеспечения на процессоре с автоматическим распределением ресурсов: дис. канд. техн. наук: 05.13.15 / Торчигин Сергей Владимирович. - М., 2003.-С. 147.
69. Палагин В.В. Разработка системы правил препроцессора с целью оптимизации параллельных программ научно-технического характера по
времени выполнения для вычислителей архитектуры МРР. // Вестник МГТУ МИРЭА. - 2014. №1 (2) - С. 234-244.
70. Клинов М.С. Автоматическое распараллеливание некоторого класса фортран-программ. Отображение на кластер: дис. канд. физ.-мат. наук: 05.13.11 / Клинов Максим Сергеевич.-М., 2009.-С. 108.
71. Дастин Э., Рэшке Д., Пол Д. Автоматизированное тестирование программного обеспечения: внедрение, управление, эксплуатация. - М.: Лори, 2003.-С. 506.
72. Бабкова В.В. Методология поддержки разработки эффективных параллельных программ: дис. канд. физ.-мат. наук: 05.13.11 / Бабкова Варвара Вадимовна. - М., 2008. - С. 89.
73. Романенко A.A. Средства отладки параллельных программ для мультикомпьютеров: дис. канд. техн. наук: 05.13.11 / Романенко Алексей Анатольевич. - Новосибирск, 2004. - С. 112.
74. Maurice Herlihy, Nir Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 1 edition, 2008. - Pp. 528.
75. Сапожников А.П., Сапожникова Т.Ф. Реинжениринговая технология распределенных вычислений в локальной сети. // Распределенные вычисления и Грид-технологии в науке и образовании: Труды международной конференции. - Дубна, 2004. - С. 190.
76. Кутепов В.П., Фальк В.Н. Формы, языки представления, критерии и параметры сложности параллелизма. // Программные продукты и системы. -№ 3.-2010.-С. 16-26.
77. Афанасьев К.Е., Стуколов C.B., Демидов A.B. Многопроцессорные вычислительные системы и параллельное программирование: Учебное пособие. Кемеровский госуниверситет. - Кемерово: Кузбассвузиздат, 2003.-С. 182.
78. Волконский В.Ю. Оптимизирующие компиляторы для архитектуры с явным параллелизмом команд и аппаратной поддержкой двоичной
совместимости. // Информационные технологии и вычислительные системы. - 2004. - №3. - С. 26
79. Nathan Froyd, John Mellor-Crummey, Rob Fowler. Low-overhead call path profiling of unmodified, optimized code. // Proceeding ICS '05 Proceedings of the 19th annual international conference on Supercomputing. - 2005. - Pp. 81-90.
80. Antoniu Pop, Albert Cohen. Preserving high-level semantics of parallel programming annotations through the compilation flow of optimizing compilers. // Centre de Recherche en Informatique, MINES ParisTech, France INRIA Saclay and LRI, Paris-Sud 11 University, France. - 2011. - Pp. 2-9.
81. Christoph M. Angerer, Thomas R. Gross. Static analysis of dynamic schedules and its application to optimization of parallel programs. // ETH Zurich, Switzerland. - 2008. - Pp. 20.
82. Rajkishore Barik, Vivek Sarkar. Interprocedural load elimination for dynamic optimization of parallel programs. // Department of Computer Science, Rice University. - 2009. - Pp. 32.
83. Tim Harris, James Larus, Ravi Raj war, Mark Hill. Transactional memory, 2nd Edition. Morgan and Claypool Publishers 2 edition. - 2010. - Pp. 264.
84. Kalashnikov A.V., Kostenko V.A. A parallel algorithm of simulated annealing for multiprocessor scheduling // Journal of Computer and Systems Sciences International. - 2008. - Vol. 47, No. 3. - Pp. 455-463.
85. Kostenko V.A., Guryanov E.S. An Algorithm for scheduling exchanges over a bus with centralized control and an analysis of its efficiency. Programming and Computer Software. - 2005. - Vol. 31, No. 6. - Pp. 340-346.
86. Палагин В.В. Использование возможностей метаязыка при оптимизации параллельных программ для научно-технических расчётов. // Актуальные проблемы аппаратно-программного и информационного обеспечения науки, образования, культуры и бизнеса: Сборник научных трудов по материалам 5 международной научно-практической интернет-
конференции. - М., 2012. - С. 61-68.
135
87. Курносов М.Г., Пазников А.А. Об оптимизации распределения ветвей параллельных MPI-программ по процессорным ядрам вычислительного кластера. // Высокопроизводительные параллельные вычисления на кластерных системах. Материалы Седьмой Международной конференции-семинара. - Нижний Новгород: Нижегородский госуниверситет, 2007. - С. 443.
88. Mitsunori Kubo, Baoliu Ye, Arata Shinozaki. Ubiquitous multi-processor network-based pipeline processing framework for pervasive computing environments. // Proceeding AINA 2007 Proceedings of the 21st International Conference on Advanced Networking and Applications. - 2007. - Pp. 611-618.
89. Абросимова O.H., Белов C.A., Сысоев A.B. Балансировка вычислительной нагрузки для параллельных алгоритмов на вероятностных сетях. // Высокопроизводительные параллельные вычисления на кластерных системах: Материалы третьего Международного научно-практического семинара под ред. проф. Стронгина Р.Г. - Нижний Новгород, 2003. - С. 256.
90. Ефимов С.С. Обзор методов распараллеливания алгоритмов решения некоторых задач вычислительной дискретной математики. // Математические структуры и моделирование. - 2007. - №17. - С. 72-93.
91. Арделян Н.В., Саблин М.Н. Структурные свойства сеточных операторов в узловых неявных операторно-разносных схемах двумерной газовой динамики на треугольной сетке и повышение вычислительной эффективности объектно-ориентированных алгоритмов. // Вычислительные методы и программирование. - 2012. - Том 13. - С. 353365.
92. Арыков С.Б. Асинхронное программирование численных задач // Параллельные вычислительные технологии: Труды международной научной конференции. - Челябинск: ЮУрГУ, 2010. - С. 28-39.
93. Свешников В.М. Параллельные технологии решения краевых задач на квазиструктурированных сетках. // Научный сервис в сети Интернет:
Труды Международной суперкомпьютерной конференции. - М.: МГУ, 2010.-С. 238-241.
94. Попов П.Е. Математическое моделирование процессов фильтрации двухфазной несжимаемой жидкости на параллельных вычислительных системах: дис. канд. физ.-мат. наук: 05.13.18 / Попов Павел Евгеньевич. -Новосибирск, 2011. - С. 118.
95. Иордан В.И., Бледнов В.А. Моделирование диссипативных структур в нелинейной среде низкотемпературной плазменной струи с помощью MPI-вычислений. // Телематика 2008: Труды XV Всероссийской научно-методической конференции (Санкт-Петербург, 23-26 июня 2008 г.). -СПб.: СПбГУ ИТМО, 2008. - С. 26.
96. Новопашин А.П. Методы и инструментальные средства крупноблочного синтеза параллельных программ для вычислительных кластеров: дис. канд. техн. наук: 05.13.11 / Новопашин Алексей Петрович. - Иркутск, 2005. - С. 115.
97. Палагин В.В. Специфика отображения параллельной программы на языке программирования НОРМА на архитектуру многопроцессорных вычислительных систем. // Современные тенденции развития теории и практики управления в системах специального назначения: Научная конференция в честь 20-летия ФГУП концерн «Системпром» (Москва, 15 мая 2011 г.)-М., 2011.-С. 222-224.
98. Шматок A.B. Методы и инструментальные средства разработки масштабируемых параллельных программ для многопроцессорных систем со структурно-процедурной организацией вычислений: дис. канд. техн. наук: 05.13.11 / Шматок Алексей Владимирович.-Таганрог, 2004.-С. 172.
99. Молчанов И.Н., Химич А.Н., Попов A.B. и др. Об эффективной реализации вычислительных алгоритмов на MIMD-компьютерах // Искусственный интеллект. - 2005. - №3. - С. 175-184.
100. Зубатенко B.C., Майстренко A.C., Молчанов И.Н. и др. Исследование
некоторых параллельных алгоритмов решения задач линейной алгебры на
137
MIMD-компьютерах. // Искусственный интеллект. - 2006. - №3. - С. 129138.
101. Ильин В.П. Параллельные алгоритмы и технологии решения многомерных сеточных краевых задач // Телематика 2008: Труды XV Всероссийской научно-методической конференции (Санкт-Петербург, 23-26 июня 2008 г.). - СПб.: СПбГУ ИТМО, 2008. - С. 536.
102. Свешников В.М. Построение прямых и итерационных методов декомпозиции // Сибирский журнал индустриальной математики. - 2009. -№3.-С. 99-109.
103. Беляков H.A. Разработка объектно-ориентированной системы для организации параллельных вычислений в SMP-системах и её приложение к задачам термодинамического моделирования. // Современные информационные технологии и ИТ-образование. Сборник избранных трудов VI Международной научно-практической конференции: Учебно-методическое пособие. Под ред. проф. В.А. Сухомлина. - М.: ИНТУИТ.РУ. - 2011. - С. 937.
104. Kazushige Goto, Robert A. Geijn. Anatomy of high-performance matrix multiplication. // ACM Transactions on Mathematical Software (TOMS). -2008. - Vol. 34 Issue 3, No. 12 - Pp. 150.
105. Robert Sedgewick, Kevin Wayne. Algorithms. Addison-Wesley Professional, 2011.-Pp. 967.
106. Ахо А., Сети P., Ульман Д. Компиляторы: принципы, технологии и инструменты. - М.: Вильяме, 2003. - С. 349.
107. Серебряный К.С. Методы высокоуровневой оптимизации циклов: дис. канд. техн. наук: 05.13.11 / Серебряный Константин Сергеевич. - М, 2004. - С. 91.
108. Палагин В.В. Снижение времени выполнения параллельных программ за
счёт рационального использования особенностей архитектуры
многопроцессорных вычислительных систем. И Современные направления
теоретических и прикладных исследований 2012: сборник научных трудов
138
по материалам международной научно-практической конференции. -Одесса, 2012. - Выпуск 1. Том 3. - С. 79-83.
109. Mario Mendez-Lojo, Donald Nguyen, Dimitrios Prountzos. Structure-driven optimizations for amorphous data-parallel programs. // Proceeding PPoPP 2010 Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. - 2010. - Pp. 3-14.
110. Палагин B.B. Современные проблемы оптимизации процесса распараллеливания вычислений при трансляции программ на языке НОРМА. // Новые информационные технологии: Сборник трудов XIII Всероссийской научно-технической конференции. - М., 2010. - С. 54-59.
111. Спецификация языка НОРМА. Электронный ресурс. URL: http://www.keldysh.ru/pages/norma/specif/bookl.htm (дата обращения 15.02.2012).
112. Баканов В.М. Визуальная среда для разработки параллельных программ на языке НОРМА. // Автоматизация и современные технологии. - М.: 2010. -№4.-С. 31-34.
113. Андрианов А.Н., Бугеря А.Б., Ефимкин К.Н., Колударов П.И. Система параллельного программирования НОРМА - подход, результаты разработки, применение. // Информационные и математические технологии в науке, технике и образовании: Сборник трудов 10 Байкальской Всероссийской конференции. - Иркутск, 2005. - С. 5.
114. Осипов Д.В. Интегрированная среда создания параллельных программ на языке сверхвысокого уровня НОРМА. // Высокопроизводительные параллельные вычисления на кластерных системах: Материалы Седьмой Международной конференции-семинара. - Нижний Новгород: Нижегородский госуниверситет, 2007. - С. 272.
115. Палагин В.В. Оптимизация процесса индексирования с целью наилучшего использования кэширования в системе НОРМА. // Актуальные проблемы аппаратно-программного и информационного обеспечения науки, образования, культуры и бизнеса: Сборник научных трудов по материалам
2 международной научно-практической конференции. - М., 2009. - С. 6367.
116. Палагин В.В. Актуальные проблемы разработки и оптимизации параллельных программ на языке НОРМА. // Современные направления теоретических и прикладных исследований 2010: Сборник научных трудов по материалам международной научно-практической конференции. -Одесса, 2010. - Том 2. Технические науки. - С. 18-22.
117. Баканов В.М., Осипов Д.В. Параллельное программирование в стандарте MPI: Учебно-методическое пособие по выполнению лабораторных работ. -М., 2006.-С. 66-70.
118. Андрианов А.Н., Бугерия А.Б., Ефимкин К.Н. и др. Модульная архитектура компилятора языка Норма+. - М.: Препринт ИПМ, 2011. - № 64. - С. 16.
119. Stuikys Vytautas, Damasevicius Robertas. Meta-Programming and Model-Driven Meta-Program Development. // Springer 2013 edition. -2013. - Pp. 326.
120. Chamberlain B. L., Callahan D., Zima H. P. Parallel programmability and it he chapel language. // International Journal of High Performance Computing Applications. - 2007. - Vol. 21. - Pp. 291-312.
121. Brian Chess, Jacob West. Secure programming with static analysis. Addison-Wesley Professional, 2007. - Pp. 624.
122. Палагин B.B. Синтаксический анализ исходного кода на языке программирования НОРМА с целью оптимизации распределения данных в параллельных программах для научно-инженерных расчётов. // Современные тенденции развития теории и практики управления в системах специального назначения: Научно-технический сборник ОАО Концерн «Системпром». - М., 2012. - №1(2) - С. 559-566.
123. Seyed Abolghasem Mirroshandel, Alexis Nasr, Joseph Le Roux. Semi supervised dependency parsing using lexical affinities. // Proceeding ACL 2012 Proceedings of the 50th Annual Meeting of the Association for Computational Linguistics: Long Papers. - 2012. - Volume 1. - Pp. 777-785.
124. Christian Kästner, Paolo G. Giarrusso. Variability-aware parsing in the presence of lexical macros and conditional compilation. // Proceeding OOPSLA 2011 Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications. - 2012. - Pp. 8-10.
125. Bryan Ford. Parsing expression grammars: A recognition-based syntactic foundation. // Proceeding POPL 2004 Proceedings of the 31 st ACM SIGPLAN-SIGACT symposium on Principles of programming languages. - 2003. - Pp. 111-122.
126. Tillmann Rendel, Klaus Ostermann. Invertible syntax descriptions: Unifying parsing and pretty printing. // Proceeding Haskell 2010 Proceedings of the third ACM Haskell symposium on Haskell. - 2009. - Pp. 1-12.
127. Andreas Zollmann, Ashish Venugopal. Syntax augmented machine translation via chart parsing. // Proceeding StatMT 2006 Proceedings of the Workshop on Statistical Machine Translation Pages. - 2006. - Pp. 138-141.
128. Antoine Reilles. Canonical abstract syntax trees. // Journal Electronic Notes in Theoretical Computer Science (ENTCS) archive. - 2007. - Volume 176 Issue 4. -Pp. 165-179.
129. Rainer Koschke, Raimar Falke, Pierre Frenzel. Clone Detection Using Abstract Syntax Suffix Trees. // Proceeding WCRE 2006 Proceedings of the 13th Working Conference on Reverse Engineering. - 2006. - Pp. 253-262.
130. Iulian Neamtiu, Jeffrey Foster, Michael Hicks. Understanding source code evolution using abstract syntax tree matching. // Proceeding MSR 2005 Proceedings of the 2005 international workshop on Mining software repositories. - 2005. - Pp. 1-5.
131. Палагин B.B. Проблематика балансировки вычислительной трудоёмкости многоуровневых гнёзд циклов с учётом затрат на передачи данных между вычислительными узлами кластерной системы. // Актуальные проблемы аппаратно-программного и информационного обеспечения, культуры и бизнеса: Сборник научных трудов по материалам 4 международной
научно-практической конференции интернет-конференции. - М., 2011. -С. 56-62.
132. Vijay Nagarajan, Rajiv Gupta. Speculative optimizations for parallel programs on multicores. // Proceeding LCPC 2009 of the 22nd international conference on Languages and Compilers for Parallel Computing. - 2009. - Pp. 323-337.
133. Yoann Padioleau. Parsing C/C++ code without preprocessing. // Proceeding CC 2009 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS. - 2009. - Pp. 109-125.
134. Mark A. Weiss. Data structures and algorithm analysis in С++. Prentice Hall 3 edition.-2006.-Pp. 586.
135. Michael McCool, James Reinders, Arch Robison. Structured Parallel Programming: Patterns for Efficient Computation. Morgan Kaufmann, 1 edition, 2012.-Pp. 432.
136. Barik, Rajkishore. Efficient optimization of memory accesses in parallel programs. Proquest, Umi Dissertation Publishing. - 2011. - Pp. 224.
137. Sameer Agarwal, Srikanth Kandula, Nicolas Bruno. Re-optimizing data-parallel computing. // NSDI 2012 Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation. - 2011. - Pp. 21-22.
138. Палагин В.В. Использование препроцессора Pynorma с целью оптимизации параллельных программ для научно-технических расчётов по времени выполнения. // Современные тенденции экономики, управления, права, социологии, образования, медицины, физики, математики: сборник научных статей по итогам международной заочной научно-практической конференции. - СПб., 2013. - С. 230-233.
139. Крищенко В. А., Рязанова Н. Ю. Основы программирования в ядре операционной системы GNU/Linux: Учебное пособие.-М.: МГТУ им. Н.Э. Баумана, 2010.-С. 34.
140. Yu Y., Gunda Р.К., Isard М. Distributed Aggregation for Data-Parallel
Computing: Interfaces and Implementations. // Proceeding SOSP 2009
142
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Proceedings of the ACM SIGOPS 22nd symposium on operating systems principles. - 2009. - Pp. 247-260.
Fogel K. Producing Open Source Software: How to Run a Successful Free Software Project. O'Reilly Media, 2009. - Pp. 304.
Лицензионнее соглашение при использовании языка программирования Python. Электронный ресурс. URL: http://docs.python.org/license.html (дата обращения 11.05.2013).
Vogt Н. Open Source Customer Relationship Management Solutions. Diplomica Verlag, 2009.-Pp. 100.
Woods D., Guliani G. Open Source for the Enterprise: Managing Risks, Reaping Rewards. O'Reilly Media, 2005. - Pp. 240.
Гудлиф П. Ремесло программиста. Практика написания хорошего кода. М.: Символ-Плюс, 2009. - С. 704.
Маршалл Д., Бруно Д. Надежный код. - СПБ.: Русская Редакция, БХВ-Петербург, 2012. - С. 320.
Босуэлл Д., Фаучер Т. Читаемый код, или Программирование как искусство. - СПБ.: Питер, 2012. - С. 208.
Фаулер М. Рефакторинг. Улучшение существующего кода. - М.: Символ-Плюс, 2008.-С. 432.
Макконнелл С. Совершенный код. Мастер-класс. - М.: Русская Редакция, 2013.-С. 896.
Эванс Э. Предметно-ориентированное проектирование. Структуризация сложных программных систем. - М.: Вильяме, 2010. - С. 448. Спинеллис Д., Гусиос Г. Идеальная архитектура. Ведущие специалисты о красоте программных архитектур. - М.: Символ-Плюс, 2010. - С. 528. Mueller J.P. Professional IronPython. Wiley Publishing inc., 2010. - Pp. 504. Pedroni S., Rappin N., Essentials J. O'Reilly Media 1 edition, 2010. - Pp. 302. Баканов B.M. Параллельные вычисления в техническом вузе - потоковые (DATA-FLOW) вычислители. // Международный форум «Современное
образование: содержание, технологии, качество». - СПб.: 2010. - Том 2. -С.133-137.
155. Палагин В.В., Создание многопроцессорной вычислительной системы инструментального уровня. // Программное и информационное обеспечение систем различного назначения на базе персональных ЭВМ: Межвузовский сборник научных трудов. - М.:, 2008. - С. 119-123.
156. Торчигин С.В. Исследование методов отладки аппаратуры и программного обеспечения на процессоре с автоматическим распределением ресурсов: диссертация канд. техн. наук: 05.13.15 / Торчигин Сергей Владимирович М., 2003-С. 147.
157. Воеводин Вл.В., Жуматий С.А., Воеводин Вад.В. Практика суперкомпьютера «Ломоносов» // Открытые системы. - 2012. - С. 7.
158. Jack Dongarra, Hatem Ltaief, Azzam Haidar. High performance matrix inversion based on LU factorization for multicore architectures // Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis. - 2011. - No. 8. - C. 33-42.
159. Попов A.B., Химич A.H. Параллельный алгоритм решения системы линейных алгебраических уравнений с ленточной симметричной матрицей // Компьютерная математика. - 2005. - №2. - С. 52-59.
160. Adhianto L., Banerjee S., Fagan M., Krentel M. HPCTOOLKIT: Tools for performance analysis of optimized parallel programs. // Journal Concurrency and Computation: Practice & Experience - Scalable Tools for High-End Computing archive. - 2007. - Volume 22 Issue 6. - Pp. 685-701.
161. Жегуло О.А. Исследование и реализация непроцедурных преобразований программ для построения расширяемой системы распараллеливания: дис. канд. техн. наук: 05.13.11 / Жегуло Ольга Анатольевна. - Ростов-на-Дону, 2007.-С. 111.
162. Hager G., Wellein G. Introduction to High Performance Computing for Scientists and Engineers. CRC Press, 1 edition, 2010. - Pp. 356.
163. Палагин B.B. Препроцессирование исходного кода параллельных программ для научно-технических расчётов с целью оптимизации по времени выполнения. // Современные тенденции развития теории и практики управления в системах специального назначения: Научно-технический сборник ОАО Концерн «СистемПром». - М., 2013. - №2(4) -С. 421-429.
164. Каменщиков М.А. Исследование межплатформенной переносимости прикладных программ: дис. канд. техн. наук: 05.13.11 / Каменщиков Михаил Александрович. - М.: 2005. - С. 171.
165. Палагин В.В., Баканов В.М. Повышение эффективности параллельных программ по времени их выполнения за счёт рационального размещения данных в распределённой памяти вычислителя. // Программная инженерия.-2014.-№5.-С. 10-15.
166. Зорина Д.А. Разработка и исследование экономичных алгоритмов решения сеточных задач на кластере распределенных вычислений: дис. канд. техн. наук: 05.13.18 / Зорина Дарья Алексеевна. -Таганрог, 2008-С. 160.
167. Кораблин, Ю.П., Куликова H.JI. Тестирование программ с помощью частичной верификации // Программное обеспечение вычислительных и автоматизированных систем. - М.: РГСУ, 2010. - Выпуск 3. - С. 33-39.
168. Математическая модель частично централизованной одноранговой сети. / Халабия Р.Ф., Романов A.B., Рыбаков A.B., Палагин В.В. // Современные направления теоретических и прикладных исследований 2008: Сборник научных трудов по материалам международной научно-практической конференции. - Одесса, 2008. - Том 2. Технические науки. - С. 69-74.
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.