Обозначения и упрощения в примерах по использованию подпрограмм комплекса

В тестовых примерах и примерах по использованию подпрограмм комплекса приняты следующие стандартные обозначения величин, задающих параметры исходной задачи и выбранный способ распараллеливания (указаны в алфавитном порядке).

Имя      Определение
CSRC - Номер столбца решетки процессов, в который распределяется первый столбец исходной глобальной матрицы
DESCA - Дескриптор исходной глобальной матрицы  A системы уравнений
DESCB - Дескриптор исходной глобальной матрицы (вектора) правых частей  B
ICTXT - Контекст BLACS'а, связанный с выбранной решеткой процессов (внутренний параметр комплекса; служит для обеспечения согласованной работы подпрограмм комплекса и устанавливается пользователем обращением к соответствующей подпрограмме BLACS'а в начале решения задачи)
M - Число строк исходной глобальной матрицы  A
MB - Число строк в блоке, на которые делится исходная матрица  A
MXLLDA - Максимальная ведущая локальная размерность локальной части матрицы  A среди всех локальных частей на всех процессах решетки
MXLLDB - Максимальная ведущая локальная размерность локальной части матрицы (вектора)  B среди всех локальных частей на всех процессах решетки
MXLOCC - Максимальное число столбцов в локальных частях матрицы  A, которые принадлежат процессам в столбцах решетки процессов
MXLOCR - Максимальное число строк в локальных частях матрицы  A, которые принадлежат процессам в строках решетки процессов
MXRHSC - Максимальное число столбцов в локальных частях матрицы (вектора)  B, которые принадлежат процессам в столбцах решетки процессов (если  B - вектор, то MXRHSC = 1)
MYCOL - Координата (номер) столбца вызываемого процесса в решетке процессов
MYROW - Координата (номер) строки вызываемого процесса в решетке процессов
N - Число столбцов исходной глобальной матрицы системы уравнений  A и число строк глобальной матрицы (вектора)  B
NB - Число столбцов в блоке, на которые делится исходная матрица  A
NBRHS - Число столбцов в блоке, на которые делится глобальная матрица (вектор)  B (если  B - вектор, то NBRHS = 1)
NPCOL - Число столбцов в решетке процессов
NPROW - Число строк в решетке процессов
NRHS - Число столбцов исходной глобальной матрицы (вектора)  B (если  B - вектор, то NRHS = 1)
RSRC - Номер строки решетки процессов, в которую распределяется первая строка исходной глобальной матрицы

Опишем далее некоторые упрощения и ограничения, которые были сделаны при подготовке примеров использования подпрограмм комплекса, для того чтобы упростить пользователю освоение правил работы с этими подпрограммами.

1. В примерах предполагается, что RSRC = CSRC = 0, что означает, что обе исходные матрицы  A и  B распределяются по решетке процессов, начиная с процесса (0, 0). На самом деле, любой из процессов решетки может быть выбран в качестве начального при распределении матриц.

2. В примерах предполагается, что система уравнений решается при использовании всей исходной распределенной матрицы A (хотя подпрограммы допускают, чтобы решалась система с матрицей, являющейся подматрицей  sub (A) исходной матрицы  A). При указанном предположении параметры, задающие первый элемент подматрицы  A (и B), полагаются равными 1, т.е.  IA = JA = IB = JB = 1. См. раздел документации "Описания параметров подпрограмм, связанных с глобальными массивами".

3. При распределении исходных матриц  A и  B по решетке процессов используется подпрограмма MATINIT, которая заносит с помощью операторов присваивания в соответствующие локальные массивы на каждом из процессов решетки распределенные на него элементы исходных матриц.

4. В примерах предполагается, что ведущая локальная размерность локальных частей матрицы  A и ведущая локальная размерность локальных частей матрицы (вектора)  B являются теми же самыми (одинаковыми) для всех процессов, принадлежащих к одним и тем же строкам решетки процессов (т.е. имеющих одинаковые координаты строк решетки). Переменная MXLLDA равна максимальной ведущей локальной размерности для матрицы  A (обозначаемой LLD_A) из всех строк решетки процессов. Точно так же переменная MXLLDB равна максимальной локальной ведущей размерности для матрицы  B (обозначаемой LLD_B) из всех строк решетки процессов. Однако в общем случае локальные ведущие размерности локальных частей матриц могут отличаться друг от друга для всех процессов решетки.

5. В примерах рассматриваются исходные матрицы  A и  B небольших размеров. При этом размеры блоков, на которые разбиваются эти матрицы, выбираются небольшими. Например, в тесте к подпрограмме, решающей систему с плотной матрицей ( PDGESV.f ), MB = NB = 2. Однако это не является самым лучшим размером блоков для практических задач. Для достижения лучшей производительности более подходящим размером блоков может быть MB = NB = 16, MB = NB = 32 или MB = NB = 64.