为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
将消除我们对每个进程的条件
的想法
我写了这部分代码是为了每个级别都有一个文件并查看其内容。我的问题是如何扩展此代码以适用于任意大小。这里和我一样运行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
将消除我们对每个进程的条件