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

Назначение

Выбор п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  PAR_BDSV(NAME, N, NPROCS, BWL, BWU, MMIN, NB)

Параметры

NAME - имя целевой подпрограммы, с помощью которой пользователь собирается решать свою задачу (одно из PDDBSV, PDGBSV, PDPBSV); (входной параметр, тип символьный);
N - порядок исходной матрицы системы (входной параметр, тип целый);
NPROCS - число процессов, которое может выделить пользователь для решения задачи (входной параметр, тип целый);
BWL - число поддиагоналей исходной матрицы (входной параметр, тип целый);
BWU - число наддиагоналей исходной матрицы (входной параметр, тип целый);
MMIN - минимальное количество локальной памяти, которое необходимо выделить на каждом из параллельных процессов для решения задачи (выходной параметр, тип целый);
NB - величина блока, на которые делится исходная матрица системы; NB полагается равным 0, если пользователь доверяет выбор его значения этой подпрограмме (входной и выходной параметр, тип целый);

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

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

  1.  Подпрограмма является последовательной фортранной программой и не использует распределенную память (требуется только один процессор)

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

Необходимо выбрать размер блока NB, число строк и столбцов решетки процессов (NPROW,NPCOL) и вычислить размер локальной памяти, необходимой для решения системы уравнений с помощью подпрограммы PDDBSV.
Матрица системы - квадратная порядка 9. Число кодиагоналей BWL = BWU = 1.
Выделяемое число процессов NPROCS = 3. NB = 0.

Фрагмент фортранного текста вызывающей программы
(полный текст теста можно получить в tpr_bdsv.zip)

      PROGRAM TPR_BDSV
*
      INTEGER            N, NPROCS, MMIN, NB, BWL, BWU
      CHARACTER*(*)      NAME
      PARAMETER          ( NAME = 'PDDBSV')
      EXTERNAL PAR_BDSV
*
      N = 9
      NPROCS = 3
      NB=0
      BWL = 1
      BWU = 1
*
      CALL PAR_BDSV(NAME, N, NPROCS, BWL, BWU, MMIN, NB)
      STOP
      END

Результаты:

      NB = 3
      NPROW = 1
      NPCOL = 3
      MMIN = 29