地球流体電脳倶楽部
dcmodel/davis ミーティング
2020/03/26

注意事項/お願い▶ 発表資料は Web にアップロードして下さい.
• 置き場所: dennou-k の/GFD Dennou Club/dc-arch/davis/workshop/2020-03-26 netmeeting/
以下に置いて下されば, 適宜リンクをはります.
▶ 発表者以外は, 基本マイクをミュートしておいて下さい.
▶ 発言の際には, 一度その旨を発言してからお願いします• いきなりしゃべっても (たいてい) 聞き取れません▶ slack: https://gfd-dennou.slack.com もどうぞ
▶ 円滑な運営にご協力下さい.
1/18

Debian パッケージの状況

佐々木洋平
2020/03/26

2/18

現状

▶ さいきんサボってます. すみません▶ Jenkins のステータス•

https://dennou-k.gfd-dennou.org/arch/cc-env/debian-dennou/• このページも変な気がします.

3/18

今後

▶ パッケージの更新••

stretch の削除, bullseye の準備, DCL の更新, ISPACK ver.3 の upload
stable に収録される〆切は年末. . . かな?
− https://lists.debian.org/debian-devel-announce/2020/03/msg00002.html▶ ビルドインフラの移行• 今: davis2 で動かしている jenkins ← 誰も使っていない, 様な.
• 今後: Debian の Gitlab CI へ移行▶ やってみたい人, 募集中.

4/18

gtool, spml ver.2

佐々木洋平
2020/03/26

5/18

gtool について
▶ 今年度やった事:•configure の更新• ドキュメントの整理: doxygen を使うように (spml の所で詳述)• f2003 対応: 文字列関連←途中▶ 新年度の予定:• これまでの版の リリース する (生存確認も兼ねて)− 文字列周りは変更していない版•NetCDF C interface を叩く様に整理− Fortran interface を不要にする••

Parallel 対応 ← どこまでやるかも検討
CF Convention への追従 ← 先ずは読む所から
6/18

spml について
▶ 最新リリースは ver. 0.8.0•

2014/01/29 リリース
• ISPACK ver.1 の sjpack は対応済
• ISPACK ver.2 には未対応: 0.9.0 で対応− 0.9 系列ってリリースし忘れてました. . .

▶ 今後の予定• 現状版 spml: ver.1 系列と呼称− 主にバグフィックスリリースのみ•

version 番号は 1 に漸近する予定− 0.9.0 → 0.9.9 → 0.9.9.9 · · ·7/18

spml ver.2 系: 開発方針
1. 下層の変換エンジン: ISPACK3 のみ に依存•ver.1 系: ISPACK1(+ ISPACK2) を configure 実行時にそれぞれ指定していた.

2. configure の簡素化
3. ドキュメント生成を Doxygen に• これまでは rdoc-f95 だった. ← メンテナ不在. 最近の Ruby での動作未検証• 多言語化は gettext + po で翻訳作成することに.

4. 努力目標: 後方互換性の維持• 残るモジュール (後述) に関しては, そのまま動く, 筈 (?)• 球面調和関数の正規化が変わっている点に注意

8/18

ISPACK3 のみに依存▶ git: spml/2.0 branch で作業中

• 移行済
− lumatrix, eigmatrix: (主に) ドキュメント更新− ae module, at module: ベースは ISPACK3/FXPACK− et module: transpose(ae module) + at module− w module, w mpi module : ベースは ISPACK3/SXPACK− wa{, mpi} module, wt{, mpi} module: 既存モジュールの書き換え− ua mpi module: ベースは ISPACK3/SYPACK. 球面多層
− ut mpi module: 球殻 (ua mpi module + at module)• MPI 関連にバグ?
− 精査中• pending:− 上記以外. 必要に応じて実装予定
9/18

configure の簡素化
▶ fortran( ≥ f90) に特化した, m4 マクロの作成••

https://github.com/gfd-dennou-club/m4
CRAY 等にある module システムに対応:− 「必要なライブラリの関数を使ったコードがコンパイルできる」⇒フラグ指定は不要, という判断▶ --with-gt5confg の追加•

gtool5, NetCDF のフラグ指定を簡素化▶ その他, イロイロ. 詳細は実ファイルを参照•valgrind, doxygen, . . .
10/18

努力目標: 後方互換性の維持▶ 移行済のモジュール:• これまで用意していたテストは 通る → 正規化関連の変更が必要だった• 公開済の拡散方程式系のプログラムは実行可能▶ 現状の変更点• 幾つか Integer → Integer(8) が必要かも.
• そのままだと無くなるモジュールがある.
− 2 重周期境界 (平面), 円盤, 無限平面, 2 次元水路領域 (鉛直 sin cos 展開), 3 重周期境界 (箱),3 次元球, etc.
− 必要に応じて対応予定

11/18

まとめspml ver.2 系の開発現状
1. 下層の変換エンジン: ISPACK3 のみ に依存
2. configure の簡素化
3. ドキュメント生成を Doxygen に
4. 努力目標: 後方互換性の維持
ToDo▶ ベンチマーク (速度, 並列化効率)▶ 既存のプログラム (dynamo, dcpam5) の動作確認• 場合によっては修正指針の提示▶ Doxygen 出力の調整, 出力結果の翻訳

12/18

13/18

ソースコードとドキュメントと翻訳に関するアレコレ

佐々木洋平
2020/03/26

14/18

ソースコードとドキュメントと翻訳▶ ソースコードとドキュメント: Doxygen による生成• 結果例: spml ver.2− https://www.gfd-dennou.org/member/uwabami/tmp/spml/build/doc/html/• ソースも閲覧できるかと.
• なお, 上記のディレクトリは後程消します.

▶ ドキュメントと翻訳• ソースには単一の言語でドキュメントを記載する→出力結果は html
• html を多言語に翻訳: po4a を利用する

15/18

po4a
po4a: PO for Anything: https://po4a.org/
po4a (PO for anything) プロジェクトは、gettext ツールが想定していないドキュメントのような領域で翻訳をしやすくすること (またより興味深いのは、翻訳文の保守がしやすくなること) を目標にしています。
▶ 翻訳元から, 翻訳すべき箇所を抽出: po ファイル
▶ 抽出された po ファイルを, 対象とする言語に 翻訳する
▶ 翻訳結果をマージしつつ出力 → 多言語版ドキュメントができる
16/18

po ファイルの例#. type: Content of: <html><body><div><div><div><div><p>#: html/index.html:113
msgid "詳しい説明は html ディレクトリ内の index.html ならびに SPMODEL の Web page を御覧ください."
msgstr ""#. type: Content of: <html><body><div><div><div><div><p>#: html/index.html:114
msgid "インストール手順は<a class=\"el\" href=\"INSTALL.html\">INSTALL</a>です."
msgstr ""#. type: Content of: <html><body><div><footer>#: html/index.html:121
msgid "&copy; 2002-2019 SPMODEL Development Group/GFD Dennou Club staff:"msgstr ""17/18

使ってみての感想▶ 更新への追従• 原文の HTML が更新されたら, po ファイルも更新する− 差分だけが更新される• 追加翻訳して適応すれば良い▶ 難点•

po ファイル自体が (xhtml をパースしているためか) かなり読み難い:→ 諦めましょう• po ファイル自体を扱うツールは沢山あります.

18/18