ОБЪЕДИНЕННЫЙ   ИНСТИТУТ   ЯДЕРНЫХ   ИССЛЕДОВАНИЙ
lit БИБЛИОТЕКА   ПРОГРАММ   JINRLIB

Split - параллельная реализация численного решения
системы алгебраических уравнений с трехдиагональной матрицей
с использованием алгоритма разбиений и технологии MPI


Автор: А.В.Волохова
eng
Вы
counter
посетитель.

Язык: C++


Программа Split вычисляет решения системы алгебраических уравнений вида

                                 Aixi-1+Bixi+Cxi+1=Di,    i=1,...,N,    A1=CN=0                         (1)           

методом разбиений параллельно, используя технологию MPI.

Параллельный алгоритм подробно описан в [1]. Расчеты, представленные в [2-4], демонстрируют значительное сокращение времени счета при расчетах в параллельном режиме, что позволило успешно провести численное исследование системы уравнений полярона, где метод разбиений применен в рамках неявной конечно-разностной схемы для решения системы вида (1) на каждом шаге по времени.

Вызов процедуры осуществляется одновременно на всех MPI-процессах, задействованных при решении задачи:

Split(A,B,C,D,m1,m2,X)   

Входные данные:

- A,B,C,D – массивы типа double, содержащие коэффициенты системы уравнений (1). Каждый MPI-процесс проводит вычисления и предоставляет значения Х в своем сегменте системы (1);
- m1 - индекс размещения первого уравнения сегмента в массивах A, B, C, D, X в каждом MPI-процессе;
- m2 - индекс размещения последнего уравнения сегмента в массивах A, B, C, D, X в каждом MPI-процессе.

Выходные данные:

X - массив типа double, содержащий сегмент решений системы уравнений, вычисляемый данным MPI-процессом.

Значения индексов m1 и m2 - свои для каждого MPI-процесса, они определяют также и размер сегмента, назначенного данному процессу.

Ограничения данной версии:

1. количество MPI-процессов <= 50;
2. m2-m1 >= 2 для всех сегментов.

Отметим, что эффект от распараллеливания проявляется, если система (1) имеет большую размерность, причем количество уравнений в системе существенно больше количества задействованных в расчете MPI-процессов.

Для использования процедуры Split пользователю необходимо в вызывающей программе:

- подключить библиотеку MPI;
- инициализировать MPI с помощью функции MPI_Init;
- определить разбивку системы уравнений на сегменты (см. в примере test.cpp фрагмент «Разметка процессов»);
- заполнить входные массивы A,B,C,D на каждом процессе;
- выгрузить результаты из выходного массива Х, при необходимости собрав все фрагменты результатов в единый массив;
- завершить режим MPI с помощью функции MPI_Finalize.

Архив программы содержит:

1. файл процедуры Split.cpp;
2. тестовая программа test.cpp для системы 10 уравнений;
3. файл коэффициентов системы уравнений — входных параметров для тестового примера test.txt;
4. файлы с результатами запуска тестового примера для одного, двух и трех MPI-процессов;
5. препринт [1] с описанием алгоритма.

Скачать архив программы Split.

Литература:

  1. Волохова А.В., Земляная Е.В., Рихвицкий В.С. Параллельная оптимизация метода решения системы уравнений полярона с использованием алгоритма разбиений. Препринт ОИЯИ P11-2-15-19, 2015; // "Вычислительные методы и программирование", 2015 . - Т. 16. - с. 281-289.
  2. E.V. Zemlyanaya, A.V. Volokhova, V.D. Lakhno, I.V. Amirkhanov, I.V. Puzynin, T.P. Puzynina, V.S. Rikhvitskiy, P.Kh. Atanasova. Numerical simulation of photoexcited polaron states in water. // AIP Conference Proceedings, 2015. - Vol. 1684, - p. 100006.
  3. Alina Volokhova, Elena Zemlyanaya, Viktor Lakhno, Ilkizar Amirkhanov, Maxim Bashashin, Igor Puzynin, Taisiya Puzynina. Numerical Simulation of the Formation of Hydrated Electron States. // "European Physics Journal", 2018. - Web of Conferences. - Vol. 173. - p. 06013
  4. E.V. Zemlyanaya, A.V. Volokhova, V.D. Lakhno, M.V. Bashashin, I.V. Amirkhanov, I.V. Puzynin, T.P. Puzynina, and P.Kh. Atanasova. Numerical study of formation of hydrated electron states. // AIP Conference Proceedings, 2018. - Vol. 2025. - p. 110008.



home up e-mail