2016-12-05 64 views
-1

我將如何去收集分區的MPI矩陣?如何使用MPI收集行和列分區矩陣?

最初我有一個矩陣,我分解成幾個行和列方式的子矩陣,用於弗洛伊德warshall算法。

當我收集他們無序的子矩陣時。

相反,將適合在我原來的矩陣

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

我讓他們在子矩陣的順序,獲取值的(想象子矩陣是2×2)

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

哪有我重新排序未排序的弗洛伊德矩陣?

+0

C或C++?他們非常獨特。 –

+2

[使用MPI在C中發送二維數組塊的可能的副本](http://stackoverflow.com/questions/9269399/sending-blocks-of-2d-array-in-c-using-mpi) – Zulan

回答

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