Алгоритмы параллельных вычислений и программирование (Курс лекций)
авторы: Бурова И.Г., Демьянович Ю.К.
Имеется большое количество важнейших задач, решение которых требует использования огромных вычислительных мощностей, зачастую недоступных для современных вычислительных систем. К таким задачам прежде всего относятся задачи точных долгосрочных прогнозов климатических изменений и геологических катаклизмов (землетрясений, извержений вулканов, столкновений тектонических плит), прогнозов цунами и разрушительных ураганов, а также экологических прогнозов и т.п.
Сюда следует отнести также прогнозирование результатов экспериментов во многих разделах физики, в особенности, экспериментов по выявлению основ мироздания (экспериментов на коллайдерах со встречными пучками частиц, экспериментов, направленных на получение антиматерии и, так называемой, темной материи и т.д.).
Важными задачами являются расшифровка генома человека, определение роли каждого гена в организме, влияние генов на здоровье человека и на продолжительность жизни. Не решена задача безопасного хранения вооружений, в особенности, ядерного оружия (из-за запрета на ядерные испытания состояние накопленных ядерных зарядов можно определить лишь путем моделирования на компьютере большой мощности).
Постоянно появляются новые задачи подобного рода и возрастают требования к точности и к скорости решения прежних задач; поэтому вопросы разработки и использования сверхмощных компьютеров (называемых суперкомпьютерами) актуальны сейчас и в будущем.
К сожалению технологические возможности увеличения быстродействия процессоров ограничены: увеличение быстродействия связано с уменьшением размеров процессоров, а при малых размерах появляются трудности из-за квантово-механических эффектов, вносящих элементы недетерминированности; эти трудности пока что не удается преодолеть.
Из-за этого приходится идти по пути создания параллельных вычислительных систем, т.е. систем, в которых предусмотрена одновременная реализация ряда вычислительных процессов, связанных с решением одной задачи. На современном этапе развития вычислительной техники такой способ, по-видимому, является одним из основных способов ускорения вычислений. Первоначально идея распараллеливания вычислительного процесса возникла в связи с необходимостью ускорить вычисления для решения сложных задач при использовании имеющейся элементной базы.
Предполагалось, что вычислительные модули (процессоры или компьютеры) можно соединить между собой так, чтобы решение задач на полученной вычислительная системе ускорялось во столько раз, сколько использовано в ней вычислительных модулей.
Однако, достаточно быстро стало ясно, что для интересующих сложных задач упомянутое ускорение, как правило, достичь невозможно по двум причинам:
1) любая задача распараллеливается лишь частично (при полном распараллеливании параллельные части не могут взаимодействовать в процессе счета и представляют собой отдельные задачи меньшего размера, так что использование параллельной системы теряет смысл),
2) коммуникационная среда, связывающая отдельные части параллельной системы, работает значительно медленнее процессоров, так что передача информации существенно задерживает вычисления. Параллельное программирование невозможно без представления о методах решения возникающих задач, об архитектуре параллельных вычислительных систем и о математическом обеспечении, которое имеют эти системы. Важно знать класс методов, удобных для реализации на параллельной системе, и алгоритмическую структуру этих методов, а также изучить средства параллельного программирования. В данном курсе рассматриваются некоторые проблемы высокопроизводительных вычислений на параллельных вычислительных системах, но слово "вычисления" здесь понимается в расширенном смысле: это не обязательно решение чисто вычислительных задач; излагаемые средства применимы для обработки самой разнообразной информации.
авторы: Бурова И.Г., Демьянович Ю.К.
Имеется большое количество важнейших задач, решение которых требует использования огромных вычислительных мощностей, зачастую недоступных для современных вычислительных систем. К таким задачам прежде всего относятся задачи точных долгосрочных прогнозов климатических изменений и геологических катаклизмов (землетрясений, извержений вулканов, столкновений тектонических плит), прогнозов цунами и разрушительных ураганов, а также экологических прогнозов и т.п.
Сюда следует отнести также прогнозирование результатов экспериментов во многих разделах физики, в особенности, экспериментов по выявлению основ мироздания (экспериментов на коллайдерах со встречными пучками частиц, экспериментов, направленных на получение антиматерии и, так называемой, темной материи и т.д.).
Важными задачами являются расшифровка генома человека, определение роли каждого гена в организме, влияние генов на здоровье человека и на продолжительность жизни. Не решена задача безопасного хранения вооружений, в особенности, ядерного оружия (из-за запрета на ядерные испытания состояние накопленных ядерных зарядов можно определить лишь путем моделирования на компьютере большой мощности).
Постоянно появляются новые задачи подобного рода и возрастают требования к точности и к скорости решения прежних задач; поэтому вопросы разработки и использования сверхмощных компьютеров (называемых суперкомпьютерами) актуальны сейчас и в будущем.
К сожалению технологические возможности увеличения быстродействия процессоров ограничены: увеличение быстродействия связано с уменьшением размеров процессоров, а при малых размерах появляются трудности из-за квантово-механических эффектов, вносящих элементы недетерминированности; эти трудности пока что не удается преодолеть.
Из-за этого приходится идти по пути создания параллельных вычислительных систем, т.е. систем, в которых предусмотрена одновременная реализация ряда вычислительных процессов, связанных с решением одной задачи. На современном этапе развития вычислительной техники такой способ, по-видимому, является одним из основных способов ускорения вычислений. Первоначально идея распараллеливания вычислительного процесса возникла в связи с необходимостью ускорить вычисления для решения сложных задач при использовании имеющейся элементной базы.
Предполагалось, что вычислительные модули (процессоры или компьютеры) можно соединить между собой так, чтобы решение задач на полученной вычислительная системе ускорялось во столько раз, сколько использовано в ней вычислительных модулей.
Однако, достаточно быстро стало ясно, что для интересующих сложных задач упомянутое ускорение, как правило, достичь невозможно по двум причинам:
1) любая задача распараллеливается лишь частично (при полном распараллеливании параллельные части не могут взаимодействовать в процессе счета и представляют собой отдельные задачи меньшего размера, так что использование параллельной системы теряет смысл),
2) коммуникационная среда, связывающая отдельные части параллельной системы, работает значительно медленнее процессоров, так что передача информации существенно задерживает вычисления. Параллельное программирование невозможно без представления о методах решения возникающих задач, об архитектуре параллельных вычислительных систем и о математическом обеспечении, которое имеют эти системы. Важно знать класс методов, удобных для реализации на параллельной системе, и алгоритмическую структуру этих методов, а также изучить средства параллельного программирования. В данном курсе рассматриваются некоторые проблемы высокопроизводительных вычислений на параллельных вычислительных системах, но слово "вычисления" здесь понимается в расширенном смысле: это не обязательно решение чисто вычислительных задач; излагаемые средства применимы для обработки самой разнообразной информации.
Скрытое содержимое могут видеть только пользователи групп(ы): Premium, Местный, Свои