【问题标题】:Unrecognizable characters in the file written by mpi file writempi file write写入的文件中出现无法识别的字符
【发布时间】:2014-02-17 10:14:13
【问题描述】:

我开始为我的分子动力学代码学习 mpi i/o。首先,我尝试运行这段代码:

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。

谢谢

【问题讨论】:

  • 最好单独发布问题,而不是在一个问题中发布两个问题。
  • @francescalus 是正确的 - MPI IO 将输出写入二进制文件,这对于科学计算数据通常是正确的(与描述迄今为止计算状态的日志文件等相反)跨度>

标签: fortran mpi mpi-io


【解决方案1】:

MPI I/O 与 二进制 文件之间存在关联。特别是,您的视图设置为native

``原生''
这种表示形式的数据完全按照内存中的方式存储在文件中。

如果您引用的是文件的开头,那么这对应于示例文件,将 0 到 8 写入为 4 字节 little-endian 整数。 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 访问来读取此输出文件。

【讨论】:

  • 谢谢。 @francescalus,所以无论我设置什么视图,MPI I/O 都无法输出 ASCII 文件?因为我正在调试并且想知道输出是否是我想要的。或者我可以使用 MPI I/O 读取文件并以可读的方式输出数据?
  • @futurewind 嗯,它们只是字节,所以你可以对人类可读的日志消息进行编码......但正如 Jonathan Dursi 上面所说,MPI I/O 真的对于您的数据,因此如果您想轻松调试其他方法可能会更好。当然,您最终会希望读取数据,因此无论您使用哪种数据分析设置都可以帮助进行检查。
猜你喜欢
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多