Документ взят из кэша поисковой машины. Адрес оригинального документа : http://num-anal.srcc.msu.ru/par_prog/sv/bstpar9.htm
Дата изменения: Mon Jan 12 17:40:52 2015
Дата индексирования: Sat Apr 9 23:18:53 2016
Кодировка: Windows-1251
BSTPAR9. Программа организации циклических вызовов подпрограмм Комплекса PARALG для решения задач линейной алгебры с разными фактическими параметрами распараллеливания

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

Назначение

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

Описание

Эта служебная подпрограмма организует циклическое обращение к заданной пользователем целевой подпрограмме Комплекса (для решения систем линейных алгебраических уравнений с невырожденными матрицами общего вида или симметричными матрицами, для вычисления собственных значений в линейной и обобщенной проблемах или для вычисления сингулярных чисел матрицы) с разными фактическими параметрами распараллеливания (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  BSTPAR9( NAME, M, N, NPROCS, AMEM, MEMSIZE, NBMIN,NBMAX,
                                          DNB, NPRWMIN, NPRWMAX, DNPRW, INFILEA,
                                          INFILEB, OUTFILE, TFILE, NPRT )

Параметры

NAME - имя целевой подпрограммы, при применении которой для решения своей задачи пользователь хочет подобрать наилучшие параметры распараллеливания (одно из: PDGESV, PDGESV1, PDGESV2, PDGESV3, PDPOSV, PDPOSV1, PDPOSV2, PDGEEV1, PDSYEV1, PDSYEV3, PDSYEV5, PDSYGV1, PDSYGV3, PDSYGV5, PDGESVD1, PDGESVD4); (входной параметр, тип символьный);
M - число строк исходной матрицы, для которого необходимо подобрать наилучшие параметры распараллеливания (входной параметр, тип целый);
N - число столбцов исходной матрицы, для которого необходимо подобрать наилучшие параметры распараллеливания (входной параметр, тип целый);
NPROCS - число параллельных процессов, выделенных для решения задачи (входной параметр, тип целый);
AMEM - массив локальной рабочей памяти, в которую распределяются локальные части исходных матриц и векторов, хранятся элементы рабочих массивов, где формируется вектор решений; (входной параметр, тип DOUBLE PRECISION);
MEMSIZE - задаваемый размер массива AMEM, который должен быть больше или равен наибольшему значению параметра MMIN, выданному пользователю соответствующей подпрограммой вычисления параметров (например, PAR_GESV - при решении системы уравнений) при задании ей различных наборов параметров распараллеливания, для которых проводится вычислительный эксперимент и измеряется время на решение задачи (см.Автоматизация доступа к подпрограммам Комплекса (входной параметр, тип целый);
NBMIN - минимальный размер блока матрицы (NB) из заданного пользователем диапазона значений, при которых будет осуществляться решение задачи и подсчитываться время, затраченное на это решение (входной параметр, тип целый);
NBMAX - максимальный размер блока матрицы (NB) из заданного пользователем диапазона значений, при которых будет осуществляться решение задачи и подсчитываться время, затраченное на это решение (входной параметр, тип целый);
DNB - размер шага изменения величины блока для вычисления очередного значения NB (из заданного пользователем диапазона), при котором будет выполняться решение задачи (1 < или = DNB < или = NBMAX ) и подсчитываться время, затраченное на это решение (входной параметр, тип целый);
NPRWMIN - минимальное число строк в решетке процессов, которая будет использоваться при решении задачи, из заданного пользователем диапазона возможных решеток, при которых будут выполняться расчеты и подсчитываться затраченное время (входной параметр, тип целый);
NPRWMAX - максимальное число строк в решетке процессов, которая будет использоваться при решении задачи, из заданного пользователем диапазона возможных решеток, при которых будут выполняться расчеты и подсчитываться затраченное время (входной параметр, тип целый);
DNPRW - размер шага изменения числа строк в решетке процессов (NPROW) для вычисления очередного значения NPROW (из заданного пользователем диапазона), при котором будет выполняться решение задачи ( 1 < или = DNPRW < или = NPRWMAX ) и подсчитываться время, затраченное на это решение (входной параметр, тип целый);
INFILEA - имя файла, содержащего исходную матрицу (A), либо "  "(пробел); в последнем случае будет использована некая "стандартная" матрица заданного порядка (входной параметр, тип символьный);
INFILEB - при подборе параметров для задачи решения системы линейных уравнений - имя файла, содержащего исходный вектор правой части системы (B), либо "  "(пробел); в последнем случае будет использован некий "стандартный" вектор заданного порядка;
при подборе параметров для задачи решения линейной проблемы собственных значений или задачи вычисления сингулярных чисел - не используется;
при подборе параметров для задачи решения обобщенной проблемы собственных значений - имя файла, содержащего исходную матрицу (B), либо "  "(пробел); в последнем случае будет использована некая "стандартная" матрица заданного порядка; (входной параметр, тип символьный);
OUTFILE - имя файла, в который (если это необходимо, см. параметр NPRT) будут записаны результаты работы целевой вычислительной подпрограммы с именем NAME (входной параметр, тип символьный);
TFILE - имя файла, в который в результате нескольких расчетов по целевой подпрограмме будут записаны все результаты таймирования, полученные при всех вычислительных экспериментах, выполненных в данном запуске подпрограммы BSTPAR9, инициирующей групповой запуск нескольких вычислительных экспериментов (т.е. нескольких вызовов одной из подпрограмм: CAL_GESVN, CAL_POSVN, CAL_GEEV1N, CAL_SYEV1N, CAL_SYGV1N или CAL_GESVD1N, с разными наборами параметров распараллеливания) (входной параметр, тип символьный);
NPRT - режим выдачи результатов вычислительного эксперимента:
= 0 - на печать не выдается ничего, кроме минимального времени счета полученного в данном групповом эксперименте и значений параметров распараллеливания, при которых получено это минимальное время;
= 1 - на печать выдаются все результаты таймирования ( при всех испытанных в данном групповом запуске наборах параметров распараллеливания );
= 2 - на печать выдается все то же самое, что и при NPRT = 1, а также результаты решения самой задачи целевой программой Комплекса для заданной матрицы;
= 3 - на печать выдается все то же самое, что и при NPRT = 2, а также все входные параметры и матрицы
(входной параметр, тип целый);

Вызываемые подпрограммы

Здесь указаны только подпрограммы 1 - ого уровня и целевые подпрограммы (2 - ого уровня).

Для того чтобы упростить вызов всех используемых в решении задачи подпрограмм Комплекса достаточно при получении исполнимого модуля подсоединить объектную библиотеку libparalg.a (см., например,"Пользователям суперкомпьютера СКИФ "Чебышев" НИВЦ МГУ").

CAL_GESVN - Организация вызова целевой подпрограммы комплекса для решения систем линейных алгебраических уравнений с невырожденными матрицами общего вида и вычисление времени, затраченного на решение задачи
CAL_POSVN - Организация вызова целевой подпрограммы комплекса для решения систем линейных алгебраических уравнений с симметричными матрицами и вычисление времени, затраченного на решение задачи
CAL_SYEV1N - Организация вызова целевой подпрограммы комплекса для решения линейной проблемы собственных значений с симметричной матрицей и вычисление времени, затраченного на решение задачи
CAL_SYGV1N - Организация вызова целевой подпрограммы комплекса для решения обобщенной проблемы собственных значений с симметричной матрицей и вычисление времени, затраченного на решение задачи
CAL_GEEV1N - Организация вызова целевой подпрограммы комплекса для решения линейной проблемы собственных значений с матрицей общего вида и вычисление времени, затраченного на решение задачи
CAL_GESVD1N - Организация вызова целевой подпрограммы комплекса для вычисления сингулярных чисел матрицы и вычисление времени, затраченного на решение задачи
PDGESV -
PDGESV1   
PDGESV2   
PDGESV3   
    
решение системы A X = B с матрицей общего вида методом Гаусса с выбором ведущего элемента по столбцу для вещественных данных двойной точности или
решение системы A X = B или AT X = B с матрицей общего вида методом Гаусса с выбором ведущего элемента по столбцу для вещественных данных двойной точности или
решение системы A X = B или AT X = B с матрицей общего вида методом Гаусса с выбором ведущего элемента по столбцу для вещественных данных двойной точности и оценка обратного числа обусловленности, или
решение системы A X = B или AT X = B с матрицей общего вида методом Гаусса с выбором ведущего элемента по столбцу для вещественных данных двойной точности с итерационным уточнением решения и оценкой границ ошибок
соответственно
PDPOSV -
PDPOSV1   
PDPOSV2   
    
решение системы с симметричной (эрмитовой) положительно определенной матрицей методом Холецкого или
решение системы с симметричной (эрмитовой) положительно определенной матрицей методом Холецкого и оценка обратного числа обусловленности, или
решение системы с симметричной (эрмитовой) положительно определенной матрицей методом Холецкого и с итерационным уточнением решения и оценкой границ ошибок,
соответственно
PDSYEV1 -
PDSYEV3   
PDSYEV5   
вычисление всех собственных значений симметричной матрицы для вещественных данных двойной точности;
вычисление собственных значений симметричной матрицы, принадлежащих заданному интервалу, для вещественных данных двойной точности;
вычисление собственных значений симметричной матрицы, принадлежащих заданному интервалу индексов, для вещественных данных двойной точности,
соответственно
PDGEEV1 -
вычисление всех собственных значений матрицы общего вида для вещественных данных двойной точности;
PDSYGV1 -
PDSYGV3   
PDSYGV5   
вычисление всех собственных значений симметричных матриц в обобщенной проблеме собственных значений для вещественных данных двойной точности;
вычисление собственных значений симметричных матриц (в обобщенной проблеме собственных значений), принадлежащих заданному интервалу, для вещественных данных двойной точности;
вычисление собственных значений симметричных матриц (в обобщенной проблеме собственных значений), принадлежащих заданному интервалу индексов, для вещественных данных двойной точности,
соответственно
PDGESVD1 -
PDGESVD4    
вычисление сингулярных чисел квадратной и прямоугольной матрицы для вещественных данных двойной точности;
соответственно
MINTGESV - Построение некоторой "стандартной" матрицы системы и вектора правой части заданного порядка N и распределение их частей(блоков) по параллельным процессам, если делается подбор параметров для задачи решения системы линейных уравнений с матрицами общего вида ( в том случае, если не были заданы файлы с исходными матрицей и вектором )
MINTPOSV - Построение некоторой "стандартной" матрицы системы и вектора правой части заданного порядка N и распределение их частей(блоков) по параллельным процессам, если делается подбор параметров для задачи решения системы линейных уравнений с симметричными матрицами ( в том случае, если не были заданы файлы с исходными матрицей и вектором )
MINTSYEV1 - Построение некоторой "стандартной" матрицы A заданного порядка N и распределение ее частей(блоков) по параллельным процессам, если делается подбор параметров для задачи вычисления собственных значений симметричных матриц в линейной проблеме собственных значений ( в том случае, если не был задан файл с исходной матрицей )
MINTSYGV1 - Построение некоторых "стандартных" матриц A и B заданного порядка N и распределение их частей(блоков) по параллельным процессам, если делается подбор параметров для задачи вычисления собственных значений симметричных матриц в обобщенной проблеме собственных значений ( в том случае, если не были заданы файлы с исходными матрицами )
MINTGEEV1 - Построение некоторой "стандартной" матрицы A заданного порядка N и распределение ее частей(блоков) по параллельным процессам, если делается подбор параметров для задачи вычисления собственных значений матриц общего вида в линейной проблеме собственных значений ( в том случае, если не был задан файл с исходной матрицей )
MINTGESVD1 - Построение некоторой "стандартной" квадратной матрицы A заданного порядка N и распределение ее частей(блоков) по параллельным процессам, если делается подбор параметров для задачи вычисления сингулярных чисел квадратной матрицы ( в том случае, если не был задан файл с исходной матрицей )
MINTGESVD2 - Построение некоторой "стандартной" прямоугольной матрицы A с заданным числом строк (M) и столбцов (N) и распределение ее частей(блоков) по параллельным процессам, если делается подбор параметров для задачи вычисления сингулярных чисел прямоугольной матрицы ( в том случае, если не был задан файл с исходной матрицей )

Замечания по использованию

  1.  Используются подпрограммы BLACS_EXIT, BLACS_GET, BLACS_GRIDEXIT, BLACS_GRIDINFO BLACS_GRIDINIT, BLACS_PINFO, BLACS_SETUP, BLACS_PNUM ( из пакета BLACS в составе MKL-библиотеки), SL_GRIDRESHAPE ( из пакета ScaLAPACK(TOOLS) в составе MKL-библиотеки), PDLAREAD, PDLAWRITE, MPI_Wtime()
  2.  Минимальное время, затраченное на решение задачи, среди всех времен, полученных при всех расчетах с разными параметрами распараллеливания, использованными в данном групповом запуске, присваивается переменной  time,  описанной в общем блоке
  3.  Для сохранения, систематизации и обеспечения общего доступа ко всем, полученным на данном компьютере, результатам вычисления минимального времени, необходимого для расчетов по той или иной целевой программе Комплекса при заданных: порядке матрицы и числе использованных процессоров, независимо от пользователей подпрограммы BSTPAR9, создается некий системный архив файлов с результатами всех запусков BSTPAR9.
Каждый такой файл содержит только минимальное время решения задачи и искомые параметры распараллеливания, при которых оно было достигнуто.
Имена таких файлов строятся системно и состоят из указания порядка матрицы, числа процессоров и даты запуска программы BSTPAR9. Это облегчает поиск нужного файла с лучшими параметрами распараллеливания, позволяя разным пользователям в ряде случаев воспользоваться уже полученными кем-то наилучшими параметрами распараллеливания, избежав собственных значительных затрат времени на аналогичные расчеты.
  4.  Для того чтобы упростить вызов всех используемых в решении задачи подпрограмм Комплекса достаточно при получении исполнимого модуля подсоединить объектную библиотеку libparalg.a (см., например,"Пользователям суперкомпьютера СКИФ "Чебышев" НИВЦ МГУ").

Пример использования

Требуется подобрать параметры распараллеливания, наилучшие с точки зрения производительности, при решении системы линейных уравнений с помощью подпрограммы PDGESV.
Матрица системы - порядка 7000. Для решения задачи предполагается использовать 8 процессоров.
При этом предполагается провести вычисления для всех возможных решеток, в которые можно организовать все 8 процессоров ( 1*8, 2*4, 4*2, 8*1 ), т.е. параметры решетки изменяются в диапазоне NPRWMIN = 1, NPRWMAX = 8, DNPRW = 1.
Кроме того, для каждой из указанных решеток предполагается провести несколько разных вычислений при разбиении исходной матрицы на блоки разной величины, которая задается диапазоном: NBMIN = 2, NBMAX = 512, DNB = 4.

При предварительном обращении к подпрограмме PAR_GESV с указанными выше параметрами был вычислен максимальный размер локальной памяти (для разных наборов параметров распараллеливания), необходимой для решения задачи MMIN = 8631001.

При вычислениях использовалась "стандартная" матрица, построение и распределение которой по процессам выполняется служебной подпрораммой  MINTGESV.

Фрагмент фортранного текста вызывающей программы

      PROGRAM  TBSTPAR
*
*     Тест к подпрограмме подбора параметров BSTPAR9
*
      include 'mpif.h'
*
      CHARACTER*(*)   NAME
      PARAMETER         ( NAME = 'PDGESV' )
      CHARACTER         INFILEA*(*), INFILEB*(*), OUTFILE*(*), TFILE*(*)
      PARAMETER         ( INFILEA = ' ', INFILEB = ' ',
     $                                OUTFILE = 'BSTRES.RES', TFILE = 'BSTPART.RES' )
*
      INTEGER         INFO, MYCOL, MYROW, NPCOL, NPROW, DNB, DNPRW,
     $                        IAM, MEMSIZE, NPRC, NPRT, NPRMAX, NPRMIN,
     $                        M, N, NBMIN, NBMAX, NPROCS
*
      PARAMETER       ( N = 7000, MEMSIZE = 8650000, M = N,
     $                              NPRC = 8,
     $                              NPRWMIN = 1, NPRWMAX = 8 , DNPRW = 1,
     $                              NBMIN = 2, NBMAX = 512, DNB= 4, NPRT = 2 )
*
      COMMON                   time
*
      DOUBLE PRECISION    AMEM( MEMSIZE ), time
*
      EXTERNAL           BSTPAR9, BLACS_PINFO
*
      CALL  BLACS_PINFO( IAM, NPROCS )
*
      CALL  BSTPAR9( NAME, M, N, NPROCS, AMEM, MEMSIZE, NBMIN, NBMAX,
     $                               DNB, NPRWMIN, NPRWMAX, DNPRW, INFILEA,
     $                               INFILEB, OUTFILE, TFILE, NPRT )
*
      STOP
      END

Результаты:

   Минимальное время решения задачи   time  =  0.402D+01

   получено при следующих параметрах распараллеливания:

   NPROW  = 2 ,  NPCOL  =  4 ,  NB  =  18


 Решение системы (в файле OUTFILE)

 X = ( 1.D0,  2.D0, 3.D0, .  .  .  .  .  .  .  .  .  6999.D0, 7000.D0 )