Санкт-Петербургский государственный университет
Опубликован: 11.10.2012 | Доступ: свободный | Студентов: 751 / 327 | Длительность: 01:50:00
Лекция 1:

Программные инструменты параллелизма

Лекция 1: 12 || Лекция 2 >
Аннотация: Эта лекция является вводной. В ней рассматриваются такие вопросы, как эволюция вычислительных технологий, последовательная и параллельная модели программирования, парадигмы параллельного программирования, дается обзор программных инструментов, используемых для разработки высокопроизводительных приложений

Презентацию к данной лекции Вы можете скачать здесь.

Эволюция вычислительных технологий

От фоннеймановской архитектуры к архитектуре многоядерной

  • Фоннеймановская архитектура
  • Как эволюционировала архитектура вычислительных систем
  • Эволюция программных технологий

Фоннеймановская архитектура последовательная, скалярная. В "классическом" фоннеймановском компьютере параллелизм отсутствует на всех уровнях. Традиционная последовательная модель программирования, ориентированная на SISD архитектуры (по Флинну). Языки последовательного программирования.


Пользователю нужна производительность. Увеличение производительности позволяет:

  • решать новые, более сложные задачи;
  • решать старые задачи, но быстрее;
  • решать старые задачи, но с более высокой точностью.

Многие расширения фоннеймановской архитектуры используют параллелизм на разном уровне


Вычислительные системы с распределенной памятью (кластеры, MIMD по классификации Флинна) от небольших кластеров до суперкомпьютеров, занимающих первые позиции в рейтинге Top 500 Supercomputers..


Многоядерные архитектуры стали доминирующими

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

Вычислительная система с многоядерным процессором – параллельная вычислительная система с общей памятью, обычно SMP (Symmetric Multiprocessor System).


От архитектуры multicore (с небольшой многоядерностью) к архитектуре manycore (с большой многоядерностью)

Архитектура Intel® Many Integrated Core (MIC) – шаг к системам с большой многоядерностью, от 32-ядерного прототипа к системам с десятками, сотнями и т.д. ядер


Параллельное и последовательное программирование

Что происходит с данными внутри программы. Информационный граф программы

Алгоритм можно представить в виде диаграммы информационного графа.

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

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

Понятие операции может трактоваться расширенно. Это может быть оператор языка, но может быть и более крупный блок программы.


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

Традиционной считается последовательная модель программирования. В этом случае в любой момент времени выполняется только одна операция и только над одним элементом данных. Последовательная модель универсальна. Ее основными чертами являются применение стандартных языков программирования (для решения вычислительных задач это, обычно, Fortran и С/С++), хорошая переносимость программ и невысокая производительность.


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


Параллельная модель программирования

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

Повышенная трудоемкость параллельного программирования связана с тем, что программист должен заботиться:

  • об управлении работой множества процессов;
  • об организации межпроцессных пересылок данных;
  • о вероятности тупиковых ситуаций (взаимных блокировках);
  • о нелокальном и динамическом характере ошибок;
  • о возможной утрате детерминизма ("гонки за данными");
  • о масштабируемости;
  • о сбалансированной загрузке вычислительных узлов.
Лекция 1: 12 || Лекция 2 >