1

2Dブロックの循環分散配列をファイルに書き込む際に問題が発生しました。

私はこれを試しました:

    rc=MPI_File_open(MPI_COMM_WORLD, rez, MPI_MODE_WRONLY, MPI_INFO_NULL, &cFile);
    if(rc){printf("Failed to open file! Error: %d \n", rc);MPI_Finalize(); 
    fflush(stdout);}
    else
    {
     MPI_File_write_all(cFile, MatC, loccC*locrC, compa, &status);    
    }

..。

    rc=MPI_File_open(MPI_COMM_WORLD, rez, MPI_MODE_WRONLY, MPI_INFO_NULL, &cFile);
    if(rc){printf("Failed to open file! Error: %d \n", rc);MPI_Finalize(); 
    fflush(stdout);}
    else
    {
     MPI_File_write_ordered(cFile, MatC, loccC*locrC, compa, &status);    
    }

..。

    rc=MPI_File_open(MPI_COMM_WORLD, rez, MPI_MODE_WRONLY, MPI_INFO_NULL, &cFile);
    if(rc){printf("Failed to open file! Error: %d \n", rc);MPI_Finalize(); 
    fflush(stdout);}
    else
    {
     MPI_File_write_shared(cFile, MatC, loccC*locrC, compa, &status);    
    }

この投稿には何も見つかりませんでした(ただし、ファイルを読み取って2dブロック巡回分散配列にフォーマットする方法(この投稿を使用して成功しました)): MPIIO読み取りおよび書き込みブロック巡回行列

私のひどい英語でごめんなさい:(

4

1 に答える 1

0

MPI IO Reading and Writing Block Cyclic Matrixという投稿を使用したと述べました。行列 MatC の次元など、いくつかのことを仮定する必要があります。m 行と n 列があると仮定しましょう。MatC のブロックの次元は、m_b と n_b であると仮定しましょう。プロセッサの数が nproc で、そのランクの proc が変数 node に保存されているとします。また、p と q の例では、2D トーラス (プロセッサ グリッド) の次元を知っている必要があります。その方法は次のとおりです。

    int dims[]={m, n}, dargs[]={m_b, n_b}, distribs[]={MPI_DISTRIBUTE_CYCLIC, MPI_DISTRIBUTE_CYCLIC}, nproc, dim[]={p, q};
    char nat[]="native";
    MPI_Datatype dcarray, compa; //don't know what type compa is
    ...
    MPI_Type_create_darray(nproc, node, 2, dims, distribs, dargs, dim, MPI_ORDER_C, compa, &dcarray); 
    MPI_Type_commit(&dcarray);
    rc=MPI_File_open(comm, rez, MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &cFile);
    if(rc){printf("Failed to open file! Error: %d \n", rc);MPI_Finalize(); fflush(stdout);}
    else
    {
        MPI_File_set_view(cFile, 0, compa, dcarray, nat, MPI_INFO_NULL);
        MPI_File_write_all(cFile, MatC, locrC*loccC, compa, &status);    
    }
    MPI_File_close(&cFile);
于 2013-02-10T13:56:43.187 に答える