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

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

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

在本教程中,您将学习如何:
  • 在 IBM POWER8™ 平台上,使用 IBM XL Fortran 和 XL C/C++ 编译器编译 WRF 及其依赖的库
  • 在 POWER8 平台上使用 IBM Parallel Environment™ (PE) 运行 WRF
操作系统信息和目录设置本教程使用的操作系统为 Red Hat Enterprise Linux Server release 6.5 (Santiago) for Power。我使用的软件和源代码版本包括:
  • IBM XL Fortran for Linux v15.1
  • IBM XL C/C++ for Linux v13.1
  • IBM Parallel Environment 1.3.0.8
  • WRF 3.5.1
图 1. 软件依赖关系提示:我建议您创建一个非 root 用户(例如 loadl)来执行编译和安装工作。然后可编译 WRF 及其相关的库并将其安装到 loadl 主目录中。同样,使用 PE 运行并行计算作业时,必须以非 root 用户身份执行它。
清单 1. 本教程中的定义
1
2
3
4
5
6
7
/home/loadl/project/bin --> The folder where the compiled binaries are installed.
/home/loadl/project/include --> The folder where the header files are installed.
/home/loadl/project/lib --> The folder where the libraries are installed.
/home/loadl/project/share --> The folder where the manual, document are installed.
/home/loadl/project/source --> The folder where the source code packages are saved.
/home/loadl/project/netcdf --> The folder where the compiled netcdf are installed.
                               It has sub folders such as bin,include,lib,share.




还需要为用户 loadl 生成一个 SSH 密钥,然后将公钥添加到已授权的密钥中。这样就允许用户 loadl 实现静默登录,这是在此节点上运行 PE 作业的前提条件。
安装和编译 WRF Model在 Linux 上安装 XL Fortran 和 XL C/C++ 编译器使用 root 用户身份安装 XL Fortran 和 XL C/C++ 编译器。备注:XL C/C++ 编译器需要以下包。如果它们不存在,可使用 yum 安装这些包。32 位包具有 *.ppc 扩展名。64 位包使用 *.ppc64 扩展名。
清单 2. XL C/C++ 编译器需要的包
1
2
3
4
5
6
7
8
9
yum install libstdc++*.ppc
yum install gcc
yum install gcc-c++
yum install glibc-devel*.ppc64
yum install glibc-devel*.ppc
yum install libstdc++-devel*.ppc64
yum install compat-libstdc++-33*.ppc
yum install compat-libstdc++-33*.ppc64
yum install ksh




在 Linux 上安装 PE首先请确保您已安装了所有必要的包。PE 需要 bind 和 xinetd 包。(使用 yum 安装 bind 包,安装命令为 yum install bind,然后使用 yum install xinetd 安装 xinetd 包。)然后编辑 /etc/selinux/config 文件并设置 SELINUX=disabled,以禁用 SELinux。
重新启动操作系统,让这些更改生效。
然后以 root 用户身份按照以下步骤操作,安装 PE。
  •       export IBM_PPEDEV_LICENSE_ACCEPT=yes
  •       rpm -i ppedev_pa_license-1.3.0-0.ppc64.rpm
  •       rpm -i ppedev_pa_runtime-1.3.0-0.ppc64.rpm
  •       rpm -i ppedev_pa_hpct-1.3.0-0.ppc64.rpm
  •       export IBM_PPE_RTE_LICENSE_ACCEPT=yes
  •       rpm -i ppe_rte_license-1.3.0.8-s008a.ppc64.rpm
  •       rpm -i ppe_rte_1308-1.3.0.8-s008a.ppc64.rpm
在此包的安装工作末尾,系统会提示推荐的系统设置更改。以 root 用户身份执行这些更改。启动节点设置诊断脚本:
问题 1:net.core.wmem_max 为 124928,但推荐值为 1048576。
1
sysctl -w net.core.wmem_max=1048576




问题 2:net.core.rmem_max 为 124928,但推荐值为 8388608。
1
sysctl -w net.core.rmem_max=8388608




问题 3:net.ipv4.ipfrag_low_thresh 为 196608,但推荐值为 1048576。
1
sysctl -w net.ipv4.ipfrag_low_thresh=1048576




问题 4:net.ipv4.ipfrag_high_thresh 为 262144,但推荐值为 8388608。
1
sysctl -w net.ipv4.ipfrag_high_thresh=8388608




问题 5:nofile 的 ulimit 为 1024,但推荐值为 4096。
1
Update nofile to be 4096 in /etc/security/limits.conf




问题 6:memlock 的 ulimit 为 64,但推荐值为 unlimited。
1
Update memlock to be unlimited in /etc/security/limits.conf




使用 service xinetd restart 重新启动 xinetd。
问题 7:/etc/xinetd.conf 中的 per_source 为 10,但推荐值为 80。
1
Change per_source to 80 in /etc/xinetd.conf




使用 service xinetd restart 重新启动 xinetd。
根据 ulimit 相关设置,设置 /etc/profile 中的 ulimit -n 4096 和 ulimit -l unlimited。然后重新启动 xinetd 服务:
清单 3. 重新启动 xinetd 服务
1
2
3
rpm -i pperte-1.3.0.8-s008a.ppc64.rpm
rpm -i ppe_rte_samples-1.3.0.8-s008a.ppc64.rpm
rpm -i ppertesamples-1.3.0.8-s008a.ppc64.rpm




