Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UMK_konspekt_TP_4_a4_2.doc
Скачиваний:
16
Добавлен:
29.09.2019
Размер:
1.57 Mб
Скачать

22. Методология параллельного императивного программирования

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

Методы и концепции:

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

Синтаксис и семантика. Прямой аналог оператора в рассматриваемой методологии – процесс. Основное отличие этой методологии от императивной в том, что процессы могут исполняться параллельно. При этом выделяют следующие уровни параллелизма:

  • параллелизм на уровне микрокоманд;

  • параллелизм на уровне операторов;

  • параллелизм на уровне циклов и итераций;

  • параллелизм на уровне подпрограмм;

  • параллелизм на уровне потоков управления;

  • параллелизм на уровне процессов;

  • параллелизм на уровне приложений.

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

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

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

  1. Программирование на параллельном языке программирования. Причем такие языки могут быть:

  • универсальными (например, язык Ada);

  • для конкретных типов компьютеров, позволяющих эффективно транслировать программы на параллельном языке именно в эту архитектуру (например, язык Occam изначально разрабатывался для транспьютеров).

  1. Программирование на широко распространенном языке программирования (например, C, C++, Pascal), который расширен языковыми (на уровне языка) распараллеливающими конструкциями.

  2. Программирование с использованием дополнительных указаний компилятору на уровне языка прагм (например, по стандарту OpenMP).

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

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

Известные языки программирования:

  1. Algol-68 (1968)

  2. Concurrent Pascal (1972)

  3. Modula-2 (1978)

  4. CSP (1978)

  5. Edison (1980)

  6. Ada (1979, 1983)

  7. Occam (1982)

  8. Concurrent Prolog (1983)

  9. Linda (1985)

  10. Oblig (1993)

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

23. Методология нейросетевого программирования

Рассмотренные ранее подходы ориентируются на описание шагов алгоритма в программе. В соответствии с рассматриваемой методологией описание шагов алгоритма невозможно.

Прототип исполняемого кода формируется на основе понятий «искусственная нейронная сеть» (ИНС) и «тренировка». ИНС выступает своего рода «заготовкой», которая постепенно (в результате тренировки на знаниях, полученных от экспертов) превращается в адекватную модель с требуемым поведением. В последствии такая модель компилируется в эквивалентный исполняемый код или реализуется аппаратно.

Для изначального формирования ИНС применяют два основных вида нейронов:

  1. Нейроны с линейными функциями активации.

  2. Нейроны с радиальными функциями активации.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]