爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2538|回复: 11

新系统重装WRF随笔(ubuntu lts 2204版本下若干问题)

[复制链接]
发表于 2023-12-22 17:39:39 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 半_两_蘑_菇 于 2023-12-22 17:47 编辑

前言:近期重拾数值模式知识,结合单位的实际情况,centos已经不适宜作为平台来部署WRF,只能采用Ubuntu系统,多年前安装的时候失败过,饶是心有余悸,这次安装翻阅了一些材料,结合NCAR的官网教程,以及本站最新的帖子(那位老师也是用的Ubuntu安装且帖子时间为今年),经过一段时间的小小尝试,利用所有离线包安装并成功编译WRF,有一些技术细节怕以后遗忘(可能也是各位站友可能碰到的问题),故记录本贴,希望能对大家(本人)有所帮助。

软件概况(版本):
系统:Ubuntu LTS 2204
fortran: GNU fortran
C: GCC 、G++
zlib: 1.2.11
libpng: 1.6.37
jasper: 1.900.1
hdf5: 1.10.5
mpich: 3.3.2
netcdf-c: 4.7.4
netcdf-f: 4.5.3
WRF: 4.5

按以上版本的离线安装包安装是一次成功,顺序如下:
1. zlib→libpng→jasper→hdf5 ,编译过程老三样:configure、 make(make check)、 makeinstll
(注1:此处参考了一个博主的手法,在configure的时候所有的--prefix指向同一个目录,例“/xxxx/netcdf/",以前我不是这么干的,但是这次尝试确实这样做可以,而且还省事。)
(注2:环境变量提前预设:
*** ”XXX“为主目录 ***
export DIR=/XXX/Build_WRF/LIBRARIES
export CC=gcc
export CXX=g++
export FC=gfortran
export FCFLAGS="-m64"
export F77=gfortran
export FFLAGS="-m64"
export JASPERLIB=$DIR/netcdf/lib
export JASPERINC=$DIR/netcdf/include
export LDFLAGS="-L$DIR/netcdf/lib"
export CPPFLAGS="-I$DIR/netcdf/include"
export PATH=$DIR/netcdf/bin:$PATH
export NETCDF=$DIR/netcdf
export PATH=$DIR/mpich/bin:$PATH
export LD_LIBRARY_PATH=${NETCDF}/lib:$LD_LIBRARY_PATH


(注3:zlib不带除--prefix以外的参数;libpng加--prefix和LDFLAGS=-L$DIR/netcdf/lib、CPPFLAGS=-I$DIR/netcdf/include参数;jasper不带除--prefix以外的参数;hdf5加--prefix和--with-zlib=$DIR/netcdf参数)


2.netcdf-c netcdf-f
*** 请再次核对NC库版本 ***
重要:首先做GCC、G++、GFORTRAN降级(2204版本的Ubuntu出厂自带版本是11.x),为什么要做降级以及不做降级如何安装请看后文。

第一步:先换软件包更新源
sudo vim /etc/apt/source.list
末尾加入两行:
deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe
:wq!


更新,终端输入:
sudo apt update
此时会出现错误,终端会显示两串密钥 NO_PUBKEY xxxxxxxxxxxxxx NO_PUBKEY xxxxxxxxxxxxxx

记录这两串key,并分别在终端执行以下两句命令
sudo apt-key adv --kevserver kevserver.ubuntu.com --recv-keys xxxxxxxxxxxxxx
sudo apt-key adv --kevserver kevserver.ubuntu.com --recv-keys xxxxxxxxxxxxxx


再次更新,终端输入:
sudo apt update


此时不报错误即已经把更新源设置好。(注:其实不做这一步是否可以降级我没尝试过,感兴趣可以跳过试试直接降级)


第二步:安装旧版编译器并启用,为保险起见,我降了两个大版本。


分别安装三个编译器的9.5版本,终端输入:
sudo apt-get install gcc-9
sudo apt-get install gfortran-9
sudo apt-get install g++-9


检验是否安装成功(非必要),终端输入以下命令:
ls /usr/bin/gcc*      (此处会返回该系统安装好的所有GCC软件,末尾带版本号,如"GCC-11”)
ls /usr/bin/g++*      (同上)
ls /usr/bin/gfortran*   (同上)


安装完毕后调整默认编译器优先级(可以理解为降级),终端分别输入:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 2
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 1

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 2
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 1



sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-9 2
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-11 1



解释: 上述命令是指将系统默认的相关编译器的优先级进行更改,注意命令行末尾的参数(即“2”和“1”),此处含义为,该值范围为1~50,数值越大,优先级越高,系统默认从最高的优先级调用编译器,上面的例子就是将11.x版本的各编译器优先级改为1,将9.x版本的各编译器优先级改为2,那么系统默认就会用9.x的编译器,从而完成编译器的降级。


检验编译器是否为旧版,终端输入:
gcc --version
g++ --version
gfortran --version
返回值应该均为9.x版本


第三步:安装netcdf库的C版本
编译命令:
./configure --prefix=$DIR/netcdf LDFLAGS=-L$DIR/netcdf/lib CPPFLAGS=-I$DIR/netcdf/include --disable-dap
make
make check
make install




第四步:安装netcdf库的fortran版本

编译命令:
​./configure --prefix=$DIR/netcdf CPPFLAGS=-I$DIR/netcdf/include LD_LIBRARY_PATH=$DIR/netcdf/lib:$LD_LIBRARY_PATH LDFLAGS=-L$DIR/netcdf/lib
make
make check
make install



3.MPICH
如果已经完成降级和NC库的安装,此处的MPI编译会非常简单。
./configure --prefix=$DIR/mpich
make
make check
make install



4.编译WRF
这里就不赘述了,选并行版本,GUN FORTRAN + GCC编译器。


补充:
1.不降级编译器会怎么样?
答:会在安装netcdf库的fortran版本的make checke环节(强行make install可以安装成功)、安装MPICH的环节分别出现ERROR,造成这个ERROR的原因是4.5.3版本的fortran版nc库有一个f90程序里包含了一个小BUG,具体来说是主程序的参数定义为了real型,而子程序传参的参数定义为了integer型,实际操作中其实是可以传进去的只不过数值精度会有变化(个人理解),但是11.x版本的gfortran编译器不允许有这种不匹配的现象(从返回的error信息获知),同样,3.3.2版的MPICH在configure的时候会做系统编译器检查,会检测11.x版本的gfortran编译器“是否接受数值精度不匹配”的选项,而此处会过不了导致MPI无法安装,所以降级是从根源上解决这个问题,同时GCC\G++为了保险起见也一同降级。


MPICH错误信息参考:
checking whether gfortran allows mismatched arguments.no
configure: error: The Fortran compiler gfortran will not compile files that call


2.我是铁头娃不降级怎么说?
答:彦祖你太调皮了,也不是没有办法,但是具体包含的隐患无法估量,主要步骤如下:1,在安装fortran版的NC库的时候,不要make check或者无视该error,直接make install,完成NC库的安装;2.编译MPICH的时候,configure命令改用./configure --prefix=$DIR/mpich FFLAGS=" -std=legacy -hopefully",这样可以跳过 gfortran的规则检查(个人理解),还有一种奇淫巧计是用./configure --prefix=$DIR/mpich --disable-fortran,也能跳过检查,但是咱装这玩意就是为了跑fortran啊,把fortran关了我跑毛线。


3.NCAR的指南怎么样?
答:我个人感觉依托答辩,首先各个库软件的版本不太对(不展开讲),同时最受不鸟是每个库的安装它下面都留一句:
*Note: If XXXX fails to build, you will need to talk to a systems administrator at your institution to resolve the problem. We are not able to support XXXX.

但是它的检验程序还是非常有意义的,编译他们赠送的几个C和FORTRAN的程序,能快速验证你的环境变量、并行计算、两个NC库等是否正常,到这一步返回的都是绿色的"SUCCESS",就确保了后面编译WRF和WPS的畅通无阻。
测试程序样例:

                               
登录/注册后可看大图



来自群组: 成于大气 信达天下

评分

参与人数 1金钱 +20 收起 理由
KIMO23 + 20 赞一个!

查看全部评分

密码修改失败请联系微信:mofangbao
发表于 2023-12-23 21:00:03 | 显示全部楼层
赞!这几年论坛真的被各种深度学习,人工智能AI之类帖子占满……殊不知,其实数值模式才是核心
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

发表于 2023-12-22 17:50:18 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2023-12-25 10:15:19 | 显示全部楼层
请问楼主,centos是因为单位的原因不适宜了么?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-25 10:20:19 | 显示全部楼层
loftydongshi 发表于 2023-12-25 10:15
请问楼主,centos是因为单位的原因不适宜了么?

似乎是因为CENTOS停止维护了,那更新就会停滞,未来会有安全方面的隐患。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-25 10:22:20 | 显示全部楼层
小其其格 发表于 2023-12-23 21:00
赞!这几年论坛真的被各种深度学习,人工智能AI之类帖子占满……殊不知,其实数值模式才是核心

所以打算重回数值模式的赛道
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2023-12-25 12:33:55 | 显示全部楼层
强!我只能老老实实安装ubuntu20.04
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-25 17:42:58 | 显示全部楼层
ayzqs 发表于 2023-12-25 12:33
强!我只能老老实实安装ubuntu20.04

老哥瞅一眼,2004的默认GNU fortran版本是不是9.x?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2023-12-25 22:52:36 | 显示全部楼层
半_两_蘑_菇 发表于 2023-12-25 17:42
老哥瞅一眼,2004的默认GNU fortran版本是不是9.x?

是的,9.3.0
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-27 15:34:36 | 显示全部楼层

那应该安装过程也是一路绿灯
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表