Автор работы: Пользователь скрыл имя, 05 Октября 2011 в 15:31, реферат
Перед нефтяными компаниями при разработке нефтегазовых месторождений стоит задача эффективной добычи сырья. Для бурения новых скважин, выбора схемы добычи нефти и газа должны быть проведены исследования и компьютерные расчеты. Создание модели нефтегазового месторождения и ее анализ с использованием современных программных средств обязательны перед переходом к разработке на практике.
ВВЕДЕНИЕ 3
КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ 5
НЕОБХОДИМОСТЬ СУПЕРКОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ В НЕФТЕГАЗОВОЙ ОТРАСЛИ 7
ЭФФЕКТИВНОСТЬ, УСКОРЕНИЕ, МАСШТАБИРУЕМОСТЬ 10
ОБЗОР ВЫЧИСТЛИТЕЛЬНЫХ СИСТЕМ 13
ОСОБЕННОСТИ ПАРАЛЛЕЛЬНЫХ АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧ ПОДЗЕМНОЙ ФИЛЬТРАЦИИ 15
Неравномерность загрузки 15
Решение систем линейных уравнений 17
Оптимальное разбиение 18
Другие методы ускорения 20
ВОПРОСЫ ВИЗУАЛИЗАЦИИ 22
ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ 24
ЗАКЛЮЧЕНИЕ 25
СПИСОК ЛИТЕРАТУРЫ 26
Общим
в гидродинамическом
Таким образом, для широкого класса задач различной сложности получение результата за разумное время требует применения высокоэффективных вычислительных систем и соответствующего программного обеспечения.
Необходимость проведения ресурсоёмких
расчётов за короткое время приводит
к необходимости
Рис. 1. Ускорение
расчетов моделей место-рождений нефти
и газа достигается за счет распределения
вычисле-ний между узлами суперкомпьютерных
вы-числительных систем
Основными
параметрами, характеризующими параллельный
алгоритм, являются ускорение и эффективность.
Параметр ускорения показывает, насколько
параллельный алгоритм выполняется быстрее,
чем последовательный:
Здесь — число процессов, — время выполнения последовательного алгоритма, — время выполнения параллельного алгоритма на процессах.
Эффективность
определяется формулой
Далеко не всякую задачу можно разбить на произвольное число совершенно независимых подзадач, что определяет отличие получаемого ускорения от идеального. Среди причин замедления отметим следующие:
1. Изменённый
алгоритм требует дополнительных операций,
связанных с накладными расходами на выполнение
параллельного алгоритма. Сюда входит,
в частности, дополнительное время, связанное
с реализацией обменов между процессами.
В системах с распределённой памятью оно
включает задержки и сетевые ограничения
системы передачи сообщений. В системах
с общей памятью необходимо учесть подготовительные
участки перед распараллеленными циклами
и задержки при одновременном доступе
процессов к памяти. Часто встречаются
фрагменты задач, принципиально не выполняемые
параллельно. Почти всегда для решения
отдельных подзадач необходимо организовать
их взаимодействие друг с другом (в параллельных
вычислениях такой процесс называется
синхронизацией).
2. Важной проблемой при распараллеливании алгоритмов является доля кода, которая не поддаётся параллелизации. Это является критичным, поскольку время выполнения такой части программы не может быть снижено путём увеличения процессорных мощностей и определяет теоретический предел возможного ускорения программы, который носит название закона Густафсона. Пусть имеется p процессов, а также известно, что доля от общего объема вычислений, получаемая исключительно последовательными расчетами, составляет α, а может быть распараллелена идеально, тогда предел ускорения выражается формулой: .
Более общим соотношением является закон Амдала: .
Здесь — доля кода, которая может быть ускорена или замедлена, — множитель ускорения или замедления, k — номер условно разделённого участка кода.
Степень близости получаемого при расчетах ускорения к теоретическому пределу (верхняя кривая, рис. 2) говорит об эффективности параллельного алгоритма. Можно видеть, что даже незначительная доля алгоритма, не поддающаяся распараллеливанию, существенно снижает максимально достижимое ускорение.
3. Замедление происходит также при неравномерной загрузке, когда производительность каждого из процессов в точности неодинакова (например, из-за использования в кластере узлов с различными процессорами), см. рис. 3. Важно, чтобы подзадачи обладали примерно одинаковой сложностью (т.е. требовали для своего решения примерно одинакового количества ресурсов). Соблюдение последнего правила называется балансировкой нагрузки.
Решение указанных проблем является основной задачей при разработке параллельного программного обеспечения.
В параллельных вычислениях также выделяют понятие масштабируемости, характеризующее способность системы увеличивать свою производительность при добавлении ресурсов. Система называется масштабируемой, если она способна увеличивать производительность пропорционально дополнительным ресурсам. Масштабируемость можно оценить через отношение прироста производительности системы к приросту используемых ею ресурсов. Чем ближе это отношение к единице, тем лучше.
Следует отметить, что масштабируемость зависит как от алгоритма, так и от входных данных. В частности, масштабируемость при моделировании разработки месторождений обычно зависит от размеров и сложности модели и часто снижается при использовании стандартных подходов. Важным критерием, определяющим масштабируемость задачи расчёта модели, является баланс загрузки вычислительных мощностей, на который непосредственно влияет разбиение области моделирования на расчетные подобласти.
Рис. 2. Иллюстрация к закону Амдала
Рис. 3. Балансировка загрузки
Параллельные вычислительные системы можно разделить на системы с общей памятью и системы с распределенной памятью (табл. 1). Системы с общей памятью хороши тем, что доступ к данным соседней подзадачи можно осуществить непосредственно. Это позволяет избежать дополнительных расходов, связанных с пересылкой информации по локальной сети. Примером систем с распределённой памятью являются кластеры — несколько компьютеров объединенных друг с другом через локальную сеть. Производительность такой системы сильно зависит от типа и качества используемой коммуникационной среды. Сегодня это могут быть Ethernet, Myrinet, или сравнительно новая и развивающаяся InfiniBand.
Общая память | Распределённая память |
Сервер | Кластер |
8 процессорных ядер, ОЗУ 16 Гб | 128 процессорных ядер, ОЗУ 128 Гб и выше |
Нет прямых обменов | Есть прямые обмены |
OpenMP — директивы компилятора | MPI — функции обмена |
Табл. 1. Характеристики стандартных параллельных вычислительных систем
Итак,
кластер — набор связанных
через сетевой интерфейс узлов,
содержащих, как правило, два или
больше многоядерных процессора
и имеющих общую память. Взаимодействие
между узлами кластера осуществляется
путём организации обменов данными. Как
правило, для узлов кластера организуется
единый дисковый массив. При отсутствии
серьёзных задержек при одновременном
доступе к памяти наиболее оптимально
распределять по одному параллельному
процессу на ядро.
Представители систем с общей памятью — обычные рабочие станции с современными многоядерными процессорами. При проведении расчетов используют рабочие станции повышенной производительности с увеличенными ресурсами, их в дальнейшем будем называть серверами.
Каждый тип систем имеет свои преимущества при проведении расчётов. Модель, если она подойдёт для сервера по ресурсам памяти, пойдёт на счет с той скоростью, с которой позволят процессорные ресурсы.
Использование кластеров — систем с распределённой памятью — позволяет полностью преодолеть ограничения на размер памяти и производительность персонального компьютера и провести расчёт модели практически неограниченных размеров.
В настоящий момент фактическим стандартом среди инструментов обмена, предназначенных для вычислительных систем с распределенной памятью, является библиотека MPI, которая имеет реализации под платформы Windows и Linux. Она представляет собой набор процедур для пересылки данных и синхронизации. Использование в качестве функций обмена стандарта MPI позволяет скомпилировать и запустить программу как на кластере, так и машинах, объединённых в обычную локальную сеть, или просто отдельных рабочих станциях. Таким образом, программы, написанные на MPI, являются универсальными, однако для класса систем с общей памятью более подходят специальные средства распараллеливания, такие как директивы компилятора OpenMP.
Как уже упоминалось ранее, геофизические задачи (в частности, обработка данных сейсморазведки) являются наиболее ресурсоемкими: для разработки одного месторождения нефти или газа нужно обработать информацию объемом не менее нескольких терабайт. Оптимальным решением в данном случае является использование для расчетов кластерных систем, на основе которых сейчас строится большинство суперкомпьютеров.
Пример такой системы — суперк
Помимо
«СКИФ» МГУ в России сейчас доступны
другие современные мощные кластеры
научных институтов или кластеры
сервисных компаний. Помимо кластерных
комплексов весьма эффективно могут
быть использованы и многоядерные системы
с общей памятью для расчетов
средних и небольших серий
моделей.
Как известно, гидродинамическая модель задаётся на трёхмерной регулярной, вообще говоря, нестыкованной сетке (рис. 4). Часть ячеек может соответствовать непроницаемой породе, в этом случае они объявляются неактивными и исключаются из рассмотрения, в результате чего число содержательных ячеек сокращается на 10%–80 %. Вместе с тем, современные модели, получаемые путём всё более точных измерений, содержат всё более подробные расчётные сетки.
Важной
задачей при разработке параллельного
программного обеспечения является
выполнение основных критериев правильности
реализации распараллеливания
Рис. 4. Пример модели. Вертикальный разрез нестыкованной сетки
В отличие от ряда инженерно-физических задач, задачи расчёта фильтрации в нефтегазоносных месторождениях характеризуются распределением активных ячеек, в которых и содержится подвижный флюид — вода, нефть, газ. Данный факт, не играющий роли на однопроцессорной машине, приводит к весьма нетривиальным проблемам при переходе на многопроцессорные системы.
Параллельные
вычисления предполагают разбиение
заданной области на расчётные подобласти.
В силу того, что, как правило, скважины
(рис. 5) преимущественно располагаются
вертикально или почти вертикально, расчётная
сетка разбивается на прямоугольные в
плане участки. На границах между процессами
устраивается обмен расчётными данными.
Очевидно, необходимо разделить область
так, чтобы как можно более равномерно
распределить активные ячейки и тем самым
оптимально распределить загрузку ядра
процессора. Очень важно также равномерно
распределить обмены между процессами,
также учитывая распределение активных
ячеек. Сразу отметим, что возможность
сразу и автоматически оптимально разбить
область и использовать разбиение на произвольном
числе подобластей создаёт предпосылки
для масштабируемости программы. Как показывают
практические расчёты, при правильном
разбиении области можно достичь приемлемого
баланса загрузки задачи для произвольного
числа вычислительных ядер.
Рис. 5. Пример модели. Скважины отмечены вертикальными линиями
В
качестве показателя равномерности
загрузки можно ввести параметр
,
где — общее число активных ячеек, — число активных ячеек в подобласти, — число процессов. Число - представляет собой максимальное ускорение за счёт параллельности, которое можно достичь при данном разбиении. Например, если баланс загрузки 80% для задачи на пять процессов, то максимальное ускорение за счёт параллельности составит не больше 4, если не учитывать ускорение, даваемое кэш-памятью процессора. На самом деле реальное ускорение будет существенно меньше. Поэтому необходимо следить за этим параметром, особенно при вычислениях на кластерах с «неоднородными» узлами.