早崎トップ 研究(気候気象) 研究(大気汚染) データリスト Linux Tips Mac Tips

CDO_setup (hysk)

CDO のセットアップ(hysk)

使い方はCDOの使い方(hysk)参照.

Climate Data Operators (CDO) の略. Max Plank Institute fur Meteorologie が作成元. 最新は v1.7.0 (released at 2015-10-28; checked 2016-02-28). 気候学に関わるデータ処理・解析ツールの集合体で, コマンドラインで処理できるのが大きな特徴. GUI が好きな人には向いてない. NetCDF4 や HDF5 など,事前インストールすべきものが複数ある. See also HDF5セットアップ.

セットアップにかける手間は煩雑だが,使えると非常に便利な事柄が多数.

私自身も全容を把握しきれてないが,特に便利と思われる点は下記:

  • netCDF形式データの切り出し・結合(時間・空間・要素などを指定して)
  • 格子系の変換(ガウス格子から緯度経度格子など)
  • データ記録形式の変換(有名どころでは NetCDF 3/4 と GRIB 1/2)
  • 気象学でよく利用される算術計算(数値フィルタ類)や統計解析 (EOF解析まで出来るらしい... いいのか?そんな簡単になって)などの計算ツールが利用可能
  • 一部関数は OpenMP をサポート(OpenMP 利用可能な C コンパイラが必須). ただし,大容量数値データ処理時のボトルネックは,その多くがディスクからの read/write , すなわちデータ I/O の遅さに起因する. OpenMP の利便性が活かせる機能 (See OpenMP support (CDO wiki)) でこそ使うべし

私個人としては,CMIP5 のデータ解析時に,格子間隔を統一するためのツールとして導入. 教えてくれた荒川理氏に感謝.

 用意するもの

 最新版 Latest version

See CDO web

CDO 本体 (latest: ver. 1.7.0; checked: 2016-02-28)

後述の旧バージョンの情報も保存.

  • cdo-1.6.3.tar.gz
    • CDO 本体(release date of ver.1.6.3: 2014-02-18; checked 2014-06-18). 最終的に,インストールするのは,実質上 "cdo" という実行ファイル一つだけ.
  • libs4cdo-0.0.10.tar.gz
    • CDO のライブラリ(?)(release date of ver.0.0.10: 2012-03-22). どうやら不要らしい.旧バージョン用なのか? 未確認.

 事前準備に必要なパッケージ群

