首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在 IBM POWER8 系统上编译和运行 Weather Research and Forecasting 数据(2)

在 IBM POWER8 系统上编译和运行 Weather Research and Forecasting 数据(2)

编译 WPS解压 WPSV3.5.1.TAR.gz 并运行配置脚本,创建 make 文件。运行配置脚本。然后会提示您进行选择:
清单 13. WRF 编译配置脚本的结果
1
2
3
4
5
6
7
8
9
Please select from among the following supported platforms.
     
    1.  Linux ppc64 Power775 xl compilers & MPICH2 comms  (serial)
    2.  Linux ppc64 Power775 xl compilers & MPICH2 comms  (serial_NO_GRIB2)
    3.  Linux ppc64 Power775 xl compilers & MPICH2 comms  (dmpar)
    4.  Linux ppc64 Power775 xl compilers & MPICH2 comms  (dmpar_NO_GRIB2)
    5.  Linux ppc64 BG bglxf compiler with blxlc   (dmpar)
     
Enter selection [1-5] :




选择 3.Linux ppc64 Power775 xl compilers & MPICH2 comms (dmpar)
WPS3.5.1 仍然无法识别最新的 POWER8 系统。它生成一个名为 configure.wps 的文件,其中包含变量定义并会在执行 make 时读取该文件。修改 configure.wps 中的 WRF 相对路径值。
1
WRF_DIR                 =       ../../wrf_arw/WRFV3




备注:在 wrf_arw/WRFV3 后不要有空格。否则会出现错误。
按如下所示修改此字段:
清单 14. 修改字段
1
2
3
4
5
6
7
8
CPP                 = /opt/ibm/xlf/15.1.0/exe/cpp -C -P
MPICH2_SYS          = /opt/ibmhpc/pecurrent/mpich2/gnu
MPI_INC             = -I$(MPICH2_SYS)/include64
MPI_LIB             = -L$(MPICH2_SYS)/lib64 –lmpi
FC                  = xlf95_r
SFC                 = xlf95_r
CC                  = mpicc -DMPI2_SUPPORT -DFSEEKO64_OK
CPPFLAGS            = -DAIX -DIBM4 -DIO_NETCDF -DIO_BINARY -DIO_GRIB1 -DBIT32 -D_MPI




保存更改并执行 ./compile > &compile.log,开始编译工作并将日志写入到 compile.log 文件中。WPS 编译后,将生成这个 exe 文件:
清单 15. 编译成功后会生成 Exe 文件
1
2
3
4
[loadl@tul237p5 WPS]$ ll *.exe
lrwxrwxrwx 1 loadl loadl 23 Aug 12 00:37 geogrid.exe -> geogrid/src/geogrid.exe
lrwxrwxrwx 1 loadl loadl 23 Aug 12 00:37 metgrid.exe -> metgrid/src/metgrid.exe
lrwxrwxrwx 1 loadl loadl 21 Aug 12 00:37 ungrib.exe -> ungrib/src/ungrib.exe




在 POWER8 上运行 WRF要运行 WRF,需要准备 WRF 输入数据,这需要 WPS 提前处理天气输入数据。使用 geogrid.exe 生成静态陆地数据。使用 ungrib.exe 对天气输入 GRIB 气象数据进行解包。使用 metgrid.exe 生成 WRF 的输入,这会将大气数据横向插入到模型域上。使用 real.exe 将该数据纵向插入到模型的坐标上。
图 2. WRF 数据流程
ungrib.exe、geogrid.exe 和 metgrid.exe 在单个进程中执行。Real.exe 和 wrf.exe 在并行模式下执行。这意味着 PE 在交互式模式下同时执行 real.exe 和 wrf.exe。
下面是一个在交互式模式下使用 PE 运行 WRF 的示例。
在启用了 SMT4 的 POWER8 系统上,CPU 数量是核心数量的 4 倍。我建议您使用 nmon 监视系统资源和使用情况,如这个 20 核心 POWER8 系统示例所示:
图 3. nmon 工具读取 CPU 信息
POWER8 芯片很新,以至于 nmon 无法正确识别它的型号,但它可读取 CPU 频率 (4.1GHz) 和 SMT 值 (SMT=4)。
设置 MP_TASK_AFFINITY=core 后,并行任务的最大数量为总核心数。所以在我的 20 核心 POWER8 环境中,该数量为 20。
设置 MP_TASK_AFFINITY=cpu 后,并行任务的最大数量为总的 CPU 数量。所以在我的 20 核心 POWER8 (SMT4) 环境上,该数量为 80。
命令 poe 是 PE 的主要可执行程序,用于调用并行计算任务。Poe 需要一个 hostfile,该文件可描述此主机上可用的 CPU 资源总量。该 hostfile 可能名为 host.list。可在每行上使用 “<hostname>*数量” 来描述资源。例如:
1
2
myhost01*20
myhost02*10




在本例中,我将 hostfile 内容设置为 myhost*80。
然后使用这个 poe 命令启动 WRF 并行计算。
1
poe /home/loadl/project/wrf.exe -hostfile /home/loadl/project/host.list –procs 78




-procs 78 表示共启动了 78 个并行任务。此数量必须小于 hostfile 中描述的总资源数量。
如果设置 MP_TASK_AFFINITY=core 并仍然尝试启动 78 个并行任务,您会获得一个错误:
ERROR:0031-758 AFFINITY:Oversubscribe:78 tasks in total, each task                requires 1 resource, but there are only 20 available resource.Affinity                can not be applied.
ERROR:0031-161 EOF on socket connection with node myhost
我在我的 20 核心 POWER8 机器上使用了不同的设置,对一个 WRF 域模型执行了测试。我发现:
  • 设置 MP_TASK_AFFINITY=cpu 和 procs=78 会得到最佳的性能。在 WRF 运行时,CPU 使用情况与下面所示内容类似: 图 4. 使用设置 MP_TASK_AFFINITY=cpu 和 procs=78 的 CPU 使用情况
  • 设置 MP_TASK_AFFINITY=cpu 和 procs=80。尽管这会用尽所有 CPU 资源,但性能很差,因为没有委托的 CPU 资源来管理 I/O。这会影响总体性能。
  • 设置 MP_TASK_AFFINITY=core 和 procs = 20 很好,但没有设置 MP_TASK_AFFINITY=cpu 时的性能高。WRF 运行时,CPU 使用情况与下面所示内容类似: 图 5. 使用设置 MP_TASK_AFFINITY=core 的 CPU 使用情况
结束语本教程介绍了如何在 POWER8 系统上编译和运行基本的 Weather Research and Forecasting (WRF) Model。XL C/Fortran 编译器和 POWER8 CPU 支持 WRF 并行计算。通过使用 POWER8 CPU,可缩短预报天气的过程并创造更多的商业价值。
返回列表