gpt4 book ai didi

c - 写入 c MPI 中的输出文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:58 26 4
gpt4 key购买 nike

我正在处理这个 MPI 代码,几乎一切正常,但我无法将程序的输出写入文件。这是一些代码来说明我的问题

int main(int argc, char *argv[]){
FILE *filename;
int size, my_rank;
int count =0;
int tag =99;

int limit = 5;
MPI_Init(&argc, &argv);
MPI_Status status;
MPI_Comm_size(MPI_COMM_WORLD,&size);
MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);

if(my_rank ==0)
printf("Process %d started the game and initialized the counter\n\n",my_rank);
MPI_Barrier(MPI_COMM_WORLD);

if (size != 2) {//abort if the number of processes is not 2.
fprintf(stderr, "only 2 processes shall be used for %s\n", argv[0]);
MPI_Abort(MPI_COMM_WORLD, 1);
}
int peer_rank = (my_rank + 1) % 2;
while(count < limit){
filename = fopen("ping_pong_output.txt", "w");
if(my_rank == count % 2){
count++;
MPI_Send(&count, 1, MPI_INT, peer_rank, tag, MPI_COMM_WORLD);
printf("Process %d incremented the count (%d) and sent it to process %d\n\n", my_rank, count, peer_rank);
MPI_Barrier(MPI_COMM_WORLD);
fprintf(filename,"Process %d incremented the count (%d) and sent it to process %d\n", my_rank, count, peer_rank);
} else{
MPI_Barrier(MPI_COMM_WORLD);
MPI_Recv(&count, 1, MPI_INT, peer_rank, tag, MPI_COMM_WORLD,
&status);
MPI_Barrier(MPI_COMM_WORLD);
printf("Process %d received the count from process %d.\n", my_rank, peer_rank);
fprintf(filename,"Process %d received the count.\n", peer_rank);
}
fclose(filename);
}
MPI_Finalize();
return 0;}

我想将 printf 语句的输出写入文件,但代码仅将最后一个 while 循环迭代中的最后一个 printf 输出到文件。如果有人能解决这个问题,我们将不胜感激。

最佳答案

您重复打开输出文件进行写入。默认情况下,这会将其截断为 0 个字节。

将 file open 行移到循环上方(外部),并将 fclose 行移到底部,也在循环外部。

关于c - 写入 c MPI 中的输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23036201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com