656c3eda582f701c8e88eb7c0ca22e6e.ppt
- Количество слайдов: 102
Система разработки параллельных программ “PARUS” Сальников Н. (salnikov@cs. msu. su А. ) Факультет ВМи. К МГУ
Проблема параллельного программирования n Параллельные программы имеют недетерминированное поведение q q q n Ошибки проявляются не при каждом запуске Затруднена отладка Не всегда понятна причина неэффективной работы Использование наиболее популярных, средств программирования MPI, Open. MP не избавляет от необходимости знать детали архитектуры
Высокоуровневые средства параллельного программирования n Расширение существующих языков программирования параллельными конструкциями q q q n Специализированные библиотеки и языки q q n DVM mp. C Cilk Т-система Charm++ PETSc НОРМА Автоматическое распараллеливание программ q q HPF DVM IBM Visual AGE C/C++/FORTRAN 90 compiler Intel C/C++ compiler
Проблемы, которые приходится решать при создании параллельной программы n Анализ зависимостей и собственно распараллеливание алгоритма и программы n Выяснение деталей поведения компонентов многопроцессорной системы n Балансировка загрузки процессоров и коммуникаций
Проблемы, которые приходится решать при создании параллельной программы n Существует ряд задач для которых приходится создавать параллельную программную реализацию графа, что не всегда легко сделать q q Нейронные сети Задачи биоинформатики (задача множественного выравнивания нуклеотидных или аминокислотных последовательностей)
Цели системы “PARUS” n Предложить «высокоуровневый» способ написания программ в виде графа потока данных, удобный для разработчиков параллельной программы. n Разработать систему отображения исходного представления параллельной программы в программу, готовую для выполнения на многопроцессорной системе. В том числе типа NUMA. n Предложить механизмы управления выполнением параллельной программы, учитывающие особенности архитектуры многопроцессорной системы, такие как быстродействие ее процессоров и временные характеристики сети передачи данных, т. е. решить задачу балансировки нагрузки. n Провести эксперименты по оценке эффективности разработанной системы при решении ряда конкретных задач.
«Высокоуровневый» способ написания программ в виде графа потока данных n Разработчик параллельной программы по своему усмотрению формирует участки программ, последовательные фрагменты кода, подлежащих исполнению каждый на своем выделенном процессоре и схему взаимодействия фрагментов. n Эти фрагменты кода записываются на алгоритмическом языке высокого уровня – С++. n Необходимые обмены данными между последовательными фрагментами, без участия разработчика, реализуются через вызовы MPI-функций.
Краткое описание системы “Parus” n Алгоритм решаемой задачи представляется как ориентированный граф: q q вершины - вычисления, рёбра - зависимость по данным.
Краткое описание системы “Parus” (продолжение) Программа описывается как сеть из n n n вершин – истоков внутренних вершин – стоков. Чтение и инициали зация данных Обработка данных Запись результа тов
Краткое описание системы “Parus” (продолжение) n Описание графа хранится в текстовом файле, по которому строится C++ код c MPI вызовами.
Этапы работы системы “PARUS” n Тестирование многопроцессорной системы n Создание параллельной программы n Исполнение параллельной программы
Этапы работы системы “PARUS” Тест сети Результаты теста Тест процессоров Результаты теста Монитор Сетевой информации
Этапы работы системы “PARUS” Редактор графа Исходный файл граф программы Преобразователь в C++ c MPI вызовами С программа С++ Граф программа Анализатор зависимостей
Этапы работы системы “PARUS” Результаты тестов Исходный файл граф программы Построитель расписаний Расписание Откомпилированная Граф программа Результаты работы
Тесты скоростей обмена данными и производительности процессоров
Тест производительности процессоров n На каждом процессоре измеряется время перемножения матрицы определённого размера n Результат записывается как вектор в файл (элемент - вектора время работы каждой нити на каждом из процессоров в секундах) n В дальнейшем этот файл будет использоваться при вычислении времени выполнения вершины на процессоре
Тесты сетевых обменов: представление результатов n измеряется время передачи сообщений между машинами сети n по результатам измерений формируется матрица Nx. N, N - число задействованных процессоров n В результате формируется 4 -мерная модель производительности сети (длина сообщения, передающий и принимающий процессоры, время передачи)
Что необходимо тестировать n Пропускную способность канала n Зависимость времени передачи сообщения от размера сообщения n Влияние “фоновых” передач сообщений на время “целевой” передачи сообщения n “Стрессоустойчивость” сети
Тесты сети в системе “PARUS” n В системе создано 6 различных MPI тестов сетевых обменов. q q n one_to_one async_one_to_one all_to_all и. т. д Тест выбирается разработчиком, по умолчанию стоит one_to_one результаты теста используются динамическим загрузчиком
Машины, на которых проводилось тестирование n MBC 1000 -M 768 процессоров Alpha (кластерная архитектура) n IBM e. Server p. Series 690 (“Регата”) 16 процессоров Power 4+ ( NUMA архитектура) n Sun Fujitsu PRIMEPOWER 850 Server 16 процессоров SPARC 64 -V (архитектура с общей памятью)
Поведение МВС-1000 m при интенсивной одновременной передаче n тест all_to_all , зависимость времени передачи сообщения от длины сообщения для 64 процессоров
Влияние размера “шумового” пакета на время передачи сообщений (МВС-1000 м) n Тест test_noise, зависимость времени от размера “фонового” пакета, длина сообщения - 5000, количество задействованных процессоров - 128
Передача на фоне шума и в его отсутствии (Regatta) n тест test_noise_blocking, размер “шумового пакета” - 5000, количество задействованных процессоров - 16
Визуализация загруженности сети
Пример представления загруженности сети n МВС-1000 М, задействовано 15 процессоров, длина передаваемого сообщения 1000 байт
Исполнение граф программы
Представление вершины и рёбер n Вершинам приписан вес (число эталонных операций) и уровень от истока. Далее они становятся С++ функциями. n Рёбра, с приписанным весом (количеством байт), соответствуют MPI функциям передачи данных или копированию памяти в зависимости от расположения данных.
Представление вершины и рёбер n При создании вершины графа необходимо соблюдать баланс между временем затрачиваемым на исполнение кода вершины и временем на передачу данных. q Более “тяжёлые” вершины в среднем выгоднее “лёгких”
Структура вершины графа n head – код содержит описания переменных и начальную инициализацию данных необходимых узлу. n body – код выполняемый после получения всех необходимых данных. n tail – код содержит действия по подчистке памяти и утилизации данных.
Пример вершины <NODE_BEGIN> number 1 type 1 weight 100 layer 2 num_input_edges 1 edges ( 1 ) num_output_edges 1 edges ( 2 ) head "head" body "node" tail "" <NODE_END>
Структура описания ребра графа n n Данные разбиты на кусочки (чанки), каждый отвечает за свой фрагмент массива. Фрагменты принимающей стороной могут быть собраны в другом порядке Int a[]; Int b[]; Принимающая вершина
Пример ребра <EDGE_BEGIN> number 2 weight 2 type GRAPH_NONE num_var 1 num_send_nodes 1 send_nodes ( 2 ) num_recv_nodes 1 recv_nodes ( 5 ) <SEND_BEGIN> <CHUNK_BEGIN> name "*data_out" type GRAPH_DOUBLE left_offset "0" right_offset "window_size+F_LEN" <CHUNK_END> <SEND_END> <RECIEVE_BEGIN> <CHUNK_BEGIN> name "*data_out" type GRAPH_DOUBLE left_offset "0" right_offset "window_size" <CHUNK_END> <RECIEVE_END> <EDGE_END>
Механизм исполнения граф программы n “PARUS” формирует систему MPI-нитей, которые осуществляют исполнение граф-программы. n В процессе исполнения программы на многопроцессорной системе производится динамическое назначение вершин по MPI-нитям. q q n минимизируются времена передач данных минимизируется время обработки вершины при выборе свободного процессора. Данные по рёбрам передаются асинхронно
Механизм передачи данных между 2 -мя вершинами
Разделение MPI-нитей по ролям n Выделяется управляющая нить q q n Выбирает вершину для назначения на нить Выбирает ребро для назначения на нить Остальные нити q q q Исполняют вершины Хранят наработанные вершинами данные Пересылают и принимают данные по рёбрам другим MPI-нитям
Режимы назначения вершин на обработку MPI-нитями “PARUS” n Статический q n Динамический q n Назначение вершин происходит согласно составленному заранее расписанию Назначение вершин происходит согласно текущей ситуации Комбинированный q Предоставляется возможность учитывать пожелания разработчика граф-программы в спорных ситуациях по назначению вершины на MPI-нить
Принцип работы Динамического режима n Среди списка ожидающих выполнения вершин, выбирается та, которая на данной MPI нити вычислится за минимальное время.
Динамический режим (вычисление времени) n n Exec. Time вычисляется следующим образом: Transfer. Time вычисляется следующим образом:
Задержки при передаче
Точные значения задержек. n Точное значение времени передачи полученное после тестирования сети. n Функция задаваемая набором матриц по числу длин сообщений указанных в тесте. (i, j) – время передачи от i-ой нити к j-ой
Принцип работы комбинированного режима n В случае 2 -х одинаковых по времени работы номеров вершин после работы процедуры динамического режима выбирается тот, который присутствует в файле расписания для данной MPI-нити
Построитель расписания
Расписание n Под расписанием будем понимать вектор S элементов Snode=(procj, ranknode) q ranknode - порядковый номер вершины на MPI-нити n Для расписания определена функция времени исполнения граф-программы:
Время расписания n Tnode – время старта вершины на MPI-нити n tnode – время исполнения вершины при условии старта к моменту Tnode
Вычисление времени расписания n n Функция Start. Time – носит рекурсивный характер. Parents(node) – множество вершин из которых существует ребро входящее в node
Вычисление времени расписания n Здесь Exec. Time и Node. Time вычисляются по тем же формулам, что и в случае динамического режима назначения вершин по MPI-нитям
Цель n Приближённое решение “хорошего” расписания ищется генетическим алгоритмом q q q Расписание – хромосома Global. Time – функция качества Порядковый номер и номер нити – ген
Генетический алгоритм n Популяция – некоторое подмножество множества допустимых расписаний n Мутации – случайно меняется порядковый номер или номер нити (число мутаций задаётся в параметрах) n Скрещивания – производятся в одной или нескольких вершин графа, номер выбирается как равномерно распределённая случайная величина
Исследование применимости системы “PARUS”
Эффективность использования “PARUS” Эффективность системы “PARUS” исследовалась на следующих задачах: ● ● Искусственной нейронной сети (параллельный перцептрон) Частотного фильтра звуковых сигналов Распределённой операции над массивом Задачи построения множественного выравнивания нуклеотидных последовательностей
Задача построения перцептрона n n Трёхслойная сеть. число входов колеблется от 500 до 18500 Активационная функция – экспоненциальная сигмоида
Распараллеливание перцептрона n Каждый слой сети разделяется на группы n Нейроны, попадающие в одну группу, относятся к одной вершине графа. n Рёбра между нейронами сливаются в одно ребро и превращаются в рёбра между группами.
Зависимость ускорения относительно 2 -процессорного варианта для параллельного персептрона от числа входов.
Результаты тестирования (число групп меньше числа процессоров. )
Частотный фильтр звуковых сигналов n n Часто требуется для предварительной обработки данных Вычислительно сложная задача Цель – создать параллельную реализацию фильтра частот в сигнале.
Частотный фильтр звуковых сигналов на основе свёртки. n n n Операция свёртки реализуется с помощью алгоритма быстрой свёртки (FFT Convolution). Фактически обработка сигнала S с помощью фильтра K производится по формуле: Свойства свёртки позволяют разбивать сигнал на части, которые могут быть обработаны параллельно. Однако за счёт удлинения на ядро свёртки необходимо стыковать сегменты в правильном порядке.
Частотный фильтр звуковых сигналов. n Ядро фильтра n строится на основе sinc-функции (функции вида sin(x)/x). В силу поведения sinc-функции на бесконечности необходимо проводить её обрезание и оконное взвешивание.
Метод распараллеливания фильтра звуковых сигналов:
Использование параллельного фильтра звуковых сигналов. n n n Фильтр встроен в систему анализа и обработки экспериментальных данных: http: //angel. cs. msu. su/projects/system/ Грант РФФИ 02 -07 -90130 Для работы в параллельном режиме используется машина “Регата”.
Распределённая операция над массивом чисел. n Суммирование в виде дерева. q массив делится n на частей размера m. Эти части независимо друг от друга суммируются, в результате получается n значений суммы. q получившийся массив также делится на части размера не больше чем m и процедура повторяется.
Граф для распределённой операции Массив разбит для операции над 2 -мя элементами.
Ускорение для распределённого суммирования на машине МВС 1000 -М
Эффективность для распределённого суммирования на машине МВС 1000 -М
Множественное выравнивание нуклеотидных последовательностей n Выравнивания – один из основных инструментов изучения нуклеотидных последовательностей AY 283774 AY 283775 MC 2 TRGC ECTRNAL TAGACGCGCTAGCTTCAGGTGTTAGTGTCCTTACGGACGTGGGGGTTCAAGTCCCC TAGAC---CTCAACTGAGGTCTTTTTTTATGCCTGAAATCCAGTGTTTATCTTTCC CAGACGCACTAGACTTAGGATCTAGCGTCTTT---GACGTAAGGGTTCAAGTCCCTTATC TAGACACGCTACCTTGAGGTGGTAGTGCCCAATAGGGCTTACGGGTTCAAGTCCCGTCCT **** ** * * *** * AY 283774 AY 283775 MC 2 TRGC ECTRNAL TCGCACCACGACTTT---AAAG--AATTGAACTAAAAATTCAAAAAGCAGTATTTCGGCG CGCTATATTAACTCTCTCAAGGTCAACC-------GATATCAACGTAC-ATCTACCAACA CCCCACCA--ATTTT---GAATTTAACC------AGATTTTTCTGGTTTTTTATTTGAAA CGGTACCA-AATTCC---AGAA-------GAGACGCTGAAAAGC-GTCTTTTTTCG * ** * * AY 283774 AY 283775 MC 2 TRGC ECTRNAL AGTAGCG----CAGCTTGGTAGCTAT----------TTTTAAAATGTTATTTTAAGAAAT TTTTG-------GTCCTGGT----
Оптимальное парное выравнивание n n n Ищем оптимальную расстановку «гэпов» (символов «–» ) Для выравнивания строк a и b введём функцию P(a, b), которая задаёт качество выравнивания: Задача – найти выравнивание, максимизирующее P(a, b)
Парное выравнивание n Под парным выравниванием 2 -х нуклеотидных последовательностей будем понимать 2 одинаковые по длине последовательности символов: “a, t, g, c, –”, расположенные друг над другом aattg aagtta aa–ttg
Множественное выравнивание n Оптимизация множественного выравнивания включает максимизацию числа одинаковых символов в столбцах при минимизации “гэпов” CACGACTTT---AAAG--AA ATTAACTCTCTCAAGGTCAA CA--ATTTT---GAATTTAA CA-AATTCC---AGAA--AA
Алгоритм построения множественного выравнивания. 1 2 AY 283774 n На третьем этапе по кластерному дереву от листьев к корню производятся парные выравнивания, где вставки из “” можно вставлять только целиком для столбца группы. AY 283775 MC 2 TRGC ECTRNAL 3 CACGACTTT---AAAG--AA ATTAACTCTCTCAAGGTCAA CA--ATTTT---GAATTTAA CA-AATTCC---AGAA--AA
Распараллеливание алгоритма множественного выравнивания n n n За основу брался пакет muscle http: //www. drive 5. com/muscle/ Распараллеливание производится на этапе построения выравнивания по дереву, самом ресурсоёмком. Параллелизм достигается за счёт параллельности построений парных выравниваний на ветках дерева.
Данные для тестирования задачи множественного выравнивания. n Основу составила коллекция длинных терминальных повторов класса 5 (LTR 5). http: //math. genebee. msu. ru/ q q Совместный проект института физико-химичесой биологии им. А. Н. Белозерского МГУ и Людвиговского института раковых исследований "Ludwig Institute for Cancer Research", грант CRDF RB 01277 -MO-2 Alexeevski A. V. , Lukina E. N. , Salnikov A. N. , Spirin S. A. “Database of long terminal repeats in human genome: structure and synchronization with main genome archives” “Proceedings of the fours international conference on bioinformatics of genome regulation and structure” Volume 1. BGRS 2004, Novosibirsk, редакционно издательский отдел Ици. Г СО РАН стр. 28 -29.
Результаты тестирования n n n Тестирование проводилось на машине Prime Power 850. В однопроцессорном варианте множественное выравнивание для ~1200 последовательностей длины ~1000 занимает 1 час 8 минут. В многопроцессорном варианте для 12 процессоров – 28 минут
Использование построителя множественного выравнивания n Построитель выравниваний доступен online по адресу: q http: //monkey. genebee. msu. ru/~salnikov/
Выводы n Система “PARUS” зарекомендовала себя удобным средством создания параллельных программ, в особенности для “графовых алгоритмов”. n Проведено исследование эффективности построенных параллельны реализаций, для ряда практических задач. На основе них применимость системы “PARUS” для решения практических задач вообще. n Предложен оригинальный алгоритм динамической балансировки загрузки процессоров и каналов связи. n Проведено тестирование эффективности сетевых обменов для некоторых многопроцессорных систем.
Описание тестов сетевых обменов
Тесты сетевых обменов: виды тестов n all_to_all - выяснение “стрессоустойчивости” сети; одновременный неблокированный обмен сообщениями n one_to_one - определение пропускной способности каналов связи; блокированная передача от i-й машины к j-й, остальные “молчат” n async_one_to_one - определение “полнодуплексности” каналов; неблокированный обмен MPI-сообщениями
Тесты сетевых обменов: виды тестов n send_recv_and_recv_send – усредненная производительность межпроцессорных обменов n test_noise - то же, что async_one_to_one, но добавлен параметр шума n test_noise_blocking - измеряется время блокирующих передач на фоне “шума”
Анализатор зависимостей
Переменные оператора n Разделим всё множество переменных оператора S языка программирования на 2 подмножества: q Variablesin – множество переменных данные которых оператор использует для своей работы n q In(S)= Variablesin Variablesout – множество переменных содержимое которых оператор меняет после своей работы. n Out(s)= Variablesout
Зависимости n Пусть представлена упорядоченная последовательность операторов S 1, …, Sn. Для 2 -х операторов Si и Sj, где i<j. n Между 2 -мя операторами есть зависимость, если множество переменных с которыми они взаимодействуют пересекаются.
Теоретические работы и программные средства n В. В. Воеводин “Информационная структура алгоритмов. ” Издательство Московского университета 1997 г. n Vray – Средство для анализа зависимостей в FORTRAN программе
Цель анализатора n Построить по C-программе граф зависимостей. n Основной стратегией при построении графа по C-программе, является стратегия максимального разделения операций с целью получения наиболее широкого представления графа. (Максимизация параллелизма)
Ограничения на исходный код для анализатора зависимостей в C – программе n Анализ текстов проводится в предположении статического распределения памяти. n Работа производится только с одним исходным файлом. n Не производится раскрытие тел функции, кроме функции main, условных операторов и циклов с невычислимыми на стадии компиляции границами.
Типы зависимостей n Возможны 4 типа зависимостей: q q Зависимость по входам “in-in” Прямая зависимость “out-in” Обратная зависимость “in-out” Зависимость по выходам “out-out”
Зависимость по входам n По сути это означает, что 2 различных оператора читают одну и ту же переменную. n Этот факт не накладывает никаких ограничений, на порядок следования операторов и тем самым реально не определяет никакой зависимости, поэтому этот случай в дальнейшем можно не рассматривать.
Прямая зависимость n Данный тип зависимости самый естественный тип зависимости, поскольку описывает ситуацию, когда один из операторов напрямую использует данные вырабатываемые другим оператором.
Пример прямой зависимости 1. 2. a=1; b=a+1; 1 2
Обратная зависимость n Этот тип зависимости характеризуется тем, что оператор должен прочитать старое значение переменной, до того как оно изменится. Другими словами чтение и запись нельзя менять местами. n В случае нарушения данной зависимости, тоесть перестановки операторов местами, результат изменения данных оператором, у которого они являются выходом, приведёт к порче данных у оператора, для которого они указаны как вход.
Пример антизависимости 1. 2. 3. 4. b=1; a=b+1; c=b+2; b=0; n 4 -й оператор не требует результатов работы предыдущих, но если он будет выполнен между 1 -м и 2 -м или 2 -м и 3 -м, то результат будет отличаться от результата выполнения этого фрагмента кода при начальном порядке следования операторов. Проблемы возникнут если 4 -й оператор выполнить до 1 -го; в этом случае значение b так и останется 1, а не 0 как было бы если порядок следования операторов не менять. (Отметим, что порядок выполнения операторов 2 и 3 не фиксирован. ) 2 1 4 3
Зависимость по выходам n Этот тип зависимостей говорит нам, что порядок записей может быть важен. В случае перестановки операций записи или выполнения операций записи в переменную параллельно может возникнуть ситуация, когда операторы, следующие за этими получат неправильные данные на вход.
Пример зависимости по выходам 1. 2. 3. 4. 5. b=0; … b=1; c=b+2 ; a=b+1; 1 n Для корректной работы программы оператор 3 должен выполняться после 1 -го. Операторы 4 и 5 в любом случае могут быть исполнены независимо, но строго после оператора 3. 4 3 5
Работа анализатора n Для всех переменных производится автоматическое преобразование имён. К имени переменной добавляется номер блока в котором она была вызвана. n Для всех операторов рекурсивно строится дерево зависимостей. q q q Вершина элементарный оператор или оператор, который не удалось раскрыть Ребро строится, если есть прямая, обратная зависимость или зависимость по выходам Оставляются только транзитивные зависимости, если это возможно
for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) for (k = 0; k < 10; k++) Result[i][j] += Left [i][k] + Right [k][j]; n Применительно к вложенным циклам можно сказать, что после раскрытия всех итераций получается огромное количество вершин, так для простого алгоритма перемножения матриц (3 вложенных цикла) и матрицы 10 х10 получается порядка 1100 вершин. chunk for goal chunk
Вычисление весов операторов n Для элементарных операций вес выбирается из статистических соображений n Для условных операторов вес вычисляется как сумма веса условия оператора и максимального значения веса одной из альтернатив. Вес линейного участка кода вычисляется как сумма весов совляющих его оператстаоров. n К сожалению про число итераций цикла while как правило ничего сказать нельзя, поэтому вес цикла считается как вес его тела. Тоже самое относится и к циклу do while
Вычисление веса для цикла for (I 1=L 1 ; I 1<=U 1 ; I 1++) {. . . for(I 2=L(I 1) ; I 2<=U(I 1) ; I 2++) {. . . for(IK=L(I 1, I 2, . . . , IK-1) ; IK <=U(I 1, I 2, . . . , IK-1) ; IK ++) { Body(I 1, I 2, . . . , IK) }. . . }
Алгоритм работы управляющей нити
Работа управляющей нити n n Все MPI нити помечаются, как занятые, и запускается бесконечный цикл Затем выставляется ловушка (блокированный приём сообщения от остальных нитей) q q q Освобождение MPI-нити Запрос нахождения данных по входящим рёбрам Завершён обмен данных по одному из рёбер
Работа управляющей нити продолжение n После приёма сообщения ловушкой меняется состояние внутренних переменных. n Проверка на наличие рёбер графа, информация которых требуется и данные по которым можно послать. Инициализация пересылки если это необходимо. q q Ребро помечается как посылаемое Ребро удаляется из не посланных
Работа управляющей нити продолжение n Добавление вершин очередного слоя в список готовых к выполнению вершин. q Происходит если все вершины назначены к данному моменту n Информирование ожидающих вершин о местонахождении данных по входящим в них рёбрам n Назначение вершин из списка готовых к выполнению на одну из MPI-нитей.
Условия остановки управляющей нити n Отсутствие ещё не запущенных вершин n Не должно быть рёбер, по которым в текущий момент времени производится передача данных n Не должно быть рёбер, по которым ещё не инициализирован обмен n Все нити, кроме управляющей, свободны на данный момент
Список публикаций по теме работы n n Сальников А. Н. “Разработка инструментальной системы для динамической балансировки загрузки процессоров и каналов связи” ”Высокопроизводительные параллельные вычисления на кластерных системах. ” Материалы Международного научно-практического семинара. Изд-во Нижегородского университета, 2002 г. ISBN 5 -85746 -681 -4 стр. 159 -167. Сальников А. Н. , Сазонов А. Н. , Карев М. В. “Прототип системы автоматизированного создания параллельных программ “PARUS” ” ”Высокопроизводительные параллельные вычисления на кластерных системах. ” Материалы второго Международного научно-практического семинара. Изд-во Нижегородского университета, 2002 г. стр. 261 -265. Сазонов А. Н. , Сальников А. Н. “Прототип системы разработки приложений обработки экспериментальных данных на гетерогенных многопроцессорных системах. ” Тезисы, Международный семинар ”Супервычисления и математическое моделирование. ” Российский федеральный ядерный центр – Всероссийской НИИ экспериментальной физики. Саров 17 -21 июня 2002 г. стр. 71 -72. Сальников А. Н. , Сазонов А. Н. , Карев М. В. “Прототип системы разработки параллельных программ для гетерогенных многопроцессорных систем. ” “Программные системы и инструменты” тематический сборник N 3 факультета ВМи. К МГУ им. Ломоносова 2002 г. ISBN 5 -89407 -149 -6 стр. 139 -151.
Список публикаций по теме работы n n n Сальников А. Н. “Некоторые технические аспекты инструментальной системы для динамической балансировки загрузки процессоров и каналов связи” “Программные системы и инструменты” тематический сборник N 3 факультета ВМи. К МГУ им. Ломоносова 2002 г. ISBN 5 -89407 -149 -6 стр. 152 -164. Сальников А. Н. , Сазонов А. Н. , Карев М. В. “Прототип системы разработки приложений и автоматического распараллеливания программ для гетерогенных многопроцессорных систем. ” “Вопросы Атомной Науки и Техники” серия: “Математическое моделирование физических процессов” министерство российской федерации по атомной энергии ФГУП, Российский федеральный ядерный центр – ВНИИЭФ, научно-технический сборник, выпуск N 1 2003 г. стр. 61 -68. Булочникова Н. М. , Сальников А. Н. , “Разработка прототипа CASE средства создания программ для гетерогенных многопроцессорных систем “PARUS””, “программные системы и инструменты” тематический сборник N 4 факультета ВМи. К МГУ им. Ломоносова 2003 г. Издательский отдел факультета ВМи. К МГУ. ISBN-5 -89407 -170 -4 стр. 203 -209. Иванов А. С. , Сальников А. Н. “Методы генерации тестов для системы параллельного программирования “Parus” на основе data flow подхода”. Материалы Международной конференции студентов и аспирантов по фундаментальным наукам “Ломоносов 2004”, секция “Вычислительная математика и кибернетика. ” Издательский отдел факультета ВМи. К МГУ. ISBN 5 -89407 -178 -X 2004 г. cтр. 8. Булочникова Н. М. , Горицкая В. Ю. , Сальников А. Н. “Методы тестирования производительности сети с точки зрения организации вычислений” труды Всероссийской научной конференции “Научный сервис в сети Интернет 2004” Издательство Московского университета 2004 г. ISBN 5 -211 -05007 -X стр. 221 -223.
Список публикаций по теме работы n n Булочникова Н. М. , Горицкая В. Ю. , Сальников А. Н. “Система поддержки сбора и анализа статистики о работе вычислительной системы” “Методы и средства обработки информации” Труды второй всероссийской научной конференции. - Москва, издательский отдел факультета ВМи. К МГУ, ISBN 5 -89407 -230 -1. Стр. 136 -141. 2005 г. Колпаков Р. В. , Сальников А. Н. “Аспекты параллельного программирования при задании программы как графа зависимости по данным на примере написания тестов для системы “PARUS”” “Методы и средства обработки информации” Труды второй всероссийской научной конференции. - Москва, издательский отдел факультета ВМи. К МГУ, ISBN 5 -89407 -230 -1. Стр. 269 -275. 2005 г. Н. М. Булочникова, В. Ю. Горицкая, А. Н. Сальников “Методы анализа статистики о работе вычислительной системы. Оценка эффективности задач пользователей” “Научный сервис в сети Интернет: технологии распределённых вычислений” Труды Всероссийской научной конференции (19 -24 сентября 2005 г. , г. Новороссийск). М. : Изд-во МГУ, 2005 г. стр. 128 -130 ISBN 5 -211 -05141 -6 Булочникова Н. М. , Горицкая В. Ю. , Сальников А. Н. “Некоторые аспекты тестирования многопроцессорных систем” “Программные системы и инструменты” тематический сборник факультета ВМи. К МГУ им. Ломоносова: N 5. Москва, издательский отдел факультета ВМи. К МГУ, 2005 г. , ISBN 5 -89407 -216 -6. Стр. 73 -82.
656c3eda582f701c8e88eb7c0ca22e6e.ppt