为MPI的每个进程写文件

Writing file for each process of MPI

我写了这部分代码是为了每个级别都有一个文件并查看其内容。我的问题是如何扩展此代码以适用于任意大小。这里和我一样运行4核;我已经知道我的尺寸,所以我用 4 个 if 条件编写代码,我认为应该有更好的方法来处理更多进程。

string local_string = to_string(rank) + base;
ofstream output{ local_string };
if (local_string == "0.txt") {
    for (int i = 0; i < N;i++) {
        output << data[i] << endl; 
    }
}

if (local_string == "1.txt") {
    for (int i = 0; i < N;i++) {
        output <<data[i] << endl;
    }
}

if (local_string == "2.txt") {
    for (int i = 0; i < N;i++) {
        output << data[i] << endl;
    }
}

if (local_string == "3.txt") {
    for (int i = 0; i < N;i++) {
        output << data[i] << endl;
    }
}

因为你是运行多个并行进程你实际上不需要指定条件:

string local_string = to_string(rank) + base;
read the file with the name local_string
and print the content of the file to the output

如果出于调试目的,您可能需要添加一个条件,以便您只打印具有特定等级的进程文件:

    if(rank == rank_to_print_the_file){
       string local_string = to_string(rank) + base;
       read the file with the name local_string
       and print the content of the file to the output
   }

在写入文件之前使用MPI_Barrier将消除我们对每个进程的条件

的想法