Задачи дисциплины: Научить студентов поддерживать беседу по общеязыковой тематике; Привить студентам навыки дальнейшей самостоятельной работы над языком

Вид материалаДокументы
Параллельные и распределенные вычисления
Подобный материал:
1   ...   12   13   14   15   16   17   18   19   20

Параллельные и распределенные вычисления


Цели и задачи дисциплины

Целью изучения дисциплины является ознакомление с современными подходами к организации распределенных вычислений, архитектурами распределенных вычислительных систем и особенностями организации процессов обработки информации в них, современным состоянием и тенденциями развития данной предметной области. Получение базовых знаний об основных видах архитектур параллельных вычислительных систем, особенностях организации процессов параллельной обработки информации, методологиях и средствах инструментальной поддержки разработки прикладного параллельного программного обеспечения, современном состоянии и тенденциях развития данной предметной области.

Задачи дисциплины:

Изучение основных методов организации распределенных вычислительных систем, методов и инструментальных средств, обеспечивающих разработку программного обеспечения.

Получение сведений об использовании распределенных вычислений в различных областях деятельности.

Приобретение навыков в разработке программного обеспечения и использовании распределенных вычислительных систем.

Формирование представления об основных способах организации параллельных вычислений; знакомство с технологиями параллельного программирования; приобретение навыков параллельного программирования мультипроцессорных и мультикомпьютерных параллельных вычислительных систем.

Основные дидактические единицы (раздел):

Введение в организацию распределенных вычислений. Основные понятия и определения. Понятие архитектуры распределенной вычислительной системы. Классы задач, эффективно решаемых с применением распределенных вычислительных систем. Соотношение между параллельными и распределенными вычислительными системами. Особенности организации распределенных вычислительных систем.

Организация связи между компонентами распределенной вычислительной системы. Способы организации связи между компонентами распределенной вычислительной системы, используемые при реализации распределенных вычислений. Удаленные объекты. Проблемы, связанные с удалением объектов, и способы их решения. Организация связи на основе потоков данных. Синхронизация потоков данных.

Организация распределенных вычислений на базе модели взаимодействия «клиент – сервер». Модель взаимодействия «клиент-сервер». Организация взаимодействия между клиентом и сервером. Используемые протоколы. Клиенты. «Тонкий» и «толстый» клиент. Разделение приложений по уровням. Варианты архитектуры клиент-сервер. Двух- и трехзвенные архитектуры. Многозвенные архитектуры. Обеспечение прозрачности распределения со стороны клиента. Серверы. Способы организации сервера.

Организация распределенных вычислений с использованием переноса кода. Перенос программного кода в распределенных вычислительных системах. Перенос кода и локальные ресурсы. Виды связи ресурса с процессом и с исполняющим устройством. Варианты переноса кода для различных видов связи. Задача переноса кода в гетерогенных распределенных вычислительных системах и варианты ее решения.

Агенты как способ организации распределенных вычислений. Понятие программного агента. Свойства агентов. Стационарные и мобильные агенты. Особенности функционирования, области применения. Интеллектуальные программные агенты. Обучающиеся агенты. Управление знаниями и построение онтологий. Мультиагентные системы. Конкуренция и кооперация агентов в рамках мультиагентной системы. Инструментальные программные средства создания агентов. Понятие агентной платформы. Архитектура и функции агентной платформы. Особенности проектирования мультиагентных систем. Обзор и сравнительные характеристики современных агентных платформ.

GRID - системы. Концепция GRID, предпосылки ее возникновения. Метакомпьютинг. Области применения. Особенности организации распределенных вычислений в GRID. Проблемы организации распределенных вычислений в GRID. Сервисы GRID и их назначение. Архитектура GRID-системы. Предполагаемые направления развития в области распределенных GRID-вычислений.

Обеспечение отказоустойчивости при организации распределенных вычислений.

Защита информации в распределенных вычислительных системах.

Перспективные направления развития распределенных вычислений. Облачные вычисления.

Архитектуры параллельных вычислительных систем, их классификация. Основные проблемы разработки параллельного прикладного программного обеспечения.

Программирование с разделяемыми переменными. Понятие процесса. Распараллеливание и синхронизация. Неделимые действия. Задача критической секции.

Структура программы с использованием OpenMP. Директивы препроцессора. Функции библиотеки OpenMP. Работа с разделяемыми переменными. Синхронизация. Распараллеливание существующих последовательных программ.

Программирование с использованием передачи сообщений. Библиотека MPI. Организация программы в MPI. Основные группы функций MPI и особенности их применения.

Инструментальная поддержка параллельного программирования. Распараллеливающие компиляторы. Языки и модели параллельного программирования.

В результате изучение дисциплины студент (бакалавриата/магистратуры) должен

знать:

основные особенности организации распределенных вычислений;

основные программные средства, обеспечивающие организацию распределенных вычислений, а также написание, отладку и выполнение распределенных программ.

принципы организации параллельных вычислительных систем; способы организации параллельной обработки информации; средства языковой и инструментальной поддержки разработки прикладного параллельного программного обеспечения; основные тенденции развития данной предметной области.

уметь:

применять знания к использованию распределенных вычислительных систем;

разрабатывать простые распределенные программы;

использовать существующие распределенные системы для решения прикладных задач;

выбирать языковые средства в соответствии со спецификой решаемой задачи.

анализировать алгоритмы решения прикладных задач и адаптировать их для параллельных вычислений; разрабатывать прикладные программы для мультипроцессорных и мультикомпьютерных вычислительных систем; оценивать эффективность применения параллельного прикладного программного обеспечения.

владеть:

методами распределенного программирования;

методами программирования для агентных систем;

инструментальными средствами, поддерживающими разработку распределенных программ;

наиболее распространенными средствами параллельного программирования для мультипроцессорных и мультикомпьютерных вычислительных систем.