栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

使用intel编译器编译WRF4.4

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用intel编译器编译WRF4.4

天气研究和预报 (WRF) 模型是一种中尺度数值天气预报系统,在全球范围内用于业务预报和研究目的。

从WRF4.4开始,wrf的代码编译方式有了较大的改变,开始使用GIT命令进行源源码同步,本例使用英特尔编译器2020U4安装 WRF 4.4 模型。

我想这个文档可能对于想要在 HPC 环境中从头开始安装 WRF 的人会有所帮助。使用intel编译器编译出来的程序,效率要高于gcc和gfortran编译出的程序,计算同样的domain会比较节约时间,提高程序性能。 

安装环境

物理主机:3台dell服务器,一台控制器+2台计算节点

共享存储:使用一台存储服务器共享NFS的方式,为了确保网络性能,采用Infiniband 100G互联

操作系统: CentOS 7.9 x86-64

编译器:intel parallel studio xe2020 u4 for Linux

需要的类库
  1. zlib 
  2. libpng (if required)
  3. HDF5
  4. NetCDF
  5. JasPer

建议以上的类库都提前安装好,可以使用yum的epel的依赖库安装除了NETCDF之外的程序,如果你使用了yum安装方法,就需要跳过编译安装的相关说明,并且你要很清楚export的环境变量也会随之发生改变,建议都用编译的方式进行安装,按照我的方式进行。NETCDF是不可以用yum方式安装的。目前epel提供的安装包是4.3.1,即使安装正常,跟wrf4.4一起编译时会发生netcdf.inc找不到的问题:

Not found /home/wrf/wrf_libs_intel/include/netcdf.inc

设置intel编译器的环境变量
export CC=icc
export FC=ifort
export F90=ifort
export CXX=icpc

1. 安装zlib
mkdir wrf_install_intel
cd wrf_install_intel/
wget https://zlib.net/zlib-1.2.12.tar.gz

tar xvf zlib-1.2.11.tar.gz
cd zlib-1.2.12/

./configure --prefix=/home/wrf/wrf_libs_intel/
make
make install

2. 安装 libpng
wget https://onboardcloud.dl.sourceforge.net/project/libpng/libpng16/1.6.37/libpng-1.6.37.tar.gz

tar xvf libpng-1.6.37.tar.gz
cd libpng-1.6.37/

./configure --prefix=/home/wrf/wrf_libs_intel/ 
make
make install

3. 安装HDF5
cd ../
wget https://www.hdfgroup.org/package/hdf5-1-12-1-tar-gz/?wpdmdl=15727&refresh=629dc0d61e9841654505686 -O hdf5.1.12.1.tar.gz
tar xvf hdf5.1.12.1.tar.gz
cd hdf5*
./configure --prefix=/home/wrf/wrf_libs_intel/ --with-zlib=/home/wrf/wrf_libs_intel/ --enable-fortran
make 
make install

4.安装NetCDF

NetCDF下载主页:

netCDF Downloadshttps://downloads.unidata.ucar.edu/netcdf/在netcdf4.2之前C源码和Fortran源码是打包在一起的一个文件,4.2之后要分别下载,注意我们需要C和Fortran这两个版本都编译安装才能正常工作。

cd ../
wget https://downloads.unidata.ucar.edu/netcdf-c/4.8.1/netcdf-c-4.8.1.tar.gzwget https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-c-4.8。1.tar.gz
tar xvf netcdf-c-4.8.1.tar.gz 
cd netcdf-c-4.8.1/

export LD_LIBRARY_PATH=/home/wrf/wrf_libs_intel/lib:$LD_LIBRARY_PATH
export LDFLAGS=-L/home/wrf/wrf_libs_intel/lib
export CPPFLAGS=-I/home/wrf/wrf_libs_intel/include
./configure --prefix=/home/wrf/wrf_libs_intel/ 
make
make install

cd ../
wget https://downloads.unidata.ucar.edu/netcdf-fortran/4.5.4/netcdf-fortran-4.5.4.tar.gz
tar xvf netcdf-fortran-4.5.4.tar.gz 
cd netcdf-fortran-4.5.3/
./configure --prefix=/home/wrf/wrf_libs_intel/ 
make
make install

5. Installing JasPer
cd ../
wget https://www.ece.uvic.ca/~frodo/jasper/software/jasper-1.900.29.tar.gz
tar xvf jasper-1.900.29.tar.gz
./configure --prefix=/home/wrf/wrf_libs_intel/ 
make
make install

如果有编译错误需要使用下面的命令修复后再重新编译安装:

sed -i 's/char *optstr/const char *optstr/g' src/libjasper/jpg/jpg_dummy.c

WRF安装 环境变量 获取wrf4.4的离线安装源文件

从4.4版本起wrf使用git进行在线编译和源码同步:

WRF Model Source Code (WRF, WRFDA, & WRF-Chem):
**Beginning with V4.4, submodules are obtained during compile; therefore this command is required to obtain the WRF code.**
git clone --recursive-submodules https://github.com/wrf-model/WRF

Note: If compiling without internet access, or if you check out another branch other than ‘master,’ issue the following commands while connected to the internet.
git clone https://github.com/wrf-model/WRF.git
git submodule update --init --recursive
After this, you can go offline to compile. If you need to clean the code at any point, use ‘clean -aa’ instead of ‘clean -a’.

