Fortran大小端问题
Fortran对二进制文件进行读写的时候存在大小端的问题,在前期的编译阶段不容易被发现,在后续的程序运行测试的时候,由于大小端差异引起读取的数据异常,导致程序运行coredump或者计算结果错误,因此建议在迁移前梳理迁移程序中有关二进制文件读写的流程,确认是否存在平台差异导致的大小端问题。
例如:
在从IBM(PowerPC)平台(大端字节序),迁移到鲲鹏平台(小端字节序),需要注意大小端字节序的转换。转换方式如下。
- 方法一:GFortran增加编译选项-fconvert=big-endian使用大端字节序。
- 方法二:open中增加参数类型convert='big_endian'。
OPEN(11,file=TRIM(bin_name),status='old',access='direct',form="Unformatted",&recl=181*360*124*4,convert='big_endian',IOSTAT=io_err)
父主题: Fortran常见迁移问题(架构差异)