Лекция 11

Вид материалаЛекция

Содержание


Две парадигмы программирования
Две модели программирования: последовательная и параллельная
Две парадигмы параллельного программирования
Параллелизм данных
Операции над массивами
Условные операции
Операции приведения
Операции сдвига
Операции сканирования
Операции пересылки данных
Параллелизм задач
Cooperation: Collective Comms
A broadcast
Трудовые затраты на распараллеливание или векторизацию программы
Самый простой вариант
Второй этап
Третий этап
Написание программы "с нуля"
Применение разных языков программирования
Различие и сходство между распараллеливанием и векторизацией программ
...
Полное содержание
Подобный материал:
  1   2   3   4   5   6   7

Лекция 11

Лекция 11.

11-11-2001


Добрый день. На прошлой лекции мы рассмотрели ОС распределенных систем, и сейчас мы перейдем непосредственно к программированию для таких систем.

Стремительное развитие наук, как фундаментальных, так и прикладных, использующих сложные реалистические (многомерные, многопараметрические) математические модели или требующих сложной, но быстрой обработки информации, а также быстрый технологический прогресс, привело к тому, что значительно возросла потребность в применении мощных вычислительных средств. К таким отраслям относятся:
  1. квантовая физика: физика элементарных частиц, ядерная физика, квантовая теория поля;
  2. статистическая физика;
  3. физика молекул (исследование и предсказание молекулярных свойств материалов);
  4. физика плазмы (моделирование поведения плазмы на ЭВМ);
  5. квантовая химия (структура молекул и кристаллов, химические реакции);
  6. науки о Земле: физика атмосферы, метеорология, климатология (предсказание погоды и изменения климата), геофизика (движение Земной коры и землетрясения), физика океана;
  7. биология, экология (прогнозирование развития экосистем);
  8. экономика и эконометрия: вычислительная экономика (новая, развивающаяся наука о применении компьютерного моделирования к исследованию сложных, реалистичных моделей экономических процессов), макроэкономика , теория массового обслуживания (например моделирование развития транспортной системы страны, грузопотоков и пассажиропотоков) и теория оптимального управления, финансовая деятельность (моделирование рынка ценных бумаг, банковской деятельности);
  9. социальные науки (моделирование демографической ситуации в стране, миграции и занятости населения, социального поведения);
  10. математическая лингвистика: распознавание речи, анализ текста и автоматический перевод;
  11. информатика: ведение баз данных, распознавание образов, распределенные вычислительные системы;
  12. механика сплошных сред: гидродинамика и газодинамика (кораблестроение и самолетостроение, течения, турбостроение), теория сопротивления материалов (устойчивость конструкций и их нагрузочная способность);
  13. баллистика (наведение баллистических снарядов и управление реактивным движением);
  14. медицина, фармацевтика (моделирование лекарственных препаратов);
  15. промышленность, в том числе автомобиле- и авиастроение, нефте- и газодобыча, дизайн, другие.

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

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

ДВЕ ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ



В настоящее время существуют два основных подхода к программированию вычислений, эти подходы в литературе часто называют парадигмами программирования. Прежде чем обсудить эти подходы, сделаем несколько замечаний общего характера. Развитие фундаментальных и прикладных наук, технологий требует применения все более мощных и эффективных методов и средств обработки информации. В качестве примера можно привести разработку реалистических математических моделей, которые часто оказываются настолько сложными, что не допускают точного аналитического их исследования. Единственная возможность исследования таких моделей, их верификации (то есть подтверждения правильности) и использования для прогноза - компьютерное моделирование, применение методов численного анализа. Другая важная проблема - обработка больших объемов информации в режиме реального времени. Все эти проблемы могут быть решены лишь на достаточно мощной аппаратной базе, с применением эффективных методов программирования.

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

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

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



Традиционная архитектура ЭВМ была последовательной. Это означало, что в любой момент времени выполнялась только одна операция и только над одним операндом. Совокупность приемов программирования, структур данных, отвечающих последовательной архитектуре компьютера, называется моделью последовательного программирования. Ее основными чертами являются применение стандартных языков программирования (ФОРТРАН-77, ФОРТРАН-90, С/С++, …), достаточно простая переносимость программ с одного компьютера на другой и невысокая производительность.

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

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