|
БИБЛИОТЕКА ПРОГРАММ JINRLIBSplit - параллельная реализация численного решения |
|
Язык: C++ Программа Split вычисляет решения системы алгебраических уравнений вида методом разбиений параллельно, используя технологию MPI. Параллельный алгоритм подробно описан в [1]. Расчеты, представленные в [2-4], демонстрируют значительное сокращение времени счета при расчетах в параллельном режиме, что позволило успешно провести численное исследование системы уравнений полярона, где метод разбиений применен в рамках неявной конечно-разностной схемы для решения системы вида (1) на каждом шаге по времени. Вызов процедуры осуществляется одновременно на всех MPI-процессах, задействованных при решении задачи: Входные данные:
- 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. Литература:
|