1. 程式人生 > >MPI檔案讀寫(1)

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);
*/
//一般而言,輸入輸出函式為二進位制檔案,需要自己進行轉換