To obtain WRF code prior to V4.4, use the following command.
git clone https://github.com/wrf-model/WRF

需要在系统中安装git,可以使用yum install -y git* 的方式安装git工具

安装GIT工具后,使用下面的离线方式获取源码

export NETCDF=/home/wrf/wrf_libs_intel/
export HDF5=/home/wrf/wrf_libs_intel/
git clone https://github.com/wrf-model/WRF.git
cd WRF
git submodule update --init --recursive
./configure 

Output:
checking for perl5... no
checking for perl... found /usr/local/bin/perl (perl)
Will use NETCDF in dir: /home/wrf/wrf_libs_intel/
Will use HDF5 in dir: /home/wrf/wrf_libs_intel/
PHDF5 not set in environment. Will configure WRF for use without.
Will use 'time' to report timing information


If you REALLY want Grib2 output from WRF, modify the arch/Config.pl script.
Right now you are not getting the Jasper lib, from the environment, compiled into WRF.

------------------------------------------------------------------------
Please select from among the following Linux x86_64 options:

  1. (serial)   2. (smpar)   3. (dmpar)   4. (dm+sm)   PGI (pgf90/gcc)
  5. (serial)   6. (smpar)   7. (dmpar)   8. (dm+sm)   PGI (pgf90/pgcc): SGI MPT
  9. (serial)  10. (smpar)  11. (dmpar)  12. (dm+sm)   PGI (pgf90/gcc): PGI accelerator
 13. (serial)  14. (smpar)  15. (dmpar)  16. (dm+sm)   INTEL (ifort/icc)
                                         17. (dm+sm)   INTEL (ifort/icc): Xeon Phi (MIC architecture)
 18. (serial)  19. (smpar)  20. (dmpar)  21. (dm+sm)   INTEL (ifort/icc): Xeon (SNB with AVX mods)
 22. (serial)  23. (smpar)  24. (dmpar)  25. (dm+sm)   INTEL (ifort/icc): SGI MPT
 26. (serial)  27. (smpar)  28. (dmpar)  29. (dm+sm)   INTEL (ifort/icc): IBM POE
 30. (serial)               31. (dmpar)                PATHSCALE (pathf90/pathcc)
 32. (serial)  33. (smpar)  34. (dmpar)  35. (dm+sm)   GNU (gfortran/gcc)
 36. (serial)  37. (smpar)  38. (dmpar)  39. (dm+sm)   IBM (xlf90_r/cc_r)
 40. (serial)  41. (smpar)  42. (dmpar)  43. (dm+sm)   PGI (ftn/gcc): Cray XC CLE
 44. (serial)  45. (smpar)  46. (dmpar)  47. (dm+sm)   CRAY CCE (ftn $(NOOMP)/cc): Cray XE and XC
 48. (serial)  49. (smpar)  50. (dmpar)  51. (dm+sm)   INTEL (ftn/icc): Cray XC
 52. (serial)  53. (smpar)  54. (dmpar)  55. (dm+sm)   PGI (pgf90/pgcc)
 56. (serial)  57. (smpar)  58. (dmpar)  59. (dm+sm)   PGI (pgf90/gcc): -f90=pgf90
 60. (serial)  61. (smpar)  62. (dmpar)  63. (dm+sm)   PGI (pgf90/pgcc): -f90=pgf90
 64. (serial)  65. (smpar)  66. (dmpar)  67. (dm+sm)   INTEL (ifort/icc): HSW/BDW
 68. (serial)  69. (smpar)  70. (dmpar)  71. (dm+sm)   INTEL (ifort/icc): KNL MIC
 72. (serial)  73. (smpar)  74. (dmpar)  75. (dm+sm)   FUJITSU (frtpx/fccpx): FX10/FX100 SPARC64 IXfx/Xlfx

Enter selection [1-75] : 20
------------------------------------------------------------------------
Compile for nesting? (1=basic, 2=preset moves, 3=vortex following) [default 1]: 

Configuration successful! 
------------------------------------------------------------------------
testing for fseeko and fseeko64
fseeko64 is supported
------------------------------------------------------------------------
...
编辑configure.wrf

需要用vim configure.wrf修改相关配置,改为下列的样子

DM_FC           =       mpiifort
DM_CC           =       mpiicc
CC_TOOLS        =      icc
#注意:CC_TOOLS需要按照上面的方式修改。否则源码中的一个standard.c无法正常编译

Compile the code
./compile -j 4 em_real 2>&1 | tee compile.log

需要耐心等待,编译时间大约40分钟左右。

--->                  Executables successfully built                  <---
 
-rwxrwxr-x 1 wrf wrf 40691640 Jul 30 12:35 main/ndown.exe
-rwxrwxr-x 1 wrf wrf 40572760 Jul 30 12:35 main/real.exe
-rwxrwxr-x 1 wrf wrf 40048888 Jul 30 12:35 main/tc.exe
-rwxrwxr-x 1 wrf wrf 44609360 Jul 30 12:35 main/wrf.exe
 
==========================================================================

如果未显示成功编译,需要重新调整配置或参数,重新执行编译,注意:如果重新编译需要先执行./clean -aa,不要使用./clean -a,./configure之后都需要重新修改configure.wrf文件。

参考内容:

Installing WRF from scratch in an HPC using Intel Compilers - Pratiman Homepage

WRF Modeling System Download: New User Registration

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/974823.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号