编译 NetCDF首先,以 loadl 身份登录并执行后续步骤。编译 NetCDF 之前,需要启用系统环境变量:
清单 4. 系统环境变量
1
2
3
4
5
6
7
8
9
10
export CC="xlc_r"
export CFLAGS="-q64 -O3 -qstrict -DIBMR2Fortran"
export CPP="xlc_r -E"
export CXX="xlC_r"
export CXXFLAGS="-q64 -O3 -qstrict"
export CXXCPP="xlC_r -E"
export F77="xlf_r"
export FC="xlf_r"
export F90="xlf90_r"
export FFLAGS="-q64 -O3 -qstrict"




使用 xlc_r 作为 C/C++ 编译器,xlf_r 作为 Fortran 编译器。对于从 NetCDF(和其他相关的库)到 WRF 的所有编译使用此环境变量设置。这么做会使依赖于 WRF 的库能够保持兼容。否则,在 WRF 编译期间调用依赖的库时,会遇到不兼容性错误。
要指定编译后的输出应安装在哪个目标文件夹,可使用此代码:
清单 5. 将编译后的输出安装在目标文件夹中
1
2
3
./configure --prefix=/home/loadl/project/netcdf
make
make install




编译 zlib执行此清单中所示的步骤:
清单 6. 编译 zlib
1
2
3
./configure --prefix=/home/loadl/project
make
make install




编译 JasPer执行此清单中所示的步骤:
清单 7. 编译 JasPer
1
2
3
./configure --prefix=/home/loadl/project
make
make install




编译 libpng执行此清单中所示的步骤:
清单 8. 编译 libpng
1
2
3
4
5
6
export LD_LIBRARY_PATH=/home/loadl/project/lib/ LD_LIBRARY_PATH
export LDFLAGS="-L/home/loadl/project/lib/ -L/home/loadl/project/netcdf/lib"
export CPPFLAGS="-I/home/loadl/project/include/ -I/home/loadl/project/netcdf/include"
./configure --prefix=/home/loadl/project
make
make install




编译 WRF作为编译 WRF 的前提条件,需要启用环境变量:
清单 9. 为 WRF 编译启用环境变量
1
2
3
4
export JASPERLIB=/home/loadl/project/lib
export JASPERINC=/home/loadl/project/include
export WRF_EM_CORE=1
export NETCDF=/home/loadl/project/netcdf




要启用 WRF 的并行计算功能,可使用带 –lmpi 选项的 xlc_r 和 xlf95_r 来执行编译。
首先解压 WRFV3.5.1.TAR.gz 并运行配置脚本,因为这有助于您创建 make 文件。它会生成一个 configure.wrf 文件,其中包含许多变量定义,并且会在执行 make 期间读取该文件。
运行 configure。在提示符下,从支持的平台中进行选择:
  • Linux ppc64 BG /L blxlf compiler with blxlc (dmpar)
  • Linux ppc64 BG /P xlf compiler with xlc (smpar)
  • Linux ppc64 BG /P xlf compiler with xlc (dmpar)
  • Linux ppc64 BG /P xlf compiler with xlc (dm+sm)
  • Linux ppc64 IBM Blade Server xlf compiler with xlc (dmpar)
因为 POWER8 是新版本,所以配置脚本仅将 BG (BlueGene) 识别为 CPU,但这不会影响编译结果。选择第三个选项:Linux ppc64 BG /P xlf compiler with xlc (dmpar)
然后会得到一个提示:
清单 10. WRF 编译配置中的 “compiling for nesting” 提示
1
2
3
4
5
Compile for nesting?
   1=basic
   2=preset moves
   3=vortex following
[default 1]




选择默认设置 1 basic。这会为您的版本生成一个配置模板文件。编辑 configure.wrf 文件。按如下所示更新字段:
清单 11. 更新配置文件中的字段
1
2
3
4
5
6
7
8
9
10
11
SFC   =  xlf95_r -q64 -I/opt/ibmhpc/pecurrent/mpich2/gnu/include64 -L/opt/ibmhpc/pecurrent/
         mpich2/gnu/fast/lib64
SCC   =  xlc_r -q64 -I/opt/ibmhpc/pecurrent/mpich2/gnu/include64 -L/opt/ibmhpc/pecurrent/
         mpich2/gnu/fast/lib64
CCOMP =  xlc_r -q64 -I/opt/ibmhpc/pecurrent/mpich2/gnu/include64 -L/opt/ibmhpc/pecurrent/
         mpich2/gnu/fast/lib64
DM_FC =  xlf95_r -q64 -I/opt/ibmhpc/pecurrent/mpich2/gnu/include64 -L/opt/ibmhpc/pecurrent/
         mpich2/gnu/fast/lib64 -lmpi
DM_CC =  xlc_r -q64 -I/opt/ibmhpc/pecurrent/mpich2/gnu/include64 -L/opt/ibmhpc/pecurrent/
         mpich2/gnu/fast/lib64 -DMPI2_SUPPORT –lmpi
CPP   =  /opt/ibm/xlf/15.1.0/exe/cpp -C -P




然后执行 ./compile em_real >& compile.log,这会执行编译并将编译日志写入 compile.log,调试时可使用该日志。如果编译成功,会生成一个 exe 文件:
清单 12. 生成一个 exe 文件
1
2
3
4
5
6
-bash-4.1$ ll run/*.exe
lrwxrwxrwx 1 loadl loadl 17 Aug 22 07:55 run/ndown.exe -> ../main/ndown.exe
lrwxrwxrwx 1 loadl loadl 15 Aug 22 07:55 run/nup.exe -> ../main/nup.exe
lrwxrwxrwx 1 loadl loadl 16 Aug 22 07:55 run/real.exe -> ../main/real.exe
lrwxrwxrwx 1 loadl loadl 14 Aug 22 07:55 run/tc.exe -> ../main/tc.exe
lrwxrwxrwx 1 loadl loadl 15 Aug 22 07:53 run/wrf.e

返回列表