Организация циклических вызовов какой-либо целевой подпрограммы Комплекса (для решения систем линейных алгебраических уравнений с невырожденными матрицами общего вида или симметричными матрицами, для вычисления собственных значений в линейной и обобщенной проблемах или для вычисления сингулярных чисел) с разными фактическими параметрами распараллеливания и вывод полученных результатов таймирования расчетов при разных параметрах
Эта служебная подпрограмма организует циклическое обращение к заданной пользователем целевой подпрограмме Комплекса (для решения систем линейных алгебраических уравнений с невырожденными матрицами общего вида или симметричными матрицами, для вычисления собственных значений в линейной и обобщенной проблемах или для вычисления сингулярных чисел матрицы) с разными фактическими параметрами распараллеливания (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, а также все входные параметры и матрицы (входной параметр, тип целый); |
Версии
BSTPAR9Z - | Организация циклических вызовов подпрограмм Комплекса PARALG для решения задач линейной алгебры с комплексными данными с разными фактическими параметрами распараллеливания |
Вызываемые подпрограммы
Здесь указаны только подпрограммы 1 - ого уровня и целевые подпрограммы (2 - ого уровня).
Для того чтобы упростить вызов всех используемых в решении задачи подпрограмм Комплекса достаточно при получении исполнимого модуля подсоединить объектную библиотеку libparalg.a (см., например,"Пользователям суперкомпьютера СКИФ "Чебышев" НИВЦ МГУ").
CAL_GESVN - CAZ_GESVN | Организация вызова целевой подпрограммы комплекса для решения систем линейных алгебраических уравнений с невырожденными матрицами общего вида и вычисление времени, затраченного на решение задачи (для случаев вещественных и комплексных данных, соответственно) |
CAL_POSVN - | Организация вызова целевой подпрограммы комплекса для решения систем линейных алгебраических уравнений с симметричными матрицами и вычисление времени, затраченного на решение задачи |
CAL_SYEV1N - | Организация вызова целевой подпрограммы комплекса для решения линейной проблемы собственных значений с симметричной матрицей и вычисление времени, затраченного на решение задачи |
CAL_SYGV1N - | Организация вызова целевой подпрограммы комплекса для решения обобщенной проблемы собственных значений с симметричной матрицей и вычисление времени, затраченного на решение задачи |
CAL_GEEV1N - | Организация вызова целевой подпрограммы комплекса для решения линейной проблемы собственных значений с матрицей общего вида и вычисление времени, затраченного на решение задачи |
CAL_GESVD1N - | Организация вызова целевой подпрограммы комплекса для вычисления сингулярных чисел матрицы и вычисление времени, затраченного на решение задачи |
PDGESV - PZGESV PDGESV1 PZGESV1 PDGESV2 PZGESV2 PDGESV3 PZGESV3 |
решение системы 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 - MINTZGESV | Построение некоторой "стандартной" матрицы системы и вектора правой части заданного порядка 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. | В версии подпрограммы BSTPAR9Z параметр AMEM имеет тип DOUBLE COMPLEX | |
4. |
Для сохранения, систематизации и обеспечения общего доступа ко всем,
полученным на данном компьютере, результатам вычисления минимального времени,
необходимого для расчетов по той или иной целевой программе Комплекса
при заданных: порядке матрицы и числе использованных процессоров,
независимо от пользователей подпрограммы BSTPAR9, создается некий системный
архив файлов с результатами всех запусков BSTPAR9. Каждый такой файл содержит только минимальное время решения задачи и искомые параметры распараллеливания, при которых оно было достигнуто. Имена таких файлов строятся системно и состоят из указания порядка матрицы, числа процессоров и даты запуска программы BSTPAR9. Это облегчает поиск нужного файла с лучшими параметрами распараллеливания, позволяя разным пользователям в ряде случаев воспользоваться уже полученными кем-то наилучшими параметрами распараллеливания, избежав собственных значительных затрат времени на аналогичные расчеты. | |
5. | Для того чтобы упростить вызов всех используемых в решении задачи подпрограмм Комплекса достаточно при получении исполнимого модуля подсоединить объектную библиотеку 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 )