並列読み取りに少し問題があります
次のようなテキストファイルがあります。
1 4 30 46
0 2 3 29
1 11 12 -1
1 4 5 -1
0 3 13 14
3 6 7 8
5 10 -1 -1
13 10 -1 -1
5 9 27 -1
そして、私はこれらのintを各プロセスで一度に4つ読み込もうとしています。ファイルの行数はプロセスの数と等しく、すべての行に4つのintが含まれています。
int bufsize, count;
int *buf;
MPI::Status status;
MPI::File top = MPI::File::Open(MPI::COMM_WORLD, "top.txt", MPI::MODE_RDONLY, MPI::INFO_NULL);
MPI::Offset filesize = top.Get_size();
filesize = filesize / sizeof(int);
bufsize = filesize / wasteland_size + 1;
buf = new int[bufsize * sizeof(int)];
top.Set_view(my_rank * bufsize * sizeof(int), MPI_INT, MPI_INT, "native", MPI::INFO_NULL);
top.Read(buf, bufsize, MPI_INT, status);
count = status.Get_count(MPI_INT);
top.Close();
これは私が使用しているコードです。
エラーや警告なしでコンパイルされますが、次の行が出力されます。
540287025 874524723 805969974 857748000
すべてのプロセスに対して。