Подпрограмма:  BSTMEM

Назначение

Организация расчета необходимых размеров локальной памяти для целевой подпрограммы Комплекса (решения систем линейных алгебраических уравнений с невырожденными матрицами общего вида) при разных фактических параметрах распараллеливания, определение наибольшего размера требуемой памяти и вывод полученных результатов расчетов при разных параметрах

Описание

Эта служебная подпрограмма организует циклическое обращение к другой служебной подпрограмме Комплекса, которая вычисляет необходимый размер локальной памяти (при решении систем линейных алгебраических уравнений с невырожденными матрицами общего вида). При этом цикл выполняется с разными фактическими параметрами распараллеливания (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