Описание слайда:
Транспонирование матрицы
float a[100][100], b[100][100];
int row, xpose, sizeoffloat, myrank;
MPI_status status;
/* транспонирование матрицы а в b */
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
MPI_Type_extent(MPI_FLOAT, &sizeoffloat);
/* создание типа для одной строки - это вектор со 100 float элементами и расстоянием равным 100 */
MPI_Type_vector (100, 1, 100, MPI_FLOAT, &row);
/* создание типа для матрицы упорядоченной по строкам ,
каждая копия новой строки сдвинута друг относительно друга на один элемент) */
MPI_Type_hvector(100, 1, sizeoffloat, row, &xpose);
MPI_Type_commit(xpose);
/* передача матрицы строками и прем ее колонками */
MPI_Sendrecv(a, 1, xpose, myrank, 0, b, 100*100, MPI_FLOAT,
myrank, 0, MPI_COMM_WORLD, &status);