我正在做一些MPI编程,我已经做了很多搜索和谷歌搜索。我正在紧张的截止日期工作,现在是凌晨2点,所以提前感谢您的回复。
而不是写入这样的文件:
fprintf(fp, "%d %d %.12E %.12E %.12E %d\n", ii, jj, u_x, u_y, pressure, obstacles[ii * params.nx + jj]);
我想使用MPI_file_Iwrite(....buf.....)
这意味着我需要fprintf中与上面完全相同的格式,但需要将其复制到缓冲区(Char数组)。
任何人都可以建议一种方法来轻松做到这一点我有点难过,没有一些非常费力的类型转换和strcpy()
,strcat()
在一个大的for循环等。
谢谢!
答案 0 :(得分:1)
您需要sprintf
将上述格式打印到缓冲区
给出你的例子,这是你需要的C代码的一个例子
tmp = (char *) malloc(SIZE);
strcpy(tmp, filename);
sprintf(filename, "%d %d %.12E %.12E %.12E %d\n", ii, jj, u_x, u_y, pressure, obstacles[ii * params.nx + jj]);
然后是相关的MPI
代码
MPI_File fh;
MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh);
MPI_File_set_view(fh, 0, MPI_INT, MPI_INT, "native", MPI_INFO_NULL);
MPI_File_iwrite(fh, buf, nints, MPI_INT, &request);
MPI_Wait( &request, &status );
MPI_File_close(&fh);
有关完整示例,请参阅here