- •1. Анализ современных тенденций развития вычислительных систем. Основные области и особенности применения многопроцессорных вс.
- •2. Классификация многопроцессорных систем. Вс с разделяемой общей памятью. Типовые схемы коммуникационных структур. Примеры.
- •3. Классификация многопроцессорных систем. Вс с разделяемой общей памятью. Машины smp иNuma. Примеры.
- •4. Классификация многопроцессорных систем. Вс с распределенной областью памяти. Примеры.
- •5. Классификация многопроцессорных систем. Матричные системы.
- •6. Классификация многопроцессорных систем. Системы с нетрадиционной структурой. Вс, управляемые потоком данных.
- •7. Классификация многопроцессорных систем. Системы с нетрадиционной структурой. Систолические машины.
- •8. Обобщенная архитектура параллельных систем.
- •9. Использование традиционных микропроцессоров для построения многопроцессорных систем. Микропроцессоры с нетрадиционной архитектурой. Архитектура транспьютера т-805.
- •10. Программная модель parix: статические и динамические возможности. Система индексации процессоров в малтикластереMc-3de. Идентификация процессоров
- •11. Средства и правила создания параллельных программ на одном процессоре. Работа встроенного планировщика.
- •12. Программная модель parix: статические и динамические возможности.
- •13. Основные средства взаимодействия процессов в среде parix. Синхронное и асинхронное взаимодействие процессов. Каналы
- •Int BreakLink (LinkCb_t *Link)
- •Int SendLink (LinkCb_t *Link, void *Buf, int Size), int RecvLink (LinkCb_t *Link, void *Buf, int Size)
- •14. Средства и правила создания параллельных программ на многопроцессорной структуре в средеParix. Пример программы.
- •15. Физические, виртуальные и локальные линки. Средства и правила создания линков между произвольными процессами в среде parix. Виртуальные и библиотечные топологии.
- •Int BreakLink (LinkCb_t *Link)
- •Int SendLink (LinkCb_t *Link, void *Buf, int Size), int RecvLink (LinkCb_t *Link, void *Buf, int Size)
- •Int MakeXxx (int RequestId,
- •Int FreeTop (int TopId),
- •Int AddTop_Data (int TopId, void *Data)
- •Void *GetTopData (int TopId, int *Error)
- •16.Принципы и алгоритм работы планировщика процессов в т-805
- •17. Машинные ресурсы. Проблема ограниченности машинных ресурсов. Единицы работы и управления в вычислительных средах.
- •18. Концепция процесса. Понятия алгоритма и процесса. Объективная потребность введения понятия «процесс».
- •19. Основные проблемы параллельного программирования
- •20. Основные направления решения проблем создания программного продукта с параллельной обработкой информации
- •21. Проблемы планирования, диспетчеризации и масштабирования в параллельном программировании
- •22. Краткая характеристика языка оболочки unix. Основные команды работы с файловой системой. Виды файлов
- •23. Многопользовательская защита информации в среде unix. Категории пользователей и атрибуты доступа к файлам
- •24. Управление доступом к файлам
- •25. Порождение процессов на уровне оболочки и их взаимодействие
- •26. Удаленный доступ и особенности работы в среде parix
- •27. Особенности структуры транспьютерного кластера. Проблема масштабирования
- •28. Глобальное планирование в транспьютерном кластере
- •29. Особенности взаимодействия асинхронных процессов. Информационные и логические связи. Основные механизмы взаимодействия процессов
- •30. Понятие синхропримитива. Синхропримитивы низкого уровня
- •31. Системные средства реализации взаимодействия процессов в среде unix
- •32. Взаимодействие процессов через программный канал. Понятие конвейера команд в ос unix
- •33. Именованный программный канал и взаимодействие процессов в unix. Пример
- •34. Типовые задачи взаимодействия асинхронных процессов. Спецификация дисциплины межпроцессного взаимодействия с использованием сетей Петри
- •35. Задача «о читателях и писателях». Требования адекватности спецификации и предметной интерпретации. Задача «о производителе и потребителе»
- •36. Задача «о курильщиках сигарет». Особенности задачи, используемые синхропримитивы.
- •37. Спецификация асинхронных интерфейсов взаимодействия процессов.
9. Использование традиционных микропроцессоров для построения многопроцессорных систем. Микропроцессоры с нетрадиционной архитектурой. Архитектура транспьютера т-805.
Согласно данным TOP500 (www.top500.org), с точки зрения применяемых процессоров безусловное первенство принадлежит Intel (с процессорами Itanium или Xeon), далее идут IBM с семейством POWER, HP c PA-RISC и AMD. Этот факт наглядно демонстрирует тенденцию к тому, что стандартные компоненты Intel все шире используются для создания высокопроизводительных вычислительных решений. По мнению руководства Intel, этот факт свидетельствует о том, что сообщество разработчиков высокопроизводительных вычислений отдает предпочтение стандартным компонентам, видя в этом большие преимущества. В результате мир уходит от использования экспериментальных систем на основе компонентов собственной разработки, которые стоят целое состояние и на создание которых уходят годы. Число систем на базе архитектуры Itanium в списке самых мощных в мире компьютеров TOP500 сейчас превышает общее число систем на базе RISC-архитектуры.
Ну а вот на рисунке ниже наш Т-805.
10. Программная модель parix: статические и динамические возможности. Система индексации процессоров в малтикластереMc-3de. Идентификация процессоров
Статические свойства:
идентичные программы запускаются на всех процессорах;
обеспечивается идентификация всех процессоров в сети;
предопределенная топлогия.
Динамические свойства:
возможность создания потоков (threads) на одном процессоре
возможность создания виртуальных линков между любыми процессорами
синхронная и асинхронная коммутация
возможность создания виртуальных топологий
загрузка и выполнение дополнительных кодов
Программе, выполняемой на каждом процессоре, доступна следующая информация:
количество процессоров в разделе;
идентификатор данного процессора;
размеры решетки раздела;
положение данного процессора в решетке (координаты);
Эти данные можно получить программно из структуры:
typedef struct {
int MyProcID; // уникальный идентификатор процессора
int MyX; // координата процессорного элемента по оси X
int MyY; // координата процессорного элемента по оси Y
int MyZ; // координата процессорного элемента по оси Z
int nProcs; // количество процессорных элементов
int DimX; // размерность решетки процессорных элементов по оси X
int DimY; // размерность решетки процессорных элементов по оси Y
int DimZ; // размерность решетки процессорных элементов по оси Z
} RootProc_t;
Например, получение идентификатора процессорного элемента:
int MyProcID = GET_ROOT()->ProcRoot->MyProcID;
Визуально решетку процессорных элементов можно изобразить так:
Обмен данных основан на концепции виртуальных связей между процессорами, которые образуют каналы «точка-точка» между любыми процессорами. Набор созданных виртуальных связей задает виртуальную топологию (решетка, конвейер, дерево, гиперкуб).
11. Средства и правила создания параллельных программ на одном процессоре. Работа встроенного планировщика.
Работа встроенного планировщика
Планировщик обрабатывает параллельные процессы на одном процессоре.
У нас тут реализован аппаратный планировщик. В любой момент времени существуют активные и неактивные процессы.
Активные выполняются либо готовы к выполнению. Примеры неактивных: ожидание ввода/вывода.
Только активные процессы попадают в планировочный список.
Планировочный список — связный список рабочих областей активных процессов.
Процессы с низким приоритетом выполняются только когда список процессов с высоким приоритетом пуст.
Во время выполнения процессы могут перейти в неактивное состояние.
Если во время выполнения процесса с низким приоритетом появляется процесс с высоким приоритетом, происходит прерывание процесса с низким приоритетом.
Текущий активный процесс низкого приоритета выполняется до тех пор пока:
он не завершится
он становится неактивным
пока не появится процесс с высшим приоритетом
время выполнения процесса не превышает время синхронизации (750 мкс).
Механизм синхронизации для процессов с высшим приоритетом не работает.
Про планировщик см. вопрос 16.