感谢支持
我们一直在努力

ccsm3气候模式在Ubuntu8.10上编译调试的一点心得

1 Ubuntu 8.10 编译环境安装


(1) 安装build-essential。主要是安装g++,c++的编译环境


(2)安装csh,Ubuntu是bash系统,这个东西没有默认安装,这两个都可以通过新立得软件包管理器安装


(3)将make和gmake连接起来,Ubuntu默认的编译命令是make,而ccsm等用的还是gmake


ln -s /usr/bin/make /usr/bin/gmake


2 PGI安装,这个软件主要是编译C和Fortran的一个高效的编译器


进入安装目录后直接执行install即可,然后安装安装提示安装。


现在的Ubuntu版本安装有点问题,会提示/opt/lampp/lampp: line 74: arch: command not found错误


主要是Ubuntu没有arch命令,只有类似的uname -m命令,


因此将install脚本第61行 case “`arch`” in


改为 case “`uname -m`” in即可


然后设置路径,在etc/profile下添加:


PATH=/opt/pgi/linux86/7.0/bin:$PATH


export PATH


MANPATH=$MANPATH:/opt/pgi/linux86/7.0/man


export MANPATH


LM_LICENSE_FILE=/opt/pgi/license.dat


export LM_LICENSE_FILE


export PGI=/usr/pgi


这个pgi是从


破解的license可以从网上搜索到,安装好后登出,再进入执行pgCC -V命令


如果没有提示版权之类的问题,就表示安装成功了


然后再执行


ln -s /opt/pgi/linux86/7.0/bin/pgCC /opt/pgi/linux86/7.0/bin/pgcc


这安装的是pgCC,但是后面ccsm有时会用pgcc

3 mpich2安装,mpich2是并行系统mpi的一个具体实现


下载后按照readme文件执行即可,执行步骤如下


./configure –prefix=/home/root/mpich2-install 2>&1 | tee c.txt


make 2>&1 | tee m.txt


make install 2>&1 | tee mi.txt


这样就可以了,然后是设置path路径,在etc/profile下添加


PATH=/home/root/mpich2-install/bin:$PATH


export PATH


再在etc下添加一个mpd.conf文件,内容为


MPD_SECRETWORD=<secretword>


然后设置文件权限为root可读写,群组和其它访问无


重新登录后执行


mpd & //启动服务


如果没有错误提示,基本就安装好了


4 NetCDF安装,netCDF是一个产生地理信息标注数据的软件


下载后按照install文本提示安装即可:


./configure –prefix=/home/root/netCDF


make check install


然后在etc/profile下添加路径


PATH=/home/root/netCDF/bin:$PATH


export PATH


5 至此ccsm3的编译所需内容已经安装好了,就可以安装ccsm3了


(1) 首先要设置一些环境变量,分别指向mpi和netCDF的路径,在etc/profile中添加


export INC_MPI=/home/root/mpich2-install/include


export LIB_MPI=/home/root/mpich2-install/lib


export INC_NETCDF=/home/root/netCDF/include


export LIB_NETCDF=/home/root/netCDF/lib


不然后面会出一些编译的问题,这个在安装指南中没有说明……………


(2)后面编译时还会出现错误:error: ‘CLK_TCK’ undeclared (first use in this function)


需要修改修改/usr/include/time.h


将下面的宏定义去掉注释即可


# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K (这一行去掉)


# ifndef CLK_TCK


# define CLK_TCK CLOCKS_PER_SEC


# endif


# endif (这一行去掉)


主要是ccsm3支持的linux太老了………..


(3) 修改一个小bug


安装文件中 /ccsm3_0_1_beta14/models/lnd/clm2/src/riverroute/RtmMod.F90


第1186行


use runoffMod      , only : runoff


改为(注意大小写)


use RunoffMod


(4) 然后是建立测试case


在安装文件目录的script下执行,安装脚本


./create_test -testname TER.01a.T31_gx3v5.B.anchorage -testroot /home/maris205/mpi/ccsm3/tst -testid 001  //创建的时候最好不要放到系统文件夹下面,否则会提示没有权限,要自己建立目录


anchorage是一种hpc,这里和一般linux/PGI的环境比较类似,所以选择这个


(5) 修改创建好的脚本文件的一些环境变量 主要在env_mach.anchorage中


setenv DIN_LOC_ROOT      /media/disk/linux系统/inputdata   //输入数据 data目录,这几个变量根据情况具体设置


setenv DOUT_S_ROOT   /home/maris205/mpi/ccsm3/archive/$CASE 输出目录


setenv EXEROOT       /home/maris205/mpi/ccsm3/run/$CASE //可执行文件目录


if(! $?NETCDF_MOD) then


setenv NETCDF_MOD /home/root/netCDF/include   //这个是CDF的路径,好像不设置也没关系


endif


(6) 运行./TER.01a.T31_gx3v5.B.anchorage.001.build


