Выбор пaраметров распараллеливания для целевых программ комплекса PARALG, решающих системы линейных алгебраических уравнений на распределенной памяти с ленточными комплексными матрицами
Эта служебная подпрограмма выбирает и вычисляет за пользователя параметры распараллеливания, которые конкретизируют распределение вычислений между параллельными процессами и значения которых необходимо передавать целевым программам решения систем линейных алгебраических уравнений с ленточными комплексными матрицами
Литература:
http://num_anal.srcc.msu.ru/par_prog/
http://software.intel.com/en-us/articles/intel-math-kernel-library-documentation/
http://www.netlib.org/scalapack/slug/index.html
CALL PAZ_BDSV(NAME, N, NPROCS, BWL, BWU, MMIN, NB)
Параметры
| NAME - | имя целевой подпрограммы, с помощью которой пользователь собирается решать свою задачу (одно из PZDBSV, PZGBSV, PZPBSV); (входной параметр, тип символьный); |
| N - | порядок исходной матрицы системы (входной параметр, тип целый); |
| NPROCS - | число процессов, которое может выделить пользователь для решения задачи (входной параметр, тип целый); |
| BWL - | число поддиагоналей исходной матрицы (входной параметр, тип целый); |
| BWU - | число наддиагоналей исходной матрицы (входной параметр, тип целый); |
| MMIN - | минимальное количество локальной памяти, которое необходимо выделить на каждом из параллельных процессов для решения задачи (выходной параметр, тип целый); |
| NB - | величина блока, на которые делится исходная матрица системы; NB полагается равным 0, если пользователь доверяет выбор его значения этой подпрограмме (входной и выходной параметр, тип целый); |
Вызываемые подпрограммы: нет
Замечания по использованию
| 1. | Подпрограмма является последовательной фортранной программой и не использует распределенную память (требуется только один процессор) |
Необходимо выбрать размер блока NB, число строк и столбцов
решетки процессов
(NPROW,NPCOL) и вычислить размер локальной памяти, необходимой для
решения системы уравнений с помощью подпрограммы PZDBSV.
Матрица системы - квадратная комплексная порядка 9. Число кодиагоналей BWL = BWU = 1.
Выделяемое число процессов NPROCS = 3. NB = 0.
Фрагмент фортранного текста вызывающей программы
(полный текст теста можно получить в
tpz_bdsv.zip)
PROGRAM TPZ_BDSV
*
INTEGER N, NPROCS, MMIN, NB, BWL, BWU
CHARACTER*(*) NAME
PARAMETER ( NAME = 'PZDBSV')
EXTERNAL PAZ_BDSV
*
N = 9
NPROCS = 3
NB=0
BWL = 1
BWU = 1
*
CALL PAZ_BDSV(NAME, N, NPROCS, BWL, BWU, MMIN, NB)
STOP
END
Результаты:
NB = 3
NPROW = 1
NPCOL = 3
MMIN = 29