Организация расчета необходимых размеров локальной памяти для целевой подпрограммы Комплекса (решения систем линейных алгебраических уравнений с невырожденными матрицами общего вида) при разных фактических параметрах распараллеливания, определение наибольшего размера требуемой памяти и вывод полученных результатов расчетов при разных параметрах
Эта служебная подпрограмма организует циклическое обращение к другой служебной подпрограмме Комплекса, которая вычисляет необходимый размер локальной памяти (при решении систем линейных алгебраических уравнений с невырожденными матрицами общего вида). При этом цикл выполняется с разными фактическими параметрами распараллеливания (NPROW, NPCOL, NB) (см.Автоматизация доступа к подпрограммам Комплекса) из заданного пользователем диапазона их допустимых значений. Она также организует вывод полученных результатов расчетов на печать и/или во внешний файл.
Литература:
http://software.intel.com/en-us/articles/intel-math-kernel-library-documentation/
http://www.netlib.org/scalapack/slug/index.html
http://num_anal.srcc.msu.ru/par_prog/
CALL BSTMEM( NAME, N, NPROCS, NBMIN,NBMAX, NPRWMIN,NPRWMAX, MMIN, OUTFILE, NPRT )
Параметры
NAME - | имя целевой подпрограммы, для которой вычисляется необходимый размер локальной памяти (одно из PDGESV, PDGESV1, PDGESV2); (входной параметр, тип символьный); |
N - | порядок исходной матрицы, для которой вычисляется размер локальной памяти (входной параметр, тип целый); |
NPROCS - | число параллельных процессов, выделенных для решения задачи (входной параметр, тип целый); |
NBMIN - | минимальный размер блока матрицы (NB) из заданного пользователем диапазона значений, при которых будет вычисляться необходимый размер памяти (входной параметр, тип целый); |
NBMAX - | максимальный размер блока матрицы (NB) из заданного пользователем диапазона значений, при которых будет вычисляться необходимый размер памяти (входной параметр, тип целый); |
NPRWMIN - | минимальное число строк в решетке процессов, из заданного пользователем диапазона возможных решеток, при которых будут подсчитываться необходимые размеры локальной памяти (входной параметр, тип целый); |
NPRWMAX - | максимальное число строк в решетке процессов, из заданного пользователем диапазона возможных решеток, при которых будут подсчитываться необходимые размеры локальной памяти (входной параметр, тип целый); |
MMIN - | вычисленный размер требуемой памяти при заданных параметрах распараллеливания (см.Автоматизация доступа к подпрограммам Комплекса (выходной параметр, тип целый); |
OUTFILE - | имя файла, в который будут записаны результаты работы подпрограммы (входной параметр, тип символьный); |
NPRT - |
режим выдачи результатов вычислительного эксперимента: = 0 - на печать не выдается ничего, кроме максмального размера памяти полученного в данном групповом эксперименте и значений параметров распараллеливания, при которых он был получен; = 1 - на печать выдаются все результаты подсчета необходимой памяти ( при всех испытанных в данном групповом запуске наборах параметров распараллеливания ); (входной параметр, тип целый); |
Вызываемые подпрограммы
PAR_GESVN - | Вычисление необходимых размеров локальной памяти при решении систем линейных алгебраических уравнений с невырожденными матрицами общего вида при заданном наборе параметров распараллеливания |
Замечания по использованию
1. | Подпрограмма является последовательной фортранной программой и не использует распределенную память (требуется только один процессор) |
Требуется вычислить максимальный размер локальной памяти, который необходим
при решении системы линейных уравнений с помощью подпрограммы PDGESV.
при разных параметрах распараллеливания.
Матрица системы - порядка 7000. Для решения задачи предполагается использовать 8 процессоров.
При этом предполагается провести вычисления для всех возможных решеток, в которые можно
организовать все 8 процессоров ( 1*8, 2*4, 4*2, 8*1 ), т.е. параметры решетки изменяются в диапазоне
NPRWMIN = 1, NPRWMAX = 8.
Кроме того, для каждой из указанных решеток предполагается провести несколько разных вычислений
при разбиении исходной матрицы на блоки разной величины, которая задается диапазоном:
NBMIN = 2, NBMAX = 254.
Фрагмент фортранного текста вызывающей программы
(полный текст теста можно получить в
tbstmem.zip)
PROGRAM TBSTMEM * * Тест к подпрограмме вычисления размера памяти BSTMEM * CHARACTER*(*) NAME PARAMETER ( NAME = 'PDGESV' ) CHARACTER OUTFILE*(*) PARAMETER ( OUTFILE = 'BSTMEM2.RES' ) * INTEGER J, MMIN, NPRT, $ N, NPRWMIN, NPRWMAX, NBMIN, NBMAX, $ NB, NPROCS * PARAMETER ( N = 7000, NPROCS = 8, $ NPRWMIN = 1, NPRWMAX = 8 , $ NBMIN = 2, NBMAX = 254, NPRT = 1 ) * COMMON J * EXTERNAL BSTMEM * CALL BSTMEM( NAME, N, NPROCS, NBMIN, NBMAX, NPRWMIN, NPRWMAX, $ MMIN, OUTFILE, NPRT ) * STOP END Результаты: Максимальный размер локальной памяти для решения задачи MMIN = 7441001 необходим при следующих параметрах распараллеливания: NPROW = 1 , NPCOL = 8 , NB = 212