2021年11月25日にオンラインにて、第13回HPC-Phys勉強会を開催しました。この勉強会は、計算基礎科学連携拠点(JICFuS)と理化学研究所R-CCSの共催です。参加者は講師を含めて34名でした。
今回も2名の講師の方に講演をお願いしました。
プログラムのソースコードから、コンピュータが理解できる実行コードを予め生成するのがコンパイラです。しかしコンパイラは実行時の情報を知らないので、必ずしも実際に使いたい状況向けの最適な実行コードを生成するとは限りません。その欠点を補うために実行時にコンパイルするのが Just In Time (JIT) コンパイラで、スーパーコンピューター「富岳」で使えるものに Xbyak(カイビャック)があります。1つ目の講演では、慶応大学の渡辺宙志さんに Xbyak の使い方の解説をしていただきました。渡辺さんは、「ロボ太」の名義で(あるいは本名で)多数の解説記事をインターネット上で公開されているのでお世話になっている方も多いかもしれません。Xbyak は、インライン・アセンブラのような非常に低レベル(=計算機寄り)な書き方でプログラムを記述します。Xbyak を用いるために必要な計算機科学の最低限の知識から、docker 上に用意した実機さながらの環境での具体例まで密度の濃い内容となりました。講演資料は、計算機科学のミニコースにもなっています。繰り返し使われ、かつ計算の足を引っ張っている小さな関数が、Xbyak の使いどころとなりそうです。低レベルの知識が必要になるため万人向けのチューニング手法ではありませんが、腕に覚えのある方は挑戦してみてはいかがでしょうか。
Python は気軽に使えて人気のあるプログラミング言語ですが、Python 単体では計算量の多いシミュレーション向けではありません。2つ目の講演では、C++ で書かれたシミュレーションプログラムを Python から呼び出す手法について、高エネルギー加速器研究機構の青山龍美さんに紹介していただきました。Python と C++ を組み合わせる手法はいくつかありますが、青山さんの講演では pybind11 が取り上げられました。pybind11 の使い方の解説のあと、具体例として格子QCD向けの PyBridge++ の紹介がありまいた。これは格子QCDのコードセット Bridge++ に対する Python インターフェースです。Jupyter notebook の利用など、Python のエコシステムを活用した数値シミュレーション環境が構築できるとのことでした。
勉強会後のオンライン懇談会では、Xybak の開発者の光成さん(第9回勉強会でご講演いただきました)から、Intel AVX-512/富岳SVE用SIMDコード生成ライブラリ、simdgen の解説がありました(参考 https://www.slideshare.net/herumi/intel-avx512svesimdsimdgen )。勉強会中にチャット欄で言及があったライブラリです。
講演資料は、勉強会 web site からご覧になれます。
http://hpc-phys.kek.jp/
世話人の一人の金森さんからは
「今回も質が高い講演でした。準備も大変だったと想像します、講師のお二人に感謝します。学生の参加者が少しずつ増えてきています。運営側としては若い人に HPC の裾野がひろがってほしいと思います。」
とコメントをいただきました。
関連リンク
- 開催報告:第12回 HPC-Phys 勉強会
- 開催報告:第11回 HPC-Phys 勉強会
- 開催報告:第10回 HPC-Phys 勉強会
- 開催報告:第9回 HPC-Phys 勉強会
- 開催報告:第8回 HPC-Phys 勉強会
- 開催報告:第7回 HPC-Phys 勉強会
- 開催報告:第6回 HPC-Phys 勉強会
- 開催報告:第5回 HPC-Phys 勉強会
- 開催報告:第4回 HPC-Phys 勉強会
- 開催報告:第3回 HPC-Phys 勉強会
- 開催報告:第2回 HPC-Phys 勉強会
- 開催報告:HPC-Phys 勉強会
- HPC-Phys勉強会HP:High Performance Computing Physics