GRAPES不同平台移植思路总结

| Comments

前言

本文用于总结GRAPES模式在不同平台移植的思路及步骤。不同计算平台架构(PowerPC vs IA、32 bit vs 64 bit)、编译器各有不同(xl,intel,pgi,gcc),移植时需要一步一步进 行修改,保证正确性前提再开始优化。

1. 查看新平台环境

查看新平台环境包括:平台架构,多少位的,编译器是什么,所需软件是否已安装,如干 gmake,以及模式所需外部库netcdf等。

  • 查看平台 uname -a
  • 编译器 which compiler-name ,比如AIX的xlf90,intel的ifort,PGI的pgf90
  • netcdf库 which nc-config ,如果没有,自己到官网上下个自己装,这里要注意的 是安装netcdf的编译器要与模式使用的相同。如果存在,则用 nc-config -a 查看 安装它所用的编译器以及以后使用它时链接库格式

2. 正确性移植

移植要保证正确性,对照原来平台的配置文件中各编译选项,查找新平台编译器功能相同 的编译选项。需要注意以下几个方面的编译选项:

  • 32 bit or 64 bit
  • 保证浮点计算一致性编译选项
  • IO的大端、小端选择,big_endian or little_endian
  • 外部数学库,文件读写库netcdf

基本配置好了,编译程序。一般将编译输出到一个log文件里方便查错。

1
./compile.sh INTEL >log 2>&1

编译完成后,vi打开log文件,查找log中是否有error、Error等字眼。如有,查看其错误 说明,修改。

3. 正确性验证

编译成功后,运行程序,进行正确性验证。正确性验证方法如下:

  • 多转几次,验证结果是否一致,检验浮点计算的一致性
  • 输出数据或绘图,与原平台结果比较。可能有差异,但应很小。
  • 输出数据是否符合实际物理意义

4. 优化

正确性验证后,开始对编译优化,查看编译器帮助,查看优化等级说明,最好选择在保证 正确性前提下最大优化,一般是 -O2-O3

编译后最好再次验证下。

Comments