ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
98
В подчиненном процессе основными этапами являются: получение матрицы
В
(операция широковещания), получение строк
A
, вычисление строки
C
, посылка
строки результирующей матрицы
C
главной программе.
Параллельная программа реализована на C и на Fortran. Матрицы считывают-
ся из файлов "inputA.txt", "inputB.txt", далее производится параллельное умножение
матриц и вывод результирующей матрицы в файл "outputC.txt".
Идентификаторы:
max_Arows, max_Acols - максимально возможное число строк и столбцов
матрицы
A;
max_Bcols - максимально возможное число столбцов матрицы
B;
A,B
- исходные матрицы;
C
- результирующая матрица;
arows, acols - количество строк и столбцов матрицы
A;
brows, bcols - количество строк и столбцов матрицы
B;
crows, ccols - количество строк и столбцов матрицы
C;
i,j
- переменные циклов;
fileA - строка – имя файла матрицы
A;
fileB - строка – имя файла матрицы
B;
fileC - строка – имя файла матрицы
C;
mode_r, mode_w - режимы доступа к файлам;
stream – поток;
sender - отправитель информации;
anstype - номер вычисленной строки результирующей матрицы;
buffer – вспомогательная строка;
ans - строка – ответ подчиненного процесса;
myid - номер процесса;
master - номер главного (управляющего) процесса;
numprocs - число процессов;
numsent - число переданных строк матрицы
A;
tag - тег сообщения;
status - статус обмена.
Реализация “С”
#include "mpi.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
const int max_Arows = 110;
1...,90,91,92,93,94,95,96,97,98,99 101,102,103,104,105,106,107,108,109,110,...180