MPI檔案讀寫(1)
阿新 • • 發佈:2018-11-16
- 使用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);
- 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
- 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);
*/
//一般而言,輸入輸出函式為二進位制檔案,需要自己進行轉換