Blocos de matriz de dispersão de tamanhos diferentes usando MPI

(Suponha que todas as matrizes sejam armazenadas na ordem das linhas principais.) Um exemplo que ilustra o problema é distribuir uma matriz 10x10 sobre uma grade 3x3, para que o tamanho das sub-matrizes em cada nó se pareça com

|-----+-----+-----|
| 3x3 | 3x3 | 3x4 |
|-----+-----+-----|
| 3x3 | 3x3 | 3x4 |
|-----+-----+-----|
| 4x3 | 4x3 | 4x4 |
|-----+-----+-----|

Já vi muitas postagens no Stackoverflow (comoenviando blocos da matriz 2D em C usando MPI eMatriz de partição MPI em blocos) Mas eles lidam apenas com blocos do mesmo tamanho (nesse caso, podemos simplesmente usarMPI_Type_vector ouMPI_Type_create_subarray e apenas umMPI_Scatterv ligar).

Então, eu estou querendo saber qual é a maneira mais eficiente no MPI de espalhar uma matriz para uma grade de processadores em que cada processador tem um bloco com um tamanho especificado.

P.S. Eu também olheiMPI_Type_create_darray, mas parece não permitir que você especifique o tamanho do bloco para cada processador.

questionAnswers(2)

yourAnswerToTheQuestion