如何使用MPI收集行和列分区矩阵

How to gather row and column partitioned matrix with MPI?

本文关键字:分区 何使用 MPI      更新时间:2023-10-16

我将如何收集分区的MPI矩阵?

最初,我有一个矩阵,我将其分解为多个行和列的子诊断,用于Floyd Warshall算法。

当我收集子媒体时,它们会无序。

而不是获得适合我原始矩阵

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

我以子矩阵的顺序获取它们(想象一下子矩阵是2x2)

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

如何重新排序未分类的floyd矩阵?

您可以使用此代码来执行

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;
          }
        }
      }
    }