РЕШЕНИЕ: https://landwatersun.ru/viewtopic.php?id=395#p1476
Как создать пользовательскую функцию для сложения матриц и применить ее к операции MPI.Communicator.world.Reduce?
using System;
using System.Text;
using MPI;
using System.Linq;
using System.Diagnostics;class Hello
{
static void Main(string[] args)
{
using (new MPI.Environment(ref args))
{System.Console.WriteLine("Hello, from process number "
+ MPI.Communicator.world.Rank.ToString() + " of "
+ MPI.Communicator.world.Size.ToString() + ".");Intracommunicator comm = Communicator.world;
int Size=2;
double[,] MatrixA = new double[Size, Size];
double[,] MatrixB = new double[Size, Size];
double[,] MatrixC = new double[Size, Size];
double[,] Result = new double[Size, Size];int i,j,k;
//Инициализация//Инициализация//Инициализация
for (i = 0; i < Size; i++){//строка
for (j=0; j< Size; j++){//столбец
MatrixA[i,j] = 2;
MatrixB[i,j]=3;
MatrixC[i,j] = MPI.Communicator.world.Rank;
}
}Result = comm.Reduce<double[,]>(MatrixC, ???, 0);
if (MPI.Communicator.world.Rank == 0)
for (i = 0; i < Size; i++)
{//строка
for (j = 0; j < Size; j++)
System.Console.Write(Result[i, j]);
System.Console.WriteLine();
}
}
}
}