А. Ю. Катаева
д-р физ.-мат. наук, профессор Нижегородского государственного технического университета, г. Нижний Новгород, Россия
И. И. Ухова
магистр Нижегородского государственного технического университета, г. Нижний Новгород, Россия
А. А. Куркин
д-р физ.-мат. наук, профессор Нижегородского государственного технического университета, г. Нижний Новгород, Россия
Н. А. Катаева
магистр Нижегородского государственного технического университета, г. Нижний Новгород, Россия
УДК 614.841:519.6:519.633.6:519.688
РЕАЛИЗАЦИЯ МОДЕЛИ РАСПРОСТРАНЕНИЯ ВЕРХОВОГО ЛЕСНОГО ПОЖАРА С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ
Целью данной работы было исследование программной реализации численной модели распространения лесного верхового пожара, разработка вариантов распараллеливания программной реализации, применение которых позволитускорить процесс вычисления. Для этого были использованы: технология OpenMP, позволяющая использовать общие блоки памяти и в отличие от MPI избежать ее дублирования, а также временных затрат на пересылку данных между процессами, и одна из самых передовыхтехнологий параллельного программирования настоящего времени CUDA— программно-аппаратное решение, позволяющее использовать графическую карту для решения вычислительных задач общего назначения.
Ключевые слова: численная модель пожара; технологии параллельного программирования; OpenMP; CUDA; математическое моделирование; лесной пожар.
Лесные верховые пожары являются одним из наиболее распространенных типов природных катастроф. При численном моделировании любой катастрофы важна не только правильность выбранной модели и параметров, но и скорость воспроизведения события. Это необходимо для повышения эффективности тушения и своевременного оповещения объектов, находящихся в опасной зоне, предотвращения возможного ущерба, объективной оценки последствий катастрофы. В задачах моделирования, решение которых сопряжено с быстротой расчетов, применяются методы параллельного программирования. Совокупность областей применения данной задачи сводится в основном к задачам компьютерной графики и теории катастроф. Проблема и в той и в другой области — это дискретность входных данных. Как следствие, к обеим областям предъявляются требования по универсальности, посему аналитическая модель не может быть применена. Другой неотъемлемой частью этих областей являются высокие требования по производительности. Для теории катастроф она определяется интервалом актуальности прогноза, для задач компь-
ютерной графики — необходимостью отображения в реальном времени.
Распространение лесного верхового пожара описывается системой дифференциальных уравнений. Исходная программа использует метод решения системы уравнений, предложенный профессором С. Патанкаром [1, 2], который основывается на очень эффективном алгоритме, известном как TDMA (TriDiagonal-Matrix Algorithm). Название TDMA происходит из построения матрицы коэффициентов дискретных аналогов: ненулевые элементы в ней располагаются только на трех смежных диагоналях. Этот алгоритм включает метод переменных направлений, который и был распараллелен. Метод переменных направлений состоит в том, что при решении системы уравнений сначала применяется прогонка для всех линий, параллельных оси х,а затем — для всех линий, параллельных осям y и z. Рассчитанные значения искомой функции вдоль линии используются в качестве оценочных значений при решении уравнений для соседней линии. Последовательность выбора обсчета вдоль осей может быть выбрана произвольно.
© Катаева Л. Ю., Ухова И. И., Куркин А. А., Катаева Н. А., 2010
38
ISSN 0869-7493 ПОЖАРОВЗРЫВОБЕЗОПАСНаСТЬ 2010 ТОМ 19 № 10
Подобная система получается при линейном приближении решения задач, описываемых дифференциальными уравнениями. Следовательно, очень важно иметь в наличии алгоритмы эффективного решения трехдиагональных линейных систем. Для решения данной проблемы использовался известный метод параллельной редукции [6, 7]. Рассмотрим трехдиагональную систему Ах = b, где A — трехдиагональная матрица порядка [n х п]. Элементы этой матрицы нулевые, за исключением тех, которые находятся на главной диагонали, непосредственно над ней и непосредственно под ней. Другими словами, A имеет элементы 0 для всех пар i, j при |i - j | > 1. Предложенный алгоритм основан на свертывании четных столбцов.
Идея заключается в следующем. Допустим, имеется система линейных алгебраических уравнений трехдиагонального вида Ах = b. Для каждого уравнения вхождение xi с четным индексом заменяется на функцию от xi-1 и xi+1 с нечетными индексами. Новая линейная система будет также трехдиа-гональной, следовательно, мы можем применить такую же идею, и так далее до тех пор, пока не останется хп. После нахождения решения для xn мы решаем систему для xn/2, затем — для хп/4, хп/8итак далее. Имея значения искомых величин для четных индексов мы можем найти решения для остальных значений.
В качестве основной модели была выбрана модель верховых лесных пожаров с учетом турбулентности [3]. В используемой программной реализации метод переменных направлений организован в виде последовательных блоков, каждый из которых отвечает за направление по осям х, y, z и состоит из тройного вложенного цикла, внутри которого происходит вычисление векторов коэффициентов для метода прогонки и самой прогонки. В начале метода создаются два потока. Каждый из блоков распараллеливается по виткам цикла. В конце блока, т. е. после окончания обсчета одного направления, происходит синхронизация потоков, что связано с необходимостью использования значений функции из предыдущего блока в последующем [4].
Используемые аппаратные средства: IBM PC-со-вместимый компьютер c процессором Intel Core 2 Duo 2,260 гГц и ОЗУ с объемом памяти 2 Гб; SciPy — модуль, содержащий совокупность математических алгоритмов и функций. SciPy позволяет использовать интерактивную сессию интрепретатора языка Python так же, как это делается в таких системах, как MathLab, IDL, Octave, R-Lab и SciLab. Но в отличие от вышеприведенных аналогичных систем SciPy можно использовать для создания сложных и специализированных приложений. Научные приложения, написанные с использованием SciPy, выиг-
рывают за счет огромного количества модулей в различных нишах. Не нужно забывать, что все — от параллельного программирования до web и баз данных — доступно для программиста на языке Python.
Были получены удовлетворительные результаты работы параллельной программы. Для трехмерной матрицы из 18 тыс. элементов скорость обсчета временного шага для системы дифференциальных уравнений практически не меняется и лишь на матрицах более высокого порядка получено ускорение в 1,2 раза. Из этого можно сделать вывод, что по-виточное распараллеливание метода переменных направлений с использованием только технологии OpenMP [4, 5] малоэффективно.
В ходе работы была исследована существующая программная реализация решения системы дифференциальных уравнений методом Патанкара. В результате исследования был реализован параллельный алгоритм с использованием технологии OpenMP. Проведены тесты, экспериментальная оценка ускорения, возникающего при использовании параллельного алгоритма.
Модификация представления данных в исходном коде программы, а именно замена векторного хранения данных на матричное, позволила использовать в методе переменных направлений матричную прогонку, которая в отличие от векторной пара-леллится более эффективно. Метод параллельной матричной прогонки реализован с использованием технологии CUDA с выигрышем по времени для последовательной реализации. В итоге, совместное использование технологий параллельного программирования OpenMP и CUDAв исходной программе позволит сократить время обсчета одной итерации системы уравнений в несколько раз. На рисунке показана зависимость относительной скорости вычислений (за эталон выбран метод TDMA CPU) для
я 2>5-г
о
Й 15-о
л
5 0,5
н
Н Н-1-1-1-1-1-
о 0 100000 200000 300000 400000 500000 600000
Размерность расчетной области
Зависимость относительной скорости вычислений от размерности расчетной области для различных реализаций решения поставленной задачи: 1 — TDMA CPU; 2 — Parallel CPU; 3 — Parallel GPU
ISSN 0869-7493 ПОЖАРОВЗРЫВОБЕЗОПАСНОСТЬ 2010 ТОМ 19 № 10
39
различных реализаций от размерности расчетной области. Из рисунка видно существенное ускорение для Parallel CPU.
На примере реализации задачи о распространении верхового лесного пожара, к которой предъявляются высокие требования по производительности и интерактивности, было показано, что для трех-диагонального представления исходной системы уравнений оптимальной является кодогенерация, пусть даже на стороне обработки логики не обеспечивающих высокой производительности, но логически более насыщенных технологий. Следующим этапом стала реализация совокупности минимального базиса функциональных языков, таких как функция мэпирования, сокращения и суммирова-
ния, для создания логически насыщенного функционала с OpenCL backend. Все описанное выше реализовано на языке программирования Python, который синтаксически может считаться функциональным и насыщенным с точки зрения пользовательской базы и, как следствие, привязанных технологий.
Представленные результаты поисковой научно-исследовательской работы получены в рамках реализации мероприятия 1.2.1 "Проведение научных исследований научными группами под руководством докторов наук" ФЦП "Научные и научно-педагогические кадры инновационной России" на 20092013 гг.
СПИСОК ЛИТЕРАТУРЫ
1. Патанкар С. В. Численное решение задач теплопроводности и конвективного теплообмена при течении в каналах: пер. с англ. Е. В. Калибана: под ред. Г. Г. Янькова. — М.: Изд-во МЭИ, 2003. — 312 с. : ил. ISBN 5-7046-0898-1.
2. Катаева Л. Ю., Романов А. В. Метод Патанкара и возможности его оптимизации // Наука и техника транспорта. — 2009. — № 3.— С. 88-97.
3. ГришинА. М. Математическое моделирование лесных пожаров и новые способы борьбы с ними. — Новосибирск : Наука, Сиб. отд-ние, 1992. — 407 с.
4. Катаева Л. Ю. Применение параллельных вычислений к решению задачи прогноза пожарной опасности // Наука и техника транспорта. — 2007. — № 4.— С. 47-54.
5. Левин М. П. Параллельное программирование с использованием OpenMP. — М. : Изд-во Бином; Лаборатория знаний, 2008. — 120 с. ISBN 978-5-94774-857-4.
6. Stone Н. An efficient parallel algorithm for the solution of a tridiagonal linear system of equations // Journal ofACM. — 1973. — No. 20. — P. 27-38.
7. Dehne Fabri A., Rau-Chaplin. A Scalable Parallel Geometric Algorithms for Coarse Grained Multicomputers // In : Proc. ACM 9th Annual Computational Geometry, 1993. — P. 298-307.
Материал поступил в редакцию 22 июня 2010 г.
Электронные адреса авторов: [email protected]; [email protected].
40
ISSN 0869-7493 ПОЖАРОВЗРЫВОБЕЗОПАСНОСТЬ 2010 ТОМ 19 № 10