Россия |
Программные инструменты параллелизма
Презентацию к данной лекции Вы можете скачать здесь.
Эволюция вычислительных технологий
От фоннеймановской архитектуры к архитектуре многоядерной
- Фоннеймановская архитектура
- Как эволюционировала архитектура вычислительных систем
- Эволюция программных технологий
Фоннеймановская архитектура последовательная, скалярная. В "классическом" фоннеймановском компьютере параллелизм отсутствует на всех уровнях. Традиционная последовательная модель программирования, ориентированная на SISD архитектуры (по Флинну). Языки последовательного программирования.
Пользователю нужна производительность. Увеличение производительности позволяет:
- решать новые, более сложные задачи;
- решать старые задачи, но быстрее;
- решать старые задачи, но с более высокой точностью.
Многие расширения фоннеймановской архитектуры используют параллелизм на разном уровне
Вычислительные системы с распределенной памятью (кластеры, MIMD по классификации Флинна) от небольших кластеров до суперкомпьютеров, занимающих первые позиции в рейтинге Top 500 Supercomputers..
Многоядерные архитектуры стали доминирующими
Первые многоядерные процессоры появились на рынке в 2005 году. Сейчас это доминирующий тип архитектур.
Вычислительная система с многоядерным процессором – параллельная вычислительная система с общей памятью, обычно SMP (Symmetric Multiprocessor System).
От архитектуры multicore (с небольшой многоядерностью) к архитектуре manycore (с большой многоядерностью)
Архитектура Intel® Many Integrated Core (MIC) – шаг к системам с большой многоядерностью, от 32-ядерного прототипа к системам с десятками, сотнями и т.д. ядер
Параллельное и последовательное программирование
Что происходит с данными внутри программы. Информационный граф программы
Алгоритм можно представить в виде диаграммы информационного графа.
Информационный граф описывает последовательность выполнения операций и взаимную зависимость между различными операциями или блоками операций.
Узлами информационного графа являются операции, а однонаправленными дугами каналы обмена данными.
Понятие операции может трактоваться расширенно. Это может быть оператор языка, но может быть и более крупный блок программы.
Последовательная и параллельная модели программирования
Традиционной считается последовательная модель программирования. В этом случае в любой момент времени выполняется только одна операция и только над одним элементом данных. Последовательная модель универсальна. Ее основными чертами являются применение стандартных языков программирования (для решения вычислительных задач это, обычно, Fortran и С/С++), хорошая переносимость программ и невысокая производительность.
Основными особенностями параллельной модели программирования являются более высокая производительность программ, применение специальных приемов программирования и, как следствие, более высокая трудоемкость программирования, проблемы с переносимостью программ. Параллельная модель не обладает свойством универсальности.
Параллельная модель программирования
В параллельной модели программирования появляются проблемы, непривычные для программиста, привыкшего заниматься последовательным программированием. Среди них: управление работой множества процессоров, организация межпроцессорных пересылок данных и другие.
Повышенная трудоемкость параллельного программирования связана с тем, что программист должен заботиться:
- об управлении работой множества процессов;
- об организации межпроцессных пересылок данных;
- о вероятности тупиковых ситуаций (взаимных блокировках);
- о нелокальном и динамическом характере ошибок;
- о возможной утрате детерминизма ("гонки за данными");
- о масштабируемости;
- о сбалансированной загрузке вычислительных узлов.