如果上面的都设置的没问题,编译就不会出问题,注意其中在编译POP.F时会用到40分钟,不要着急………


论坛上说都是这样的 http://forum.cgd.ucar.edu/archive/index.php/t-306.html


运行,编译好之后就算入门了,下面就是运行测试脚步了


1 首先设置mpi的运行环境


(1)安装ssh-server,这个是Ubuntu默认没有安装的


sudo apt-get install openssh-server


(2)生成ssh公钥和秘钥


ssh-keygen  ,然后一直回车就好了


然后进入/root/.ssh 目录 cat id_pub.dsa >>authorized_keys


将生成的 authorized_keys文件考到相应的服务器相同目录下即可,注意修改权限


chmod 600 authorized_keys


然后ssh 各个 hostname,根据提示输入yes


下一次再ssh就可以不用输入秘密了


(注意:注意修改hostname需要修改,etc/hostname和etc/hosts对应的名称


在每台机器的etc/hosts中要加入IP和hostname的对应,包括本机在内.


而且要注意Ubuntu的第一行。都设置成127.0.0.1 localhost,而不要设置成主机名,而第二行,127.0.0.1有时会自动设置成本机的hostname,回和下面的设置真正的IP冲突,因此把这一行删掉,或者是重新改一个名字)


(3)测试mpi环境


首先做一个mpd.hosts文件,里面一行写一个要参与运算的主机名


然后启动各个主机上的mpd守护进程


mpdboot -n <启动主机的数量> -f mpd.hosts(的位置)


然后输入mpdtrace -l,应该显示所有已经启动的主机的hostname和IP


再输入mpiexec -n 2 hostname,就可以测试一下具体的mpi运行情况


在执行具体的程序时,要把程序放在各个主机相同的位置上

2 安装并设置Torque的运行环境


Torque主要是用于自动调度mpi资源


(1) Torque安装


Torque的安装有多种方式,这里仅介绍最简单的一种,更多的方式可以参见clustersource的网站介绍。


从http://clusterresources.com/downloads/torque上下载Torque的最新版本


在将要作为“Torque Server”机器上解压并build该torque包,这台机器将会通过在其上运行的pbs_server守护程序来控制和监控所有的计算节点。具体步骤如下:


$ tar -xzvf torqueXXX.tar.gz


$ cd torqueXXX


$ ./configure


$ make


$ make install


[注意:]默认的binary程序安装路径通常会在/usr/local/bin和/usr/local/sbin下,因此就不用再设置路径了


然后运行安装目录下的./torque.setup,会提示


pbs_server: error while loading shared libraries: libtorque.so.2: cannot open shared object file: No such file or directory


这主要是Ubuntu没有将/usr/local/lib加入动态连接库,缺少的这个文件就在那里


因此需要在/etc/ld.so.conf加入该目录,即:


include /usr/local/lib/*.*


然后运行ldconfig来更新,这里因为添加的是所有目录文件,因此会提示有的不是连接库问题,不会有问题,再运行./torque.setup就正确了


(2)Torque测试


首先编辑/var/spool/torque/server_priv/nodes (需要自己建立),加入主机名和cpu的核数目


master  np=4


node01 np=4


……..


node09 np=4


然后,启动主服务器上的pbs_server,pbs_sched,pbs_mom,并把其写到/etc/rc.local里使其能开机自启动,然后启动各个子服务器上的pbs_mom,并加入开机启动,注意子服务器上的/var/spool/torque/server_name应改成主服务器的hostname

3 运行测试


Torque不能在root下运行,因此必须新建立一个普通用户,然后设置和root的权限,然后提交qsub生成的测试脚本即可,原有脚本是mpich的,现在都用mpich2,有命令不兼容


如下


cd $EXEROOT/all


#paste ${PBS_NODEFILE} mpirun.pgfile1 > mpirun.pgfile


#echo local $PROC > mpirun.pgfile


echo “`date` — CSM EXECUTION BEGINS HERE”


#mpirun -p4pg mpirun.pgfile ./$COMPONENTS[1]   //注意,这一行就是mpich2无法识别的,mpich2可以自动分配和监视运行的


mpiexec `cat gforker.cmdline`


wait


echo “`date` — CSM EXECUTION HAS FINISHED”


把那一行改为,


mpiexec -n 1 cpl :


-n 2 clm :


-n 4 pop :


-n 4 csim :


-n 16 cam


实验室这边就几个双路四核的服务器,运行非常慢,资源比较紧张,这个模式还是在大型集群上运行比较好。后面研究还是转到原来的GISS模式上,对资源要求小的多,像EdGCM用的是GISS2,一般pc都可以运行,但是现在不更新了,现在就把GISS modelE这个当前的版本搞熟悉了,作为今后研究的GCMs好了。

赞(0) 打赏
转载请注明出处:服务器评测 » ccsm3气候模式在Ubuntu8.10上编译调试的一点心得
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