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

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分钟,不要着急.........

论坛上说都是这样的

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

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运行情况

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/28460.html