我使用MPI2.2標準寫在C.並行程序我有64位機。MPI_offset的範圍在MPI
/* MPI offset is long long*/
MPI_Offset my_offset; printf ("%3d: my offset = %lld\n", my_rank, my_offset);
int count;
MPI_Get_count(&status, MPI_BYTE, &count);
printf ("%3d: read =%d\n", my_rank, count);
我正在逐字節讀取一個非常大的文件。要平行讀取文件,我使用偏移量設置每個進程的偏移量。我對MPI_offset類型的數據類型有困惑,那"whither it is signed or unsigned"
長?
第二個問題是關於其在MPI_Get_count()函數中使用的「範圍計數變量的」的限制。因爲此功能用於讀取每個進程緩衝區中的所有元素so i think it should also be of the long long type to read such a very large file.
這個文件在硬盤上嗎?你意識到試圖像這樣並行讀取一個文件可能會比單個閱讀器慢得多。 – Janne 2012-02-18 12:58:09
是文件在磁盤上。我正在使用MPICH2並行I/O通過「總字節數/ NP」大小塊並行讀取文件。其中NP是要創建的進程的數量。 – Gopal 2012-02-18 13:24:50
@Janne:如果您擁有專爲並行IO設計的硬件和文件系統(例如Lustre),它當然可以更快。這在HPC中很常見。 – janneb 2012-02-18 14:12:01