1. Обзор технологий параллельного программирования.
Два направления параллельного программирования: данные и алгоритм. Базовые принципы создания параллельных программ. Модели вычислений и методы анализа эффективности. Закон Амдала. Проблема использования алгоритмов параллельного программирования. Параллелизм, масштабируемость, локальность, модульность.
2. Введение в архитектуру высокопроизводительных систем.
Принцип фон Неймана. Классификация параллельных компьютеров и систем. Архитектура компьютеров. Общая и распределенная память. Векторно-конвейерные суперкомпьютеры. Симметричные мультипроцессорные системы SMP. Системы с массовым параллелизмом (МРР). Кластерные системы. Технологии интерконнекта. Эволюция высокопроизводительных систем. Современное состояние, тенденции, прогнозы.
3. Операционная система Linux.
Основы ОС Linux. Различия между Linux и другими операционными системами. Базовые концепции UNIX. Учетные записи. Shell и команды. Файловая система. Компиляция и выполнение программ. SSH. FTP. Использование редактора vi. Система X Window. Источники информации по Linux.
4. Введение в технологии параллельного программирования.
Технологии параллельного программирования (расширения существующих языков программирования, специальные языки программирования). Библиотеки и интерфейсы, поддерживающие взаимодействие параллельных процессов. Параллельные прикладные библиотеки. Специализированные пакеты и программные комплексы. Структура, области применения, этапы разработки и характеристики производительности параллельной программы. Сетевой закон Амдала.
5. Технология OpenMP
Основные принципы, общая организация OpenMP. Структура параллельных программ. Основные конструкции и директивы OpenMP (parallel, do/for, sections, single). Директивные предложения. Переменные окружения и функции OpenMP. Синхронизация и дополнительные возможности. Рекомендации но настройке и отладке. Примеры программ: вычисление числа pi, вычисление определённого интеграла, варианты перемножения матриц. Обзор Intel Cluster OpenMP.
6. Интерфейс передачи сообщений MPI.
Общая организация MPI. Терминология и обозначения. Привязка к языку. Типы данных. Базовые функции MPI. Коммуникационные операции типа точка-точка. Коллективные операции. Производные типы данных и передача упакованных данных. Операции с ком¬муни¬каторами и группами. Топология процессов. Реализации интерфейса передачи сооб¬щений MPI. Примеры программ: вычисление числа pi, вычисление определённого интеграла, варианты перемножения матриц. Дополнительные инструменты в MPI-2.0: создание и управление процессами, односторонние взаимодействия, параллельный ввод/вывод.
7. Параллельное программирование с использованием MPI для моделирования физических задач.
Параллельные численные алгоритмы для решения типовых задач физического моделиро¬вания. Методы Монте-Карло. Точечные вычисления для моделирования систем взаимодействующих тел. Сеточные вычисления для приближенных решений дифференциальных уравнений в частных производных: задача Дирихле (явная разностная схема для уравнения Пуассона), решение краевой задачи методом Якоби. Матричные вычисления для решения систем линейных уравнений: параллельные алгоритмы решения систем линейных алгебраических уравнений методом Гаусса. Параллельная реализация преобразования Фурье.. Методы разработки параллельных программ для многопроцессорных систем с распреде¬ленной памятью. Использован6ие библиотек подпрограмм для многопроцессорных вычислительных систем.