必須なのは HDF5 くらい.

  • wgrib2.tar.gz (v.0.1.9.8; checked at 2014-02-08)
  • udunits-2.1.24.tar.gz
  • proj-4.8.0.tar.gz; See PROJ.4 web
  • grib_api_1.11.0.tar.gz
  • zlib128.zip (/usr/local/ 以下に static library (libz.a) を入れるため)
  • szip-2.1.tar.gz (/usr/local/ 以下に static library (libsz.a) を入れるため)
  • hdf-4-2.9.tar.bz2 (必須ではない.私的な事情)
  • hdf5-1.8.12.tar.bz2
  • netcdf-4.3.1.1.tar.gz
  • netcdf-fortran-4.2.tar.gz (必須でない.私的な事情)

 前提条件

  • CDOインストール以前に,下記の準備がなされていることを確認する:
  • 開発環境 (コンパイルに必要なツール群) がインストール済みである
    • (CentOS の場合) yum groupinstall "Development Tools" "Development Libraries" などをやっとけ (OSバージョンにより入れるグループ名が微妙に異なる. See also yum 使用法 # OSインストール後のyum)
    • (MacOS の場合) Xcode Command Line Tools のインストール. See also 私的Mac Tips
  • Cコンパイラはシステム標準の gcc
  • Fortran コンパイラは Intel Fortran (CentOS) とする.gfortran でも正常動作する.
    • 使用コンパイラを環境変数 FC に設定しておく
  • CDO インストール時に関係する条件・環境変数
    hoge
    
  • hoge

 インストール手順

 CDO 本体インストールの事前準備

これより先に HDF5 & NetCDF をインストールすること (See HDF5セットアップ(hysk), NetCDFセットアップ(hysk)).

udunits2 の導入 (/usr/local/ 以下にインストール)

なくても構わないが,他でも使うのでついでに. 特筆事項なし.素直にコンパイル & インストール.

ただし,yum パッケージにも含まれている(yum search udunits で見つかるはず)ので, 面倒な人はそれを使っても十分. udunits2 のRPM (EPEL repository)は,特殊な外部パッケージに依存してない(yum deplist udunits2 で確認; See also yum 使用法 # 主なオプション)ので, yum で入れても問題なさそう(2016-02-28).

PROJ.4 の導入 (/usr/local/ 以下にインストール)

この RPM も udunits と同様に外部依存少ないので,yum install proj (EPEL)で入れてしまっても問題なかろう. CentOS 7.2 の RPM では,v4.8.0 だった(checked 2016-02-28).

tar ball からの導入,特筆事項なし.素直にコンパイル & インストール.

$ tar xzf proj-4.8.0.tar.gz
$ cd proj-4.8.0
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

GRIB API の導入

この前に NetCDF (4.x 系列) をインストールしておくこと (See NetCDF セットアップ (hysk))

  • GRIB API のコンパイル & インストール. (You can get a source code from ECMWF GRIB-API; 左側メニューの "Releases" から最新版 1.12.1 を選択; checked: 2014-06-18)
    $ tar xzf grib_api-1.12.1.tar.gz
    $ cd grib_api-1.12.1/
    $ ./configure --prefix=/usr/local/grib_api-1.12.1  \
    --with-netcdf=/usr/local/netcdf4  --with-jasper=/usr  \
    --with-png-support
    $ make
    $ make check
    $ sudo make install
    
  • 最新チェック時のバージョンは 1.14.5 (released at 2016-01-27; checked 2016-02-28). 正常にインストール成功.

/usr/local/grib_api-1.12.1/{bin,include,lib,share}/ 以下にインストールされる. HDF5, NetCDF などと同様に,バージョン番号を外した部分だけの名前でシンボリックリンクをはる.

$ sudo ln -s /usr/local/grib_api-1.12.1 /usr/local/grib_api

 CDO 本体

 CDO のインストール

下記は v1.6.3 時点の記述だが,v1.6.9, v1.7.0 でも同じコンパイルオプションで正常動作を確認 (update 2016-02-28).

CDO 1.6.3 を configure & make,${CDO_root}/{bin,include,lib}/ 以下にインストール. ここでは,CDO_root=/usr/local/ とする. CDO を個別ディレクトリに入れない理由は,インストールされるものは非常に少ないため(下記). configure 時に --enable-cdi-lib もつけないなら,${CDO_root}/bin/cdo だけ.

${CDO_root}/bin/cdo
${CDO_root}/include/cdi.h
${CDO_root}/include/cdi.inc
${CDO_root}/lib/libcdi.a
${CDO_root}/lib/libcdi.la
${CDO_root}/lib/libcdi.so.0.0.0
$ tar xzf cdo-1.6.3.tar.gz
$ cd cdo-1.6.3
$ ./configure --prefix=/usr/local --with-szlib=/usr/local  \  (次行に継続.以下同様)
--with-hdf5=/usr/local/hdf5 --with-netcdf=/usr/local/netcdf4 \
--with-proj=/usr/local --enable-cdi-lib \
--with-grib_api=/usr/local/grib_api  --with-jasper=/usr

$ make >& log_make.txt
$ make check >& log_make_check.txt
(make check もエラー無しで終了; checked 2014-02-17)
# make install

一言メモ.

  • 急ぎでコンパイルしたい時には,make -j 4 などとしてもいい. 4-thread 並列くらいなら,大抵のPCで可能だろうから. 念のため,終了後に再度 make すべし.取りこぼしがあるかもしれないから.
  • NetCDF のバージョンに注意. 具体的には,GRIB API のコンパイル時に参照したものと同一バージョンにすること. GRIB API はコンパイル時に NetCDF を参照する際,シンボリックリンク先の ディレクトリを参照しているらしい. 私の場合,--with-netcdf=/usr/local/netcdf4 を指定したのに コンパイル時にはリンク先の /usr/local/netcdf-4.3.1.1/ を参照していた.
  • CDO v1.6.3 のコンパイル時,make check でこけた(2014-06-18). 失敗したのは OpeNDAP 関連. 原因特定する時間が無かったので,NetCDF を --disable-dap で再インストール. 念のためGRIB API も再インストールしてから CDO コンパイルを retry したら通った. 急いでいたので,手順を間違えただけかもしれないが,何か参考になるかもしれないので記録.

 環境設定

インストール先が /usr/local/ 以下なので,PATH やら MANPATH やらを 追加する必要無し.

 動作確認

すぐに使ってみたい(See CDO の使い方)ところだが, 最低限の動作テスト.

インストールした cdo の最低限の動作確認, 既存 cdo のコンパイル条件などを確認するには,cdo --version を実行. 実行例は下記:

$ cdo --version
Climate Data Operators version 1.7.0 (http://mpimet.mpg.de/cdo)
Compiled: by hayasaki on hoge.private (x86_64-unknown-linux-gnu) Feb 28 2016 15:12:39
Compiler: gcc -std=gnu99 -g -O2 -fopenmp 
 version: gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
Features: DATA PTHREADS OpenMP HDF5 NC4/HDF5 SZ Z PROJ.4 SSE2
Libraries: HDF5/1.8.15 proj/4.8
Filetypes: srv ext ieg grb grb2 nc nc2 nc4 nc4c 
     CDI library version : 1.7.0 of Feb 28 2016 15:11:56
 CGRIBEX library version : 1.7.3 of Sep 14 2015 10:58:44
GRIB_API library version : 1.14.5
  netCDF library version : 4.3.3.1 of Jan 22 2016 23:05:23 $
    HDF5 library version : 1.8.15
 SERVICE library version : 1.4.0 of Feb 28 2016 15:11:43
   EXTRA library version : 1.4.0 of Feb 28 2016 15:11:39
     IEG library version : 1.4.0 of Feb 28 2016 15:11:41
    FILE library version : 1.8.2 of Feb 28 2016 15:11:39

コマンド単体での実行すら出来なら,コンパイル & make check からやり直し.
正常動作してるようなら,実際のデータ処理をテスト. See CDOの使い方

 CDO 参照情報

 外部リンク

 動作検証環境

CDO の正常動作を検証済みの環境

CPU OS or distribution kernel
(or MacOS X ver.)
C Fortran
Intel Core i5-3450S 2.8 GHz
(CDO v1.7.0 installed at 2016-02-28)
CentOS 7.2.1511 3.10.0-327.4.4.el7.x86_64 GCC 4.8.5 (20150623; 64-bit) gfortran
(same as gcc)
Intel Xeon E5-2660 2.6 GHz
(CDO v1.6.9 installed at 2015-10-04)
CentOS 6.7 2.6.32-504.16.2.el6.x86_64 GCC 4.4.7-16 (20120313; 64-bit) gfortran
(same as gcc)
Intel Core i5-3450S 2.8 GHz
(CDO installed at 2014-09-23)
CentOS 7.1 3.10.0-229.11.1.el7.x86_64 GCC 4.8.3 (20140911; 64-bit) gfortran
(same as gcc)
Intel Core i7-4770 3.4 GHz CentOS 6.5 2.6.32-431.17.1.el6.x86_64 GCC 4.4.7 (20120313; 64-bit) Intel Fortran composerXE-2013_sp1.1.106
(2014-06-25; 64-bit)
Intel Core i5 1.7 GHz
(MacBook Air Mid2012 model)
CentOS 6.5
(on VMware Fusion 5.0.4)
2.6.32-431.3.1.el6.x86_64 GCC 4.4.7 (20120313; 64-bit) Intel Fortran composerXE-2011.2.137
(2014-02-08; 64-bit)

動作が失敗する環境

CPU OS or distribution kernel C Fortran
Intel Centrino Fedora 19 3.12.9-201.fc19 gcc 4.8.2 (20131212) Intel Fortran 14.0.0-20130728
(2014-02-08; 64-bit)

更新履歴

Date Changes
2016-02-28 更新履歴を追加. 最新版 v1.7.0 が出ていた(約4ヶ月前).正常動作を確認.
2015-10-04 CDO v1.6.9 のコンパイル & 正常動作を確認.
2014-06-25 CDO v1.6.3 のコンパイル & 正常動作を確認.
2014-02-08 記載開始.CDO v1.6.2 ベース(のはず). 参照ID番号付けのルールは, Linux tips (hysk) # 自分専用ルール・HTML に従う.