因为学校的服务器不给用我,只好在自己的机器上安装CMAQv5.0.2。期间各种折腾,现在终于弄完成了,现在把安装过程记录下来分享给大家。
Ubuntu安装:
之前试过Redhat,CentOS,觉得如果是在自己的机器上安装还是Ubuntu比较好用,友好的界面,流畅的过度动画,完善的包管理器,关键还有国人专门开发的版本,各种贴心啊。下载地址:
http://www.ubuntu.com/download/desktop
http://www.ubuntu.com/download/ubuntu-kylin
第一个是原始版本,我用的第二个kylin版,15.0464位。
如果是在虚拟机上安装没有什么问题。如果是直接安装,用UltraISO制作启动U盘会无法直接进入安装程序,没有关系,进入命令行之后输入live可以进入liveCD模式(类似winPE),然后点击桌面上的安装Ubuntu即可进入安装程序。
如果是安装双系统,需要在windows下安装分区助手,把动态磁盘转换成基本磁盘(如果之前用windows自带工具把磁盘分成四个区及以上的会自动变成动态磁盘),然后除c盘和系统保留的空间保持主分区之外,其余分区转换成逻辑分区。不这么做Ubuntu安装程序很可能无法正确识别分区。我就是在这里纠结很久。
特别提醒1:如果是安装双系统,选择安装类型一定要选择其他,否则会覆盖windows。
特别提醒2:分配磁盘空间的时候很多教程说要弄4个挂载点,其实只用挂载“/”这一个挂载点就够了。
具体安装可以参考:http://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html
安装完成后,获取root权限
打开终端(terminal)输入:
sudo root passwd
设定密码的时候光标不会动滴。
安装中文输入法(没这个查资料很不方便):
参考:http://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html
先在语言支持里面把输入方式改成fcitx。重启系统,在右上的语言栏里面选配置,加入pinyin,wb等输入法。
安装flash(跑模型的时候很无聊滴,看看视频也不错):
系统自动firefox和chromium两个浏览器,如果用系统自带的软件中心只能按照firefox的flash插件。可以访问下面网址:
https://get.adobe.com/cn/flashplayer/
选择APTfor Ubuntu 会下载一个安装包然后自动跳转到软件中心安装。
chromium浏览器有个问题,会每隔十秒左右自动刷新页面。我试网上关闭google即使搜索的方法也没用,我也下载了chrome的正式linux版也没用。但是作为海外党,chrome(chromium)的unblockyouku插件是不可取代的,怎么办?一个临时的解决办法是同时打开chromium和随便其他程序的一个窗口,打开视频之后然后鼠标点击那个程序窗口只要不再次点击chromium就不会刷新了。
安装synapticpackage manager
打开软件中心softwarecenter,搜索synaptic直接点install安装就好。
安装其他应用,现在Windows很多软件都能找到在软件中心(kylin版有两个软件中心,一个原版ubuntu自带,一个专门针对国人优化的版本)找到Ubuntu(linux)的对应版本。我常用软件里面有QQ里面找不到,可以使用网页版或者使用(WineQQ:http://www.ubuntukylin.com/applications/showimg.php?id=23&)。
可以说不玩大型游戏,Ubuntu已经可以取代Windows系统了(其实Steam已经有linux版本了)
到此ubuntu的安装配置基本告一段落。
怕万一系统崩溃,恢复麻烦可以先备份一下系统。
需要先登录到root账号,如果只是在普通账号下使用su命令提示到root权限还是会出错。具体命令:
cd /
tar -cvpzf /media/root/BED4FFD0D4FF8943/backup.tgz--exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys--exclude=/media /
其中/media/root/BED4FFD0D4FF8943/backup.tgz是备份路径和备份名称。具体含义参考:http://os.51cto.com/art/201003/188486.htm
要还原系统,重新安装Ubuntu后在进入root账户,终端输入
cd /
tar -xvpzf /media/sda7/backup.tgz -C/
其中/media/sda7/backup.tgz是备份文件放置的路径。
有说法是在liveCD模式下可以直接使用该命令还原系统,没试过,请大家自行尝试吧。
GCC编译器安装
首先如果有PGI编译器请参照如下链接安装各种库文件:
https://www.pgroup.com/resources/netcdf/netcdf43_pgi2014.htm
我就是因为学校不给PGI许可证才折腾到现在,之前试过intel的学生版编译器也不成功,最后才转投GCC。
Ubuntu 15.04自带的编译器是GCCv4.9.2,但是我必须先把它降级成4.6版。
原因:http://bbs.06climate.com/forum.php?mod=viewthread&tid=34567
根据这个帖子4.7以上的版本编译ioapi会出现Error: 'runspec' of module 'm3utilio', importedat。
里面提到的解决方法我试了,貌似没用。如果哪位大神成功解决请留言,一定向你请教。
参考:http://blog.csdn.net/astrotycoon/article/details/8069621
这里有个trick,那就是Ubuntu默认只有gcc和g++,而没有gfortran降级之前还需要安装gfortran的4.9.2版。
安装gfortran的4.9.2版和gcc4.6命令如下:
sudo apt-get install gfortran gfortran-multilib gcc-4.6gcc-4.6-multilib g++-4.6 g++-4.6-multilib gfortran -4.6 gfortran -4.6-multilib
然后用下面几个命令改变4.6和4.9版本的优先级
sudo update-alternatives --install /usr/bin/gcc gcc/usr/bin/gcc-4.6 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.940
sudo update-alternatives --install /usr/bin/g++ g++/usr/bin/g++-4.6 50
sudo update-alternatives --install /usr/bin/g++ gcc/usr/bin/g++-4.9 40
sudo update-alternatives --install /usr/bin/ gfortran gfortran/usr/bin/ gfortran -4.6 50
sudo update-alternatives --install /usr/bin/ gfortran gfortran/usr/bin/ gfortran -4.9 40
然后使用下面命令看gcc各版本的优先顺序
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
sudo update-alternatives --config gfortran
然后使用下面命令查看当前编译器版本
gcc --version
g++ --version
gfortran –version
确认当前gcc,g++和gfortran都是4.6版本。
库文件的安装
CMAQ的官方说明文档里面说只需要NETCDF,IOAPI两个库,如果需要多核并行再加一个mpich(openmpi也可以,这里只介绍mpich),但其实需要还zlib,HDF5。NETCDF也在4.2及以后版本几个语言版本分开了,很多教程里面说只用装c库和fortran库,但其实c++库也需要安装。
Netcdf c和fortran其实可以独立安装,但是因为要安装c++,zlib和hdf5必须也安装。
另外需要couple的话还需要安装pvm3,这在ioapi和CMAQ配置里面需要加入pvm3的路径,但是我没用到pvm3,所以就不介绍了,需要的同学可以自行加入。
安装zlib
wget是下载命令,如果下载地址不能用请自行下载相关安装压缩包。
sudo make如果不想每次都输入sudo可以先su提升到管理员权限。
我的安装压缩包都放在/home/leo/CMAQ_libs下面,大家可以安装需要改变存放路径。
--prefix前面“-“是两个,复制粘贴的时候很可能被系统吞掉一个,需要注意
cd /home/leo/CMAQ_libs
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/netcdf
make
make check
sudo make install
cd ..
这里很多教程是把zlib,HDF5,NETCDF分别按照在三个不同的目录,但是本人亲测只有把三个安装在同一个目录下,安装netcdf时才不会提示找不到zlib。
装在同一个目录下的方法,参考netcdfpython的安装https://code.google.com/p/netcdf4-python/wiki/UbuntuInstall
安装hdf5
wget https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.14/src/hdf5-1.8.14.tar.gz
tar xf hdf5-1.8.14.tar.gz
cd
./configure --prefix=/usr/local/netcdf --enable-shared--enable-hl --with-zlib=/usr/local/netcdf
make -j 4
make -j 4 check
sudo make -j 4 install
cd ..
如果只用单核makehdf5需要很长时间,这里 –j 4是使用多个核心make可以根据电脑配置改变核心数。
安装netcdfc库
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.3.3.1.tar.gz
tar xf netcdf-4.3.3.1.tar.gz
cd netcdf-4.3.3.1
LDFLAGS=-L/usr/local/netcdf/lib CPPFLAGS=-I/usr/local/netcdf/include./configure --enable-netcdf-4 --enable-dap --enable-shared --prefix=/usr/local/netcdf
make
make check
sudo make install
cd ..
这里--enable-netcdf-4--enable-dap这里很多教程是选择disable掉来解决找不到zlib的问题,但是安装c++库的时候会提示netcdf-4必须enable,所以解决办法就是把zlibhdf5 netcdf安装到一个文件夹下面。
Netcdf make 不能加 –j 4,不然会出错,亲测!
安装netcdfc++库
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-cxx-4.2.tar.gz
tar xf netcdf-cxx-4.2.tar.gz
cd netcdf-cxx-4.2
LDFLAGS=-L/usr/local/netcdf/libCPPFLAGS=-I/usr/local/netcdf/include ./configure --enable-shared--prefix=/usr/local/netcdf
make
make check
sudo make install
cd ..
这里没有--enable-netcdf-4--enable-dap
安装netcdffortran库
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-fortran-4.4.2.tar.gz
tar xf netcdf-fortran-4.4.2.tar.gz
cd netcdf-cxx-4.2
LDFLAGS=-L/usr/local/netcdf/libCPPFLAGS=-I/usr/local/netcdf/include ./configure --enable-shared--prefix=/usr/local/netcdf
make
make check
sudo make install
cd ..
这里还是没有--enable-netcdf-4--enable-dap
另外我下载的时候netcdf-cxx-4.2.tar.gz的名字会莫名其妙的变成4.4.2.tar.gz。大家注意一下。
安装mpich
wget http://www.mpich.org/static/downloads/3.1.4/mpich-3.1.4.tar.gz
tar xf mpich-3.1.4.tar.gz
cd mpich-3.1.4
./configure --prefix=/usr/local/mpich
make
make check
sudo make install
cd ..
这里make也需要很长时间,make-j 4加速能不能用我没有试过,大家自行尝试吧。
设置环境变量
gedit ~/.bashrc
在最后加入
#for netcdf
export NETCDF=/usr/local/netcdf
export PATH=.:$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
#for mpich
export PATH=/usr/local/mpich/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/mpich/lib:${LD_LIBRARY_PATH}
export MANPATH=/usr/local/mpich /share/man:${MANPATH}
保存退出退出
source ~/.bashrc
不得不说ubuntu这个gedit的文本编辑器还是很赞的,习惯使用vi的同学注意ubuntu的vi很奇怪,Centos和Redhat的vi命令好多用不了。我反正彻底放弃在ubuntu下面使用vi了。
使用下面两个命令看看是否安装成功
ncdump
which mipf90
很多教程说要设置zlib和hdf5的环境变量,对于CMAQ真的不用。
ioapi安装
ioapi安装可以是最纠结的,我耗费的很长时间,试了各种教程,各种版本intel和gcc的编译器。
最后可以确定的是网上直接下载的ioapi-3.1.tar.gz如果按照教程在makeconfigure这一步肯定会报错。使用gcc4.7版本以上make步骤会报错。使用wget命令下载也会出错。(还让不让人活了!)
官网下载地址
https://www.cmascenter.org/ioapi/download/ioapi-3.1.tar.gz
最后在如下网页找到解决办法:
https://gcc.gnu.org/wiki/GfortranBuild#ioapi
这个网页的最后提供了一个脚本,可以自动完成ioapi安装,但是脚本里面的下载链接是失效的,需要手动修改,里面的安装目录和NETCDF的路径也需要手动修改。如果不想修改可以使用我修改过的脚本,在附件里下载。
gedit ioapi31.install #新建脚本文件,文件名随意了
然后把修改后的脚本复制进去,保存退出。
sudo chmod +x ioapi31.install #赋予脚本可执行的权限
sudo apt-get install curl
sudo ./ioapi31.install
脚本里面是使用curl下载器下载的,这个ubuntu本身没有需要sudoapt-get install curl安装一下,我试过把curl改成wget结果make会出错。
如果使用我修改过的脚本文件,会按照到/usr/local/ioapi_3.1目录下。
如果没有报错,在/usr/local/ioapi_3.1/Linux2_x86_64gfort目录下输入
ls *.mod
ls libioapi.a
看看有没有生成相关文件
然后
sudo cp -f /usr/local/ioapi_3.1/Linux2_x86_64gfort/libioapi.a/usr/lib64
如果32位系统可以复制到/usr/lib64。这里不复制后面buildCMAQ的时候会提示找不到-lioapi
库文件到此安装完成。
这个脚本运行完以后手动makeconfigure是可以用的,需要加入pvm3或者改动路径的话现在可以自己改了。这个教程里面有加pvm3的部分:http://alei817927.gitbooks.io/newer/content/open_source_projects/compile_and_install.html
安装CMAQv5.0.2
这里需要参考
http://alei817927.gitbooks.io/newer/content/open_source_projects/compile_and_install.html
加入一些库文件的链接
结合下面链接建立bechmark的测试
http://www.airqualitymodeling.org/cmaqwiki/index.php?title=CMAQv5.0.2_Readme_file#netCDF
先下载CMAQ源文件和测试数据
https://www.cmascenter.org/download/software/cmaq/cmaq_5-0-2.cfm?DB=TRUE&CFID=2500372&CFTOKEN=b23a1aad9a21b224-FFF2FAA3-DAC1-814A-26DDFC21E2DA52EA
选择CMAQv5.0.2 Base Model 然后下载CMAQ sourcecode and scripts 和CMAQ benchmark input data就行了,refdata是用来比较自己机器跑出来的结果和官方测试结果的
直接下载链接
ftp://ftp.unc.edu/pub/cmas/SOFTWARE2/MODELS/CMAQ/5.0.2/DATA.CMAQv5.0.2.Apr2014.tar.gz
ftp://ftp.unc.edu/pub/cmas/SOFTWARE2/MODELS/CMAQ/5.0.2/CMAQv5.0.2.Apr2014.tar.gz
解压之后,进入目录解压目录
我是放在/home/leo/CMAQv5.0.2目录里面
两个文件解压之后里面的文件夹结构如下所示
data/
bcon/ <<<<<<< empty, to befilled by the user
cctm/ <<<<<<< empty, to befilled by the user
crop/
dust/
emis/
icon/ <<<<<<< empty, to befilled by the user
jproc/ <<<<<<< empty
lightning/
mcip/
ocean/
procan/
raw/
phot/
这里需要开始转到c-shell,如果系统没有安装输入
sudo apt-get install csh
csh
cd /home/leo/CMAQv5.0.2/scripts
gedit config.cmaq
改前面几行
#> config.cmaq
#> sourced from bldit.<model>
#> model repository location
setenv M3HOME /home/leo/CMAQv5.0.2
setenv M3MODEL${M3HOME}/models
setenv M3DATA ${M3HOME}/data
#=========================================
#> architecture & compiler specific settings
#-----------------------------------------
#> set the COMPILER
# setenv COMPILER intel
# setenv COMPILER pgi
setenv COMPILER gcc
标红的部分第一个改成自己的路径,后面三个默认的是intel加“#”注释掉,然后把gcc前面的“#”去掉。其实这里还可以设置额外的库路径,但是我是参考http://alei817927.gitbooks.io/newer/content/open_source_projects/compile_and_install.html在后面的文档里面加入的。
保存退出后
source config.cmaq
如果报错请检查是否已经转到csh
cd $M3LIB
转到lib路径
把netcdfioapi和mpich复制过来
官网推荐使用ln-s命令做一个软链接,我倾向直接cp复制
cp –rf /usr/local/netcdf/ ./
cp –rf /usr/local/mpich/ ./
cp –rf /usr/local/ioapi_3.1/ ./
如果你安装的文件夹不是以netcdfmpich和ioapi_3.1(全部小写)命名的话,请复制之后使用mv命令把他们改成netcdfmpich和ioapi_3.1。
开始build
cd$M3HOME/scripts/stenex
./bldit.se
./bldit.se_noop
这里到底哪个是给单核的那个是给多核的我看各个教程不一样,已经晕了。但是不用管,都build就好,后面有地方设置单核串行还是多核并行。
cd $M3HOME/scripts/pario
./bldit.pario
上面这一步是为ioapi并行编译的
cd $M3HOME/scripts/jproc
gedit bldit.jproc
改下面几行(“#”号不要)
# set LIB1 = "-L${IOAPI}"
# set LIB2 = "-L${NETCDF}"
# set LIBS = "$LIB1 $LIB2 -lgomp -lnetcdff"
保存退出
$ ./bldit.jproc &> build.log
这里要进入synaptic包管理器把gomp相关的包安装了
这里可能会提示 git命令找不到,我的解决办法是先进入synaptic包管理器把git相关的包装完,然后sudoapt-get install cvs会提示有几个和git不兼容的包让你删除,删除就好了。cvs是5.0.1版本之前的一个编译器,5.0.2以后不用了,结果没想到用来除bug了。
cd $M3HOME/scripts/build
./bldit.bldmake
cd $M3HOME/scripts/mcip/src
gedit Makefile
改下面几行(“#”号不要)intel和PGI编译的部分注释掉或者直接删除
# select gfortran compiler
# NETCDF = /usr/local/netcdf
# IOAPI_ROOT = /root/alei/ioapi/ioapi
# FC = gfortran
# FFLAGS = -O3 -I$(NETCDF)/include -I$(IOAPI_ROOT)/Linux2_x86_64gfort
# LIBS = -L$(IOAPI_ROOT)/Linux2_x86_64gfort -lioapi \
# -L$(NETCDF)/lib -lnetcdf -lnetcdff \
# -lgomp
保存退出(这里有关于pvm3的部分,如果没用也一并删掉)
make
cd $M3HOME/scripts/icon
gedit bldit.icon
改下面几行(“#”号不要)
# set LIB1 = "-lgomp -lnetcdff"
# set NETCDF = "${M3LIB}/netcdf/lib -lnetcdf-lnetcdff"
保存退出
./bldit.icon
gedit bldit.bcon
改下面几行(“#”号不要)
# set LIBS = "$LIB1 $LIB2 -lgomp -lnetcdff"
保存退出
cd $M3HOME/scripts/bcon
./bldit.bcon
cd $M3HOME/scripts/cctm
gedit bldit.cctm
改下面几行(“#”号不要)
# set MPI_INC = ${M3LIB}/mpich/include
# set NETCDF = "${M3LIB}/netcdf/lib -lnetcdf-lnetcdff"
保存退出
./bldit.cctm
开始运行
cd $M3HOME/scripts/icon
./run.icon
cd $M3HOME/scripts/bcon
./run.bcon
cd $M3HOME/scripts/cctm
./run.cctm
如果需要并行
参考:http://www.ace-net.ca/wiki/CMAQ
gdit run.cctm
set PROC = mpi
setenv NPCOL_NPROW "2 2"; set NPROCS = 4
4是调用的核心数2 2是分割的列数行数2*2 =4 如果是6核那就3*2=6 反正就是前面两个数撑起来要等于后面的核心数
文件的最后几行把
set MPI =那几行的注释去掉 并把MPI的路径改一下,我的事/usr/local/mpich/bin是
保存退出
然后./run.cctm
就可以开始跑测试数据了。
想看各个核心的使用情况,可以安装htop
sudo apt-get install htop
htop
教程就写到这,有什么遗漏或者错误,希望大家提出来讨论,谢谢!
fedora22无法联网的情况下rpm安装gcc5.1:http://www.linuxdiyf.com/linux/12804.html
Linux编译安装GCC 5.1.0:http://www.linuxdiyf.com/linux/11923.html