MPI文件读写(1)

  1. 使用MPI的文件读写函数时,文件需为二进制文件,可以使用代码自己进行格式转换
    示例代码:
//将存储三个数的文本文件转换为二进制文件
int r,c,m;	
FILE *fp = fopen(filein, "r");
fscanf(fp, "%d", &r);
fscanf(fp, "%d", &c);
fscanf(fp, "%d", &m);
fclose(fp);

fp = fopen(fileout, "wb");
fwrite(&r, sizeof(int), 1, fp);
fwrite(&c, sizeof(int), 1, fp);
fwrite(&m, sizeof(int), 1, fp);
fclose(fp);
  1. MPI_File_read_at_allMPI_File_read_at_all
int MPIAPI MPI_File_read_at_all(
        MPI_File     file,                   //文件指针
        MPI_Offset   offset,                 //偏移量
  _Out_ void         *buf,                   //读出的缓冲区地址
        int          count,                  //读出的个数
        MPI_Datatype datatype,               //读的数据类型
  _Out_ MPI_Status   *status        
);
/*使用示例
MPI_File fh; 
MPI_Status status;
MPI_File_read_at_all(fh, offset, array, count, MPI_INT, &status);
*/
//此函数使用时所有进程都同时调用,当某一进程执行完毕后,会阻塞直到所有进程都执行完毕为止
//区别于MPI_File_read_at,此函数不用所有进程都同时调用
//相关的使用还有MPI_File_write_at_all,  MPI_File_write_at
  1. MPI_File_open
int MPIAPI MPI_File_open(
        MPI_Comm comm,      //集合通信子
  _In_  char     *filename, //打开的文件名
        int      amode,     //打开模式,包括读写等
        MPI_Info info,      
  _Out_ MPI_File *newfile   //文件指针
);
//本函数也是组函数,只要一个进程想调用此函数,就需要所有进程都使用了这个函数后程序才能继续运行
/*使用示例
MPI_File_open(MPI_COMM_WORLD, "in", MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
MPI_File_open(MPI_COMM_WORLD, "out", MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &fh);
*/
//一般而言,输入输出函数为二进制文件,需要自己进行转换

猜你喜欢

转载自blog.csdn.net/qq_36974075/article/details/82834170
mpi
今日推荐