- •Билет №1
- •1.Составные части и свойства распределенной системы
- •2. Удаленный сервер
- •Билет №2
- •1. Параллелизм в распределенной системе
- •2. Реализация локального сервера
- •Билет №3
- •1. Закон Амдала
- •2. Заместитель/заглушка. Компилятор midl
- •Билет №4
- •1. Ускорение решения задачи в распределенной параллельной системе
- •2. Язык idl
- •Билет №5
- •1. Последовательные операции. Параллельные операции. Число процессоров.
- •2. Назначение данных на узлы распределенной системы. Модель назначения объектов на узлы. Сокращение трафика в каналах передачи данных.
- •Билет №6
- •1. Планирование параллельной распределенной обработки данных.
- •2. Модель назначения объектов на узлы. Частоты запросов к объектам. Длины объектов. Производительность узлов. Производительность каналов передачи данных.
- •Билет №7
- •1. Параллелизм в пространстве и во времени (конвейерный параллелизм)
- •2. Среднее время обработки одного запроса. Минимизация времени
- •Многошаговое планирование на базе asap
- •1 31 6 Типы операций:
- •Билет №8
- •1. Синхронное и асинхронное планирование.
- •2. Время обработки всех запросов к объектам. Загрузка узлов. Загрузка каналов передачи данных.
- •Билет №9
- •1. Планирование при ограничениях на ресурсы, время, достижимость
- •2. Локальный вызов процедуры. Маршалинг Локальный вызов процедуры
- •Маршалинг
- •Билет №10
- •Стратегия планирования asap Алгоритм планирования asap (как можно раньше)
- •2. Серверы в exe.
- •Билет №11
- •1. Стратегия планирования alap
- •2. Включение и агрегирование компонентов
- •Стратегия планирования «Группировка доминирующей последовательности» (Dominant Sequence Clustering - dsc)
- •Билет №12
- •1. Стратегия спискового планирования
- •Регистрация компонента в реестре
- •Билет №13
- •1. Многошаговое планирование
- •2. Функции CoGetClassObject и DllGetClassObject и их использование
- •Билет №14
- •1. Цепочечное планирование
- •2. Интерфейс iClassFactory
- •AБилет №15
- •1. Граф предшествования и граф распараллеленности операций
- •2. Фабрика класса
- •Билет №16
- •1. Свертывание графа распараллеленности операций
- •2. Использование динамической библиотеки. Экспорт функций из библиотеки. Загрузка и выгрузка dll
- •Билет №17
- •1. Синтез последовательно параллельного плана
- •2. Динамическая компоновка. Библиотеки dll. Создание динамической библиотеки
- •Билет №18
- •1. Модель разнородной распределенной системы
- •2. Управление временем жизни компонента. Подсчет ссылок
- •Билет №19
- •1. Сведение планирования к задаче целочисленного линейного программирования
- •2. Запрос интерфейса. Интерфейс iUnknown. Реализация интерфейса
- •1 31 6 Типы операций:
- •Билет №20
- •1. Задача минимизации ресурсов при заданном времени реализации плана
- •2. Таблица виртуальных функций
- •Билет №21
- •1. Целочисленное линейное программирование. Пример. Целевая функция. Система ограничений
- •Многошаговое планирование на базе asap
- •Билет №22
- •1. Планирование выполнения графа задач на узлах распределенной системы с учетом обмена данными
- •2. Теория интерфейсов
- •Неизменность интерфейсов
- •Билет №23
- •1. Граф задач. Назначение задач на процессоры. Обмен данными. План решения задач на каждом процессоре. Планирование выполнения графа задач на узлах распределенной системы с учетом обмена данными
- •Планирование графа задач
- •2. Языки и инструменты программирования распределенной обработки данных.
- •1 31 6 Типы операций:
- •Билет №24
- •1. Стратегии планирования на графе задач. Планирование графа задач
- •2. Процессы и потоки. Многопоточные приложения. Модель многопоточных приложений
- •Билет №25
- •1. Стратегия планирования «Наиболее ранняя задача первая» (Earliest Task First - etf). Стратегия планирования «Наиболее ранняя задача первая» (Earliest Task First - etf)
- •2 . Инкапсуляция. Полиморфизм. Виртуальные функции. Чисто абстрактные базовые классы. Множественное наследование. Инкапсуляция.
- •Полиморфизм и виртуальные функции
- •Чисто абстрактные базовые классы
- •Множественное наследование классов. Компоненты
- •1 31 6 Типы операций:
- •Билет №26
- •1. Стратегия планирования «Зануление дуг» (Edge Zeroing - ez). Стратегия планирования «Зануление дуг» (Edge Zeroing - ez)
- •2. Преимущество использования компонентов. Требования к компонентам. Преимущества использования компонентов
- •Требования к компонентам
- •Билет №27
- •2. Модель компонентных объектов com.
- •1 31 6 Типы операций:
- •Билет №28
- •1. Стратегия планирования «Управление мобильностью» (Mobility Directed - md). Стратегия планирования «Управление мобильностью» (Mobility Directed - md)
- •2. Интерфейс передачи сообщений (Message Passing Interface - mpi). Интерфейс передачи сообщений mpi
- •Постановка проблемы
- •Билет №29
- •1. Граф взаимодействия задач. Граф разнородной сети. Планирование решения задач в разнородной распределенной системе
- •2. Интерфейс OpenMp. Интерфейс OpenMp
- •Билет №30
- •Постановка проблемы
- •Алгоритм а* оптимального назначения задач на процессоры
- •2. Технологический стандарт написания распределённых приложений corba. Технологический стандарт corba
2. Интерфейс OpenMp. Интерфейс OpenMp
Интерфейс OpenMP задуман как стандарт для программирования на масштабируемых SMP-системах (модель общей памяти). В стандарт OpenMP входят спецификации набора директив компилятора, процедур и переменных среды.
OpenMP можно рассматривать как высокоуровневую надстройку над threads. OpenMP идеально подходит для разработчиков, желающих быстро распараллелить свои вычислительные программы с большими параллельными циклами. Разработчик не создает новую параллельную программу, а просто последовательно добавляет в текст последовательной программы OpenMP-директивы. Предполагается, что OpenMP-программа на однопроцессорной платформе может быть использована в качестве последовательной программы.
Спецификация OpenMP для C/C++, содержит следующую функциональность:
• Директивы OpenMP начинаются с комбинации символов "#pragma omp". Директивы можно разделить на 3 категории: определение параллельной секции, разделение работы, синхронизация.
• Компилятор с поддержкой OpenMP определяет макрос "_OPENMP".
• Распараллеливание применяется к for-циклам, для этого используется директива "#pragma omp for".
• Типы и функции OpenMP определены во включаемом файле <omp.h>.
Программная модель OpenMP представляет собой fork-join параллелизм, в котором главный поток по необходимости порождает группы потоков при вхождении программы в параллельные области приложения.
В OpenMP любой процесс состоит из нескольких потоков управления, которые имеют общее адресное пространство, но разные потоки команд и раздельные стеки. В простейшем случае, процесс состоит из одного потока.
Приведем с использованием OpenMP пример программы вычисления числа π. Формула для вычисления π та же, что для MPI.
#include <stdio.h>
#include < omp.h>
double f(double y) {return(4.0/(1.0+y*y));}
void main() {
double w, x, sum, pi;
int i, n = 1000000;
w = 1.0/n;
sum = 0.0;
#pragma omp parallel for private(x) shared(w) reduction(+:sum)
for(i=0; i < n; i++) {
x = w*(i-0.5);
sum = sum + f(x);
}
pi = w*sum;
printf("pi = %f\n", pi);
}
Программа начинается как единственный процесс на головном процессоре. Он исполняет все операторы вплоть до первой конструкции типа #pragma omp. В рассматриваемом примере это оператор parallel for, при исполнении которого порождается множество процессов с соответствующим каждому процессу окружением.
В случае симметричного мультипроцессинга SMP на всех процессорах процессорной системы исполняется один экземпляр операционной системы, которая отвечает за распределение прикладных процессов (задач, потоков) между отдельными процессорами. Распараллеливание применяется к for-циклам, для этого используется директива "#pragma omp for", по которой ОС раздает процессорам (ядрам) личный экземпляр программы, как в SPMD, попросту передает один и тотже отрезок программы на заданное число процессоров. Распараллеливание применяется к for-циклам, для этого используется директива "#pragma omp for", по котоой ОС раздает ппроцессорам (ядрам) личный экземпляр программы, как в SPMD.
В рассматриваемом примере окружение состоит из локальной (PRIVATE) переменной х, переменной sum редукции (REDUCTION) и одной разделяемой (SHARED) переменной w. Переменные х и sum локальны в каждом процессе без разделения между несколькими процессами. Переменная w располагается в головном процессе. Оператор REDUCTION имеет в качестве атрибута операцию, которая применяется к локальным копиям параллельных процессов в конце каждого процесса для вычисления значения переменной в головном процессе. Переменная цикла i является локальной в каждом процессе, так как именно с уникальным значением этой переменной порождается каждый процесс. Параллельные процессы завершаются оператором END DO, выступающим как синхронизирующий барьер для порожденных процессов. После завершения всех процессов продолжается только головной процесс.
Директивы OpenMP с точки зрения C являются комментариями и начинаются с комбинации символов #pragma, поэтому приведенная выше программа может без изменений выполняться на последовательной ЭВМ в обычном режиме.
Распараллеливание в OpenMP выполняется явно при помощи вставки в текст программы специальных директив, а также вызова вспомогательных функций. При использовании OpenMP предполагается SPMD-модель (Single Program Multiple Data) параллельного программирования, в рамках которой для всех параллельных нитей используется один и тот же код.
Программа начинается с последовательной области – сначала работает один процесс (нить), при входе в параллельную область порождается (компилятором) ещё некоторое число процессов, между которыми в дальнейшем распределяются части кода. По завершении параллельной области все нити, кроме одной (нити мастера), завершаются, и начинается последовательная область. В программе может быть любое количество параллельных и последовательных областей.
Задача - Привести пример графа предшествования операций и дать соответствующие определения.
Показывает, какие процессы будут планироваться, и в какой последовательности.
