2014-01-26 61 views
1

我開始爲我的分子動力學代碼學習mpi i/o。首先,我試圖運行此代碼:由mpi文件寫入的文件中無法識別的字符寫入

http://www.mcs.anl.gov/research/projects/mpi/usingmpi2/examples/starting/io3f_f90.htm

編譯和運行之後,我得到了 'testfile的'。但是當我'vim testfile'時,我看到很多無法識別的字符,如'^ A^@^@^@^B^@^@^@^C^@^@^@^D^@^@^@^E^@^@^@^F^@^@^@^G^@ ^」。並且我也無法在gedit中打開它(它表示該文件是未知類型的)

任何想法發生了什麼?我根本沒有修改代碼。

我在Ubuntu上使用了Open MPI 1.7和ifort 13,處理器在我的筆記本電腦上是intel i7(4核/ 8線程)。我相信MPI是有效的。本次測試使用了-np = 4。

感謝

+1

最好是在單獨的問題中發佈獨立問題而不是兩個問題。 – venerik

+0

@francescalus是對的 - MPI IO將輸出寫爲二進制文件,這對於科學計算數據來說是正確的(而不是描述迄今爲止計算狀態的日誌文件等) –

回答

0

MPI I/O是向/從二進制文件。特別是,您的視圖設置爲native

``本土'
數據在此表示被存儲在一個文件中,正是因爲它是在內存中。

如果你引用的是文件的開頭,那麼這對應於寫入0到8的示例文件作爲4字節的小端序列整數。 vim僅代表什麼是非打印ASCII字符。或者,正如hexdump會有它

00000000 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 | ................ |

要繼續Fortran的主題,你可以再次使用MPI I/O,或在正常open聲明stream訪問的串行程序讀取此輸出文件要麼。

+0

謝謝。 @francescalus,所以無論我設置了什麼視圖,MPI I/O都不能輸出ASCII文件?因爲我正在調試並想知道輸出是否是我想要的。或者我可以使用MPI I/O讀取文件並以可讀的方式輸出數據? – futurewind

+0

@futurewind嗯,它們只是字節,所以你可以編碼人類可讀的日誌消息...但正如Jonathan Dursi上面所說,MPI I/O真的是你的數據,所以如果你想輕鬆調試其他方法可能會更好。當然,最終你會想要讀取數據,所以無論你使用哪種數據分析設置都可以幫助檢查相同。 – francescalus