柚子快報(bào)邀請(qǐng)碼778899分享:CESM2.1.3 移植記錄
柚子快報(bào)邀請(qǐng)碼778899分享:CESM2.1.3 移植記錄
前言
這次是在學(xué)院超算上配置cesm的運(yùn)行環(huán)境,由于有上一次的記錄:CESM移植記錄 可以參考,同時(shí)由于多次安裝相比以前對(duì)cesm需求的環(huán)境又有了更深的認(rèn)識(shí),因此更新一下之前的記錄,補(bǔ)充之前比較模糊的一些細(xì)節(jié)。
這次用到的編譯器的并行運(yùn)算是超算上自帶的,因此直接導(dǎo)入就行,不需要自己安裝。 編譯器:intel編譯器 并行運(yùn)算:mpi
module load compiler/2021.3.0
module load mpi/2021.3.0
安裝包存放路徑是 /share/home/dq060/install_software/install_cesm/ 安裝目錄是 /share/home/dq060/software/libcesm/ 源代碼存放目錄是 /share/home/dq060/model/cesm 其中,/share/home/dq060 是我賬號(hào)的home目錄,請(qǐng)自行進(jìn)行替換。
軟件安裝
注意:在安裝之前可能需要退出anaconda的虛擬環(huán)境,我在安裝時(shí)遇到過(guò)由于(似乎)存在python3的問(wèn)題導(dǎo)致perl的一些模塊和cmake的安裝失敗 另注:以前安裝時(shí)以為git和svn是必須的,因此花了很多時(shí)間安裝svn,但后來(lái)發(fā)現(xiàn)git和svn只是用來(lái)下載cesm的源碼的,如果已經(jīng)有完整源碼了,就無(wú)需安裝這兩個(gè)軟件了,在最后把我下載好的4個(gè)版本的cesm源碼打包分享出來(lái),只要直接解壓就可以用了。
1. perl5
perl5 這次的安裝與之前有較多的補(bǔ)充,為了區(qū)分,把 perl5 的版本升級(jí)成了 5.36.1,安裝包可以自行在GitHub下載,或者用回之前的版本也行,改改腳本里的版本號(hào)就可以了。
01_perl5.sh
export CC=icc
export CXX=icpc
export CPP='icc -E'
export CXXCPP='icpc -E'
export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CPPFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export F77=ifort
export FC=ifort
export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export FCLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
DIR=/share/home/dq060/software/libcesm/perl5
tar -xvf perl-5.36.1.tar.gz
cd perl-5.36.1
./Configure -des -Dusethreads -Dprefix=${DIR}
make
make test
make install
安裝好了之后在 ~/.bashrc 中直接配置包括perl5在內(nèi)的環(huán)境變量,這樣之后安裝完其他軟件之后就無(wú)需重復(fù) source ~/.bashrc 了,環(huán)境變量可參考最后的 env_cesm.sh 。不提前配置是因?yàn)榘惭bperl5時(shí)如果存在 CPATH 變量會(huì)導(dǎo)致循環(huán)include帶來(lái)的異常
# perl5
export PATH=/share/home/dq060/software/libcesm/perl5/bin:$PATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/perl5/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/perl5/lib:$LD_LIBRARY_PATH
用 perl --version 驗(yàn)證
This is perl 5, version 36, subversion 1 (v5.36.1) built for x86_64-linux-thread-multi
Copyright 1987-2023, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at https://www.perl.org/, the Perl Home Page.
相比上次的補(bǔ)充 cesm 運(yùn)行必須的perl模塊有 Alien::LibXML、 Alien::Libxml2、 XML::LibXML,需要提前裝好,否則之后開(kāi)始編譯 cesm 的 case 時(shí),會(huì)報(bào)perl找不到某些模塊的錯(cuò)。 以下過(guò)程需要網(wǎng)絡(luò)連接,不需要網(wǎng)絡(luò)的安裝過(guò)程我自己試了一半就放棄了,太麻煩了
# 以下命令查看安裝了哪些模塊,可用來(lái)前后對(duì)照
# find `perl -e 'print "@INC"'` -name '*.pm' -print
# find `perl -e 'print "@INC"'` -name '*.pm' -print | grep XML
##############能聯(lián)網(wǎng)情況
# 利用cpan直接安裝Alien::LibXML,會(huì)自動(dòng)下載安裝所有依賴(lài)模塊
cpan install Alien::LibXML
cpan install Alien::Libxml2
# XML::LibXML依賴(lài)于 XML::SAX
cpan install XML::SAX
# 手動(dòng)安裝XML::LibXML,因?yàn)槲疫@里35huge_mode的test不通過(guò),通過(guò)修改35huge_mode.t使其跳過(guò)該項(xiàng)測(cè)試,最終編譯結(jié)果不影響使用,或者在make之后直接make install
tar -xvf XML-LibXML-2.0208.tar.gz
cd XML-LibXML-2.0208
perl Makefile.PL
make
# 修改35huge_mode.t
# 把其中
# if (XML::LibXML::LIBXML_VERSION() < 20700) {
# plan skip_all => "XML_PARSE_HUGE option not supported for libxml2 < 2.7.0";
# }
# else {
# plan tests => 5;
# }
# 改為
# plan skip_all => "skip this test";
# 繼續(xù)進(jìn)行test和install
make test
make install
如果不聯(lián)網(wǎng),需要自己在cpan官網(wǎng)下對(duì)應(yīng)模塊的安裝包,再一個(gè)個(gè)手動(dòng)編譯安裝,折騰了一下午,發(fā)現(xiàn)才只裝了一半,而且發(fā)現(xiàn)中途某個(gè)包的 make test 似乎仍然需要聯(lián)網(wǎng),所以直接放棄了,不過(guò)大致需要的前置模塊如下所示,可以參考一下:
##############不能聯(lián)網(wǎng)情況
# 依次安裝
# inc::latest
cd ..
tar -xvf inc-latest-0.500.tar.gz
cd inc-latest-0.500
perl Makefile.PL
make
make test
make install
# MRO::Compat
cd ..
tar -xvf MRO-Compat-0.15.tar.gz
cd MRO-Compat-0.15
perl Makefile.PL
make
make test
make install
# Params::Util
cd ..
tar -xvf Params-Util-1.102.tar.gz
cd Params-Util-1.102
perl Makefile.PL
make
make test
make install
# Sub::Install
cd ..
tar -xvf Sub-Install-0.929.tar.gz
cd Sub-Install-0.929
perl Makefile.PL
make
make test
make install
# Data::OptList
cd ..
tar -xvf Data-OptList-0.114.tar.gz
cd Data-OptList-0.114
perl Makefile.PL
make
make test
make install
# Sub::Exporter
cd ..
tar -xvf Sub-Exporter-0.989.tar.gz
cd Sub-Exporter-0.989
perl Makefile.PL
make
make test
make install
# Capture::Tiny
cd ..
tar -xvf Capture-Tiny-0.48.tar.gz
cd Capture-Tiny-0.48
perl Makefile.PL
make
make test
make install
# Test::FailWarnings
cd ..
tar -xvf Test-FailWarnings-0.008.tar.gz
cd Test-FailWarnings-0.008
perl Makefile.PL
make
make test
make install
# Data::Section
cd ..
tar -xvf Data-Section-0.200008.tar.gz
cd Data-Section-0.200008
perl Makefile.PL
make
make test
make install
# Test::More::UTF8
cd ..
tar -xvf Test-More-UTF8-0.05.tar.gz
cd Test-More-UTF8-0.05
perl Makefile.PL
make
make test
make install
# Test::Warnings
cd ..
tar -xvf Test-Warnings-0.031.tar.gz
cd Test-Warnings-0.031
perl Makefile.PL
make
make test
make install
# Text::Template
cd ..
tar -xvf Text-Template-1.61.tar.gz
cd Text-Template-1.61
perl Makefile.PL
make
make test
make install
# Try::Tiny
cd ..
tar -xvf Try-Tiny-0.31.tar.gz
cd Try-Tiny-0.31
perl Makefile.PL
make
make test
make install
# Software::License
cd ..
tar -xvf Software-License-0.104004.tar.gz
cd Software-License-0.104004
perl Makefile.PL
make
make test
make install
# Module::Build
cd ..
perl Makefile.PL
make
make test
make install
# Importer
cd ..
tar -xvf Importer-0.026.tar.gz
cd Importer-0.026
perl Makefile.PL
make
make test
make install
# Term::Table
cd ..
tar -xvf Term-Table-0.016.tar.gz
cd Term-Table-0.016
perl Makefile.PL
make
make test
make install
# Test2::V0
cd ..
tar -xvf Test2-Suite-0.000155.tar.gz
cd Test2-Suite-0.000155
perl Makefile.PL
make
make test
make install
# Test::Fatal
cd ..
tar -xvf Test-Fatal-0.017.tar.gz
cd Test-Fatal-0.017
perl Makefile.PL
make
make test
make install
# Test::Needs
cd ..
tar -xvf Test-Needs-0.002010.tar.gz
cd Test-Needs-0.002010
perl Makefile.PL
make
make test
make install
# URI::file
cd ..
tar -xvf URI-5.19.tar.gz
cd URI-5.19
perl Makefile.PL
make
make test
make install
# File::chdir
cd ..
tar -xvf File-chdir-0.1011.tar.gz
cd File-chdir-0.1011
perl Makefile.PL
make
make test
make install
# Sort::Versions
tar -xvf Sort-Versions-1.62.tar.gz
cd Sort-Versions-1.62
perl Makefile.PL
make
make test
make install
# Path::Tiny
cd ..
tar -xvf Path-Tiny-0.144.tar.gz
cd Path-Tiny-0.144
perl Makefile.PL
make
make test
make install
# Archive::Extract
cd ..
tar -xvf Archive-Extract-0.88.tar.gz
cd Archive-Extract-0.88
perl Makefile.PL
make
make test
make install
# File::Which
cd ..
tar -xvf File-Which-1.27.tar.gz
cd File-Which-1.27
perl Makefile.PL
make
make test
make install
# FFI::CheckLib
cd ..
tar -xvf FFI-CheckLib-0.31.tar.gz
cd FFI-CheckLib-0.31
perl Makefile.PL
make
make test
make install
# Alien::Base
cd ..
tar -xvf Alien-Build-2.80.tar.gz
cd Alien-Build-2.80
perl Makefile.PL
make
make test
make install
# Shell::Guess
cd ..
tar -xvf Shell-Guess-0.09.tar.gz
cd Shell-Guess-0.09
perl Makefile.PL
make
make test
make install
# Shell::Config::Generate
cd ..
tar -xvf Shell-Config-Generate-0.34.tar.gz
cd Shell-Config-Generate-0.34
perl Makefile.PL
make
make test
make install
# Alien::Base::ModuleBuild
cd ..
tar -xvf Alien-Base-ModuleBuild-1.17.tar.gz
cd Alien-Base-ModuleBuild-1.17
perl Build.PL
./Build
./Build test
./Build install
# Alien:LibXML
tar -xvf Alien-LibXML-0.004.tar.gz
cd Alien-LibXML-0.004
perl Build.PL
./Build # 這一步似乎要聯(lián)網(wǎng)下載libxml2,看看后續(xù)怎么改
./Build test
./Build install
# Alien::Build::Plugin::Download::GitLab
cd ..
tar -xvf Alien-Build-Plugin-Download-GitLab-0.01.tar.gz
cd Alien-Build-Plugin-Download-GitLab-0.01
perl Makefile.PL
make
make test
make install
# Mozilla::CA
cd ..
tar -xvf Mozilla-CA-20221114.tar.gz
cd Mozilla-CA-20221114
perl Makefile.PL
make
make test
make install
# Net::SSLeay
cd ..
tar -xvf Net-SSLeay-1.92.tar.gz
cd Net-SSLeay-1.92
# IO::Socket::SSL
cd ..
tar -xvf IO-Socket-SSL-2.083.tar.gz
cd IO-Socket-SSL-2.083
# Alien::Libxml2
cd ..
tar -xvf Alien-Libxml2-0.19.tar.gz
cd Alien-Libxml2-0.19
# XML::LibXML,修改35huge_mode.t使其跳過(guò)該項(xiàng)測(cè)試
cd ..
tar -xvf XML-LibXML-2.0208.tar.gz
cd XML-LibXML-2.0208
==下面的軟件安裝均和以前一樣,不展開(kāi)了,細(xì)節(jié)可參考 CESM移植記錄 ==
2. cmake
02_cmake.sh
export CC=icc
export CXX=icpc
export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export F77=ifort
export FC=ifort
export F90=ifort
export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CPP='icc -E'
export CXXCPP='icpc -E'
DIR=/share/home/dq060/software/libcesm/cmake
tar -xvf cmake-2.8.12.2.tar.gz
cd cmake-2.8.12.2
./bootstrap --prefix=${DIR}
make
make install
配置cmake環(huán)境變量。
# cmake
export PATH=/share/home/dq060/software/libcesm/cmake/bin:$PATH
用 cmake --version 驗(yàn)證
cmake version 2.8.12.2
4. zlib
04_zlib.sh
export CC=icc
export CXX=icpc
export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export F77=ifort
export FC=ifort
export F90=ifort
export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CPP='icc -E'
export CXXCPP='icpc -E'
DIR=/share/home/dq060/software/libcesm/zlib
tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=${DIR}
make
make check
make install
配置 zlib 環(huán)境變量。
# zlib
export CPATH=/share/home/dq060/software/libcesm/zlib/include:$CPATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/zlib/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/zlib/lib:$LD_LIBRARY_PATH
5. hdf5
05_hdf5.sh
export CC=mpiicc
export CXX=mpiicpc
export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export F77=mpiifort
export FC=mpiifort
export F90=mpiifort
export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CPP='icc -E'
export CXXCPP='icpc -E'
DIR=/share/home/dq060/software/libcesm/hdf5
tar -xvf hdf5-1.10.4.tar.gz
cd hdf5-1.10.4
./configure --with-zlib=/share/home/dq060/software/libcesm/zlib --prefix=${DIR} --enable-fortran --enable-fortran2003 -enable-parallel --with-pic
make
make check
make install
配置 hdf5 環(huán)境變量。
# hdf5
export PATH=/share/home/dq060/software/libcesm/hdf5/bin:$PATH
export CPATH=/share/home/dq060/software/libcesm/hdf5/include:$CPATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/hdf5/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/hdf5/lib:$LIBRARY_PATH
6. pnetcdf
06_pnetcdf.sh
export CC=mpiicc
export CXX=mpiicpc
export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel -fPIC'
export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel -fPIC'
export F77=mpiifort
export FC=mpiifort
export F90=mpiifort
export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel -fPIC'
export CPP='mpiicc -E'
export CXXCPP='mpiicpc -E'
DIR=/share/home/dq060/software/libcesm/pnetcdf
tar -xvf pnetcdf-1.12.0.tar.gz
cd pnetcdf-1.12.0
./configure --prefix=${DIR} --enable-relax-coord-bound
make
make check
make install
配置 pnetcdf 環(huán)境變量
# pnetcdf
export PATH=/share/home/dq060/software/libcesm/pnetcdf/bin:$PATH
export CPATH=/share/home/dq060/software/libcesm/pnetcdf/include:$CPATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/pnetcdf/lib:$LD_LIBRARY_PATH
export MANPATH=/share/home/dq060/software/libcesm/pnetcdf/share/man:$MANPATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/pnetcdf/lib:$LIBRARY_PATH
7. netcdf-c
07_netcdf_c.sh
export CC=mpiicc
export CXX=mpiicpc
export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export F77=mpiifort
export FC=mpiifort
export F90=mpiifort
export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CPP='icc -E'
export CXXCPP='icpc -E'
export CPPFLAGS='-I/share/home/dq060/software/libcesm/hdf5/include -I/share/home/dq060/software/libcesm/pnetcdf/include'
export LDFLAGS='-L/share/home/dq060/software/libcesm/hdf5/lib -L/share/home/dq060/software/libcesm/pnetcdf/lib'
DIR=/share/home/dq060/software/libcesm/netcdf
tar -xvf netcdf-c-4.7.4.tar.gz
cd netcdf-c-4.7.4
./configure --prefix=${DIR} --enable-pnetcdf --disable-dap
make
make check
make install
配置 netcdf 環(huán)境變量。
# netcdf
export PATH=/share/home/dq060/software/libcesm/netcdf/bin:$PATH
export CPATH=/share/home/dq060/software/libcesm/netcdf/include:$CPATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/netcdf/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/netcdf/lib:$LD_LIBRARY_PATH
export MANPATH=/share/home/dq060/software/libcesm/netcdf/share/man:$MANPATH
用 nc-config --all 驗(yàn)證
This netCDF 4.7.4 has been built with the following features:
--cc -> mpiicc
--cflags -> -I/share/home/dq060/software/libcesm/netcdf/include -I/share/home/dq060/software/libcesm/hdf5/include -I/share/home/dq060/software/libcesm/pnetcdf/include
--libs -> -L/share/home/dq060/software/libcesm/netcdf/lib -lnetcdf
--static -> -lpnetcdf -lhdf5_hl -lhdf5 -lm -lz
--has-c++ -> no
--cxx ->
--has-c++4 -> no
--cxx4 ->
--has-fortran -> yes
--fc -> mpiifort
--fflags -> -I/share/home/dq060/software/libcesm/netcdf/include -I/share/home/dq060/software/libcesm/netcdf/include
--flibs -> -L/share/home/dq060/software/libcesm/netcdf/lib -lnetcdff
--has-f90 ->
--has-f03 -> yes
--has-dap -> no
--has-dap2 -> no
--has-dap4 -> no
--has-nc2 -> yes
--has-nc4 -> yes
--has-hdf5 -> yes
--has-hdf4 -> no
--has-logging -> no
--has-pnetcdf -> yes
--has-szlib -> no
--has-cdf5 -> yes
--has-parallel4 -> yes
--has-parallel -> yes
--prefix -> /share/home/dq060/software/libcesm/netcdf
--includedir -> /share/home/dq060/software/libcesm/netcdf/include
--libdir -> /share/home/dq060/software/libcesm/netcdf/lib
--version -> netCDF 4.7.4
8. netcdf-fortran
注意,兩個(gè)要裝在同一目錄下 參數(shù)中除了之前的 hdf5 和 pnetcdf 外,還要帶上上一步的 netcdf-c。
08_netcdf_f.sh
export CC=mpiicc
export CXX=mpiicpc
export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export F77=mpiifort
export FC=mpiifort
export F90=mpiifort
export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CPP='icc -E'
export CXXCPP='icpc -E'
export CFLAGS=$(nc-config --cflags)
export CPPFLAGS='-I/share/home/dq060/software/libcesm/netcdf/include -I/share/home/dq060/software/libcesm/hdf5/include -I/share/home/dq060/software/libcesm/pnetcdf/include'
export LDFLAGS='-L/share/home/dq060/software/libcesm/netcdf/lib -L/share/home/dq060/software/libcesm/hdf5/lib -L/share/home/dq060/software/libcesm/pnetcdf/lib'
DIR=/share/home/dq060/software/libcesm/netcdf
tar -xvf netcdf-fortran-4.5.3.tar.gz
cd netcdf-fortran-4.5.3
./configure --prefix=${DIR} --enable-pnetcdf
make
make check
make install
驗(yàn)證 nf-config --all
This netCDF-Fortran 4.5.3 has been built with the following features:
--cc -> mpiicc
--cflags -> -I/share/home/dq060/software/libcesm/netcdf/include -I/share/home/dq060/software/libcesm/netcdf/include -I/share/home/dq060/software/libcesm/hdf5/include -I/share/home/dq060/software/libcesm/pnetcdf/include
--fc -> mpiifort
--fflags -> -I/share/home/dq060/software/libcesm/netcdf/include -I/share/home/dq060/software/libcesm/netcdf/include
--flibs -> -L/share/home/dq060/software/libcesm/netcdf/lib -lnetcdff
--has-f90 ->
--has-f03 -> yes
--has-nc2 -> yes
--has-nc4 -> yes
--prefix -> /share/home/dq060/software/libcesm/netcdf
--includedir-> /share/home/dq060/software/libcesm/netcdf/include
--version -> netCDF-Fortran 4.5.3
9. lapack blas
這兩個(gè)是線(xiàn)性代數(shù)的計(jì)算包。 blas包含在lapack的安裝包內(nèi),但默認(rèn)不編譯,所以要修改 Makefile 文件讓它編譯。 如下面注釋所示,然后通過(guò) make 安裝,再進(jìn)入到LAPACKE文件夾中再 make 一次,最后把產(chǎn)生的 .h 文件和 .a 文件都放到安裝目錄里面就可以了。
09_lapack_blas.sh
export CC=icc
export CXX=icpc
export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export F77=ifort
export FC=ifort
export F90=ifort
export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel'
export CPP='icc -E'
export CXXCPP='icpc -E'
DIR=/share/home/dq060/software/libcesm/lapack
tar -xvf lapack-3.10.1.tar.gz
cd lapack-3.10.1
cp INSTALL/make.inc.ifort make.inc
# 修改Makefile文件使其編譯blas
sed -i '12s/^/#/g' Makefile
sed -i '13s/#//g' Makefile
# /*******************************************************************
# .PHONY: lib
# lib: lapacklib tmglib
# #lib: blaslib variants lapacklib tmglib
# 變成
# .PHONY: lib
# #lib: lapacklib tmglib
# lib: blaslib variants lapacklib tmglib
# *******************************************************************/
make
cd LAPACKE
make
mkdir ${DIR}
mkdir ${DIR}/include
mkdir ${DIR}/lib
cp include/*.h ${DIR}/include/
cd ..
cp *.a ${DIR}/lib/
make
cd LAPACKE
make
mkdir ${DIR}
mkdir ${DIR}/include
mkdir ${DIR}/lib
cp include/*.h ${DIR}/include/
cd ..
cp *.a ${DIR}/lib/
配置環(huán)境變量
# lapack
export CPATH=/share/home/dq060/software/libcesm/lapack/include:$CPATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/lapack/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/lapack/lib:$LIBRARY_PATH
10. esmf 同以前一樣,不過(guò)因?yàn)閷?duì)比了兩個(gè)版本 esmf 的不同而修改了下安裝路徑,參考了許多帖子之后還是選擇了比較舊的 esmf 7.1.0
10_esmf.sh
ESMF_HOME=/share/home/dq060/software/libcesm/esmf_7_1_0/esmf-ESMF_7_1_0r
export ESMF_DIR=$ESMF_HOME
export ESMF_COMM=intelmpi
export ESMF_COMPILER=intel
export ESMF_ABI=64
export ESMF_INSTALL_PREFIX=/share/home/dq060/software/libcesm/esmf_7_1_0/install
export ESMF_NETCDF_INCLUDE=/share/home/dq060/software/libcesm/netcdf/include
export ESMF_NETCDF_LIBPATH=/share/home/dq060/software/libcesm/netcdf/lib
export ESMF_NETCDF_LIBS="-lnetcdf -lnetcdff"
export ESMF_CCOMPILER="mpiicc -cc=icc"
export ESMF_CXXCOMPILER=mpiicpc
export ESMF_CXXLINKER=mpiicpc
export ESMF_F90COMPILER=mpiifort
export ESMF_F90LINKER=mpiifort
unzip esmf-ESMF_7_1_0r.zip -d /share/home/dq060/software/libcesm/esmf_7_1_0/
cd $ESMF_DIR
make
make check
make install
配置環(huán)境變量
# esmf
export PATH=/share/home/dq060/software/libcesm/esmf_7_1_0/install/bin/binO/Linux.intel.64.intelmpi.default:$PATH
export CPATH=/share/home/dq060/software/libcesm/esmf_7_1_0/install/include:$CPATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/esmf_7_1_0/install/lib/libO/Linux.intel.64.intelmpi.default:$LD_LIBRARY_PATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/esmf_7_1_0/install/lib/libO/Linux.intel.64.intelmpi.default:$LIBRARY_PATH
cesm環(huán)境
我把 cesm 的運(yùn)行環(huán)境的環(huán)境變量放在軟件安裝目錄下的一個(gè)shell腳本里面,這樣只要每次登錄后 source 一下該腳本即可。 位置: /share/home/dq060/software/libcesm/env_cesm.sh
env_cesm.sh
# compiler and mpi
module load compiler/2021.3.0
module load mpi/2021.3.0
# perl5
export PATH=/share/home/dq060/software/libcesm/perl5/bin:$PATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/perl5/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/perl5/lib:$LD_LIBRARY_PATH
# cmake
export PATH=/share/home/dq060/software/libcesm/cmake/bin:$PATH
# zlib
export CPATH=/share/home/dq060/software/libcesm/zlib/include:$CPATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/zlib/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/zlib/lib:$LD_LIBRARY_PATH
# hdf5
export PATH=/share/home/dq060/software/libcesm/hdf5/bin:$PATH
export CPATH=/share/home/dq060/software/libcesm/hdf5/include:$CPATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/hdf5/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/hdf5/lib:$LIBRARY_PATH
# pnetcdf
export PATH=/share/home/dq060/software/libcesm/pnetcdf/bin:$PATH
export CPATH=/share/home/dq060/software/libcesm/pnetcdf/include:$CPATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/pnetcdf/lib:$LD_LIBRARY_PATH
export MANPATH=/share/home/dq060/software/libcesm/pnetcdf/share/man:$MANPATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/pnetcdf/lib:$LIBRARY_PATH
# netcdf
export PATH=/share/home/dq060/software/libcesm/netcdf/bin:$PATH
export CPATH=/share/home/dq060/software/libcesm/netcdf/include:$CPATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/netcdf/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/netcdf/lib:$LD_LIBRARY_PATH
export MANPATH=/share/home/dq060/software/libcesm/netcdf/share/man:/$MANPATH
# lapack
export CPATH=/share/home/dq060/software/libcesm/lapack/include:$CPATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/lapack/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/lapack/lib:$LIBRARY_PATH
# esmf
export PATH=/share/home/dq060/software/libcesm/esmf_7_1_0/install/bin/binO/Linux.intel.64.intelmpi.default:$PATH
export CPATH=/share/home/dq060/software/libcesm/esmf_7_1_0/install/include:$CPATH
export LD_LIBRARY_PATH=/share/home/dq060/software/libcesm/esmf_7_1_0/install/lib/libO/Linux.intel.64.intelmpi.default:$LD_LIBRARY_PATH
export LIBRARY_PATH=/share/home/dq060/software/libcesm/esmf_7_1_0/install/lib/libO/Linux.intel.64.intelmpi.default:$LIBRARY_PATH
cesm源代碼移植
源代碼
我目前使用的cesm版本為 2.1.3,這個(gè)是目前比較穩(wěn)定的版本,注意,某些 compset 和 res 的搭配可能在某個(gè)版本上是可以的,但在更新版本中則要加上 --run-unsupported 這個(gè)標(biāo)簽才能創(chuàng)建 case。
源碼在超算上的路徑: /share/home/dq060/model/cesm/cesm_2.1.3 輸入數(shù)據(jù)在超算上的路徑: /share/home/dq060/model/cesm/inputdata cesm輸出在超算上的路徑:/share/home/dq060/model/cesm/scratch
cesm下載好全部組件的源代碼鏈接:
鏈接:https://pan.baidu.com/s/1M6l-trumaqswWw3JwSs3nA?pwd=aqyj
提取碼:aqyj
配置
然后在自己 home 目錄下新建文件夾 .cime ,將以下三個(gè)配置文件放到這個(gè)目錄下,用來(lái)覆蓋cesm原有的配置,配置文件的含義可以參考上一篇博客,這里只指出一些新的修改和細(xì)節(jié)。
config_machines.xml
其中,
config_compilers.xml
其中,
ESMF_LIBDIR 指 esmf 的動(dòng)態(tài)鏈接庫(kù)的目錄,這個(gè)標(biāo)簽十分重要,錯(cuò)誤的話(huà)會(huì)導(dǎo)致cesm運(yùn)行時(shí)報(bào)錯(cuò)。
注意:以上
/share/apps/lico/intel/oneapi/compiler/2021.3.0/linux/bin/intel64/icc
不然會(huì)在編譯過(guò)程中會(huì)報(bào)錯(cuò)在make文件里發(fā)現(xiàn)了不合適的分隔符,原因就是這里的換行符也會(huì)被直接傳進(jìn)去make文件里
config_batchs.xml 自己用命令提交超算作業(yè),所以這里設(shè)置為空白。
結(jié)語(yǔ)
因?yàn)樽罱谂?WACCM-X 的原因,重裝了cesm很多次來(lái)排查問(wèn)題,所以安裝基本上能碰到的坑都踩了一遍了,這次也正好記錄下來(lái)供大家參考一下。csdn的私信我不是經(jīng)??矗绻闹杏绣e(cuò)誤的地方或者有寫(xiě)不清楚的地方的話(huà),可以發(fā)郵件給我大家一起討論~ 我的郵箱:ouzhliang@mail2.sysu.edu.cn
柚子快報(bào)邀請(qǐng)碼778899分享:CESM2.1.3 移植記錄
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀(guān)點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。