199
call AZ_read_update(N_update, update, proc_config, nz, 1, 0)
N_update
– целая переменная, возвращает количество строк на
процессоре;
update
– массив целого типа размерности не меньше, чем
N_update+1, после вызова содержит номера строк в
глобальной нумерации;
nz
– размерность глобальной матрицы (входной параметр).
Два последних параметра вызова процедуры – константы.
После вызова всех рассмотренных выше функций в каждом
процессоре должна быть сформирована размещенная в нем часть
разреженной матрицы, представленная в виде двух массивов:
•
•
массива двойной точности val, в котором хранятся ненулевые
матричные элементы,
целого массива bindx, в котором хранятся номера столбцов
ненулевых матричных элементов (в случае хранения в формате
MSR).
Этот этап целиком и полностью возлагается на программиста и
требует от него некоторой изобретательности. Для VBR формата требуется
сохранять больше информации (в данном пособии мы его рассматривать
не будем). Кроме того, должны быть сформированы векторы правых
частей b и начальное приближение решения x (только расположенные в
данном процессоре части).
Функция преобразования глобальной индексации в локальную
AZ_transform
call AZ_transform(proc_config, external, bindx, val, update,
$ update_index, extern_index, data_org, N_update,
$ NULL, NULL, NULL, NULL, AZ_MSR_MATRIX)
Входные параметры этой процедуры proc_config, bindx, val,
update, N_update рассмотрены выше. Выходные параметры – целые
массивы external, update_index, extern_index, data_org размерности
не меньше, чем N_update + 1 –будут передаваться процедуре решения