MPI parallel ioを使用して、複数のプロセスに整数バッファーを同時にファイルに書き込ませようとしています。この目標を達成するために、私はさまざまなWebサイトを検索しました。
そして私は彼らの教えを学ぼうとしました。それらをテストするために、c++で次の簡単なコードを作成しました。
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
#define BUFSIZE 100
using namespace std;
int main(int argc, char *argv[])
{
int myrank, buf[BUFSIZE], rcode;
MPI_File thefile;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
for (int i=0; i<BUFSIZE; i++)
buf[i] = myrank * BUFSIZE + i;
rcode = MPI_File_open(MPI_COMM_WORLD, "testfile", MPI_MODE_CREATE | MPI_MODE_RDWR,
MPI_INFO_NULL, &thefile);
if(rcode != MPI_SUCCESS){
cerr << "Did not open file" << endl;
return EXIT_FAILURE;
}
rcode = MPI_File_set_view(thefile, myrank * (MPI_Offset)BUFSIZE * sizeof(int), MPI_INT, MPI_INT,
"native", MPI_INFO_NULL);
if(rcode != MPI_SUCCESS){
cerr << "Problem setting process view" << endl;
return EXIT_FAILURE;
}
MPI_File_write(thefile, buf, BUFSIZE, MPI_INT, MPI_STATUS_IGNORE);
if(rcode != MPI_SUCCESS){
cerr << "Problem writting file" << endl;
return EXIT_FAILURE;
}
MPI_File_close(&thefile);
MPI_Finalize();
return EXIT_SUCCESS;
}
ただし、Kateでファイルを読み取ろうとすると、ランダムなゴミが発生します。正方形、長方形、!$ "%&!! /記号がたくさんあり、整数はまったくありません。
私が間違っていることは何ですか?