MPIギャザーは間違った順序で結果を返します

ムーンウォーカー

MPIを使用して行列と行列(A * B)を乗算しようとしています。行列Bを列B = [b1、... bn]に分割し、一連の乗算ci = A * biを実行します。問題は、結果の列を収集しているときに、順序が間違っているように見える場合があることです。したがって、[c1、... cn]の代わりに、たとえば[c2、c1、c4、..]を取得します。

MPI_Scatter(matrix,MM,MPI_INT,part_of_matrix,MM,MPI_INT,0,MPI_COMM_WORLD);

for (i=0; i<n; i++)  {
    get_block_of_matrix(block,part_of_matrix,M,n,i);
    matvect(tmp,val,I,J,M,nnz,block);
    for (j=0; j<M; j++)
        result[M*i+j]=tmp[j];
}


MPI_Gather(result, MM, MPI_INT, res, MM, MPI_INT, 0, MPI_COMM_WORLD);
user0815

上記のコードスニペットからは問題は明らかではありません。完全なソースコードを見ると、関数にたどり着きますtakevect内部のインデックス作成が間違っています。次のようになります。

void takevect(int *temp,int *matr, int size1, int size2, int i) {
   int j;
   for (j=0; j<size1; j++) temp[j]=matr[size1*i+j];
}

size1等しいsize2(そしてmatr対称的である)ので、1つのプロセスを使用するときは幸運です。ご覧のとおり、size2もう必要ありません。

さらに、この関数を完全に削除して、次のように短縮することができます。

MPI_Scatter(S,MM,MPI_INT,buf_S,MM,MPI_INT,0,MPI_COMM_WORLD);

for (i=0; i<local_n; i++)
   matvect(buf_res+i*M,val,I,J,M,nnz,buf_S+i*M);

MPI_Gather(buf_res, MM, MPI_INT, res, MM, MPI_INT, 0, MPI_COMM_WORLD);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Oracleの "order by"句は、結果を間違った順序で返すか、結果が欠落しています

分類Dev

Mutateは間違った順序でデータを返しますdplyrこれはバグですか?

分類Dev

File.isFileは()間違った結果を返しますか?

分類Dev

listviewonClickは間違った結果を返します

分類Dev

DATEのOracleSQL比較は間違った結果を返します

分類Dev

集計+平均は間違った結果を返します

分類Dev

SQL Like with wildcardは、特定の文字で間違った結果を返します

分類Dev

uniqueNは、jの条件で間違った結果を返します

分類Dev

SUM(DISTINCT(column))は、特定の条件で間違った結果を返します

分類Dev

短いClojureコードは間違った結果を返します

分類Dev

StorageFile.GetImagePropertiesAsync()は、画像メタデータでStorageFileQueryResultを使用すると、間違った結果を返します

分類Dev

間違った順序でテーブルを結合する

分類Dev

Postgresがレコードを間違った順序で返す

分類Dev

比較して日付でソートし、Reactで間違った順序を返します

分類Dev

Vlookupはシートの下部近くで間違った結果を返します

分類Dev

window.matchMedia javascriptは、Chromeバージョン54.0.2840.98(64ビット)で間違った結果を返します

分類Dev

Hibernateは間違った結果セットを返し、間違ったクエリを生成します

分類Dev

mysqlはグループで間違った結果を照会します

分類Dev

Analytics API は、ページ分割された結果を取得するときに間違ったユーザー数を返します。

分類Dev

中間結果を保存しないと、Eigenは間違った結果を返します

分類Dev

readdir()は特定の順序で結果を返しますか?

分類Dev

R:greplは間違った順序で一致を出力します

分類Dev

scpは間違った順序で存在をチェックします

分類Dev

ElasticsearchMatchQueryが間違った結果を返しています

分類Dev

Android Studioは、単純な数式の間違った結果を返します

分類Dev

mysql WHERE BETWEEN by dateは間違った結果を返しますか?

分類Dev

一部の関数は、なしではなく間違った結果を返します

分類Dev

メッセージを間違った順序で表示します

分類Dev

LoopBack filter "where and"は、間違った/同じ結果を任意の値で返します

Related 関連記事

  1. 1

    Oracleの "order by"句は、結果を間違った順序で返すか、結果が欠落しています

  2. 2

    Mutateは間違った順序でデータを返しますdplyrこれはバグですか?

  3. 3

    File.isFileは()間違った結果を返しますか?

  4. 4

    listviewonClickは間違った結果を返します

  5. 5

    DATEのOracleSQL比較は間違った結果を返します

  6. 6

    集計+平均は間違った結果を返します

  7. 7

    SQL Like with wildcardは、特定の文字で間違った結果を返します

  8. 8

    uniqueNは、jの条件で間違った結果を返します

  9. 9

    SUM(DISTINCT(column))は、特定の条件で間違った結果を返します

  10. 10

    短いClojureコードは間違った結果を返します

  11. 11

    StorageFile.GetImagePropertiesAsync()は、画像メタデータでStorageFileQueryResultを使用すると、間違った結果を返します

  12. 12

    間違った順序でテーブルを結合する

  13. 13

    Postgresがレコードを間違った順序で返す

  14. 14

    比較して日付でソートし、Reactで間違った順序を返します

  15. 15

    Vlookupはシートの下部近くで間違った結果を返します

  16. 16

    window.matchMedia javascriptは、Chromeバージョン54.0.2840.98(64ビット)で間違った結果を返します

  17. 17

    Hibernateは間違った結果セットを返し、間違ったクエリを生成します

  18. 18

    mysqlはグループで間違った結果を照会します

  19. 19

    Analytics API は、ページ分割された結果を取得するときに間違ったユーザー数を返します。

  20. 20

    中間結果を保存しないと、Eigenは間違った結果を返します

  21. 21

    readdir()は特定の順序で結果を返しますか?

  22. 22

    R:greplは間違った順序で一致を出力します

  23. 23

    scpは間違った順序で存在をチェックします

  24. 24

    ElasticsearchMatchQueryが間違った結果を返しています

  25. 25

    Android Studioは、単純な数式の間違った結果を返します

  26. 26

    mysql WHERE BETWEEN by dateは間違った結果を返しますか?

  27. 27

    一部の関数は、なしではなく間違った結果を返します

  28. 28

    メッセージを間違った順序で表示します

  29. 29

    LoopBack filter "where and"は、間違った/同じ結果を任意の値で返します

ホットタグ

アーカイブ