Как собрать матрицу разделенную на строки и столбцы с помощью MPI?

Как бы я собрал секционированную матрицу MPI?

Изначально у меня есть матрица, которую я разбиваю на несколько субматриц по строкам и столбцам, используемых для алгоритма Флойда Уоршалла.

Когда я собираю субматрицы, они приходят неупорядоченными.

Вместо того, чтобы получать значения, которые будут соответствовать моей исходной матрице

M[ij] 00, 01, 02, 03, 10, 11...

Я получаю их в порядке подматрицы (представьте себе подматрицу 2×2)

00,01,10,11,02,03,12,13

Как я могу изменить порядок несортированной матрицы Флойда?

-1

Решение

Вы можете использовать этот код, чтобы сделать это

i = 0;
j = 0;
k = 0;
bump = 0;
for (written = 0; written < matrix_dimensions * matrix_dimensions; written += 1) {
matrix[written] = out_of_order_subblocks[k * matrix_dimensions * subblock_dimensions + j * subblock_dimensions * subblock_dimensions + i + bump];
i += 1;
if (i % subblock_dimensions == 0) {
i = 0;
j += 1;
if (j % grid_dimensions == 0) {
j = 0;
bump += subblock_dimensions;
if (bump == subblock_dimensions * subblock_dimensions) {
bump = 0;
k += 1;
}
}
}
}
-1

Другие решения

Других решений пока нет …