目次


開催案内

Juliaによる科学技術計算

日時

2023年1月13日(金)10:30〜12:00

 

開催形式

対面(吉田キャンパス北部構内)とオンライン(Zoom)のハイブリッド
参加登録 https://forms.gle/35Fxcj9BoZuFW5dN9
登録されたアドレスに教室の場所とZoomの接続情報を送付いたします。

 

講師

永井 佑紀 氏(国立研究開発法人 日本原子力研究開発機構 システム計算科学センター シミュレーション技術開発室 副主任研究員)

 

要旨

「1週間で学べる! Julia数値計算プログラミング (KS情報科学専門書)」の著者である講演者が、物理学分野でのJuliaを用いた科学技術分野でのコーディングについて紹介する。特に、講演者が共同開発している格子量子色力学シミュレーションのためのオープンソースプロジェクト「LatticeQCD.jl」[1]での具体的なコード例を紹介しながら、Juliaを用いたコード開発について述べる。また、固体物理学分野における簡単なコーディングによる研究例[2,3]についても紹介する。

[1]https://github.com/akio-tomiya/LatticeQCD.jl
[2]「5次元超格子を2次元平面に射影してペンローズタイル準結晶を作ってみよう in Julia」
https://qiita.com/cometscome_phys/items/659a569497eef3a85d86
[3]「Juliaの自動微分を使って量子力学の逆問題を解いてみる」
https://qiita.com/cometscome_phys/items/a2688749fc84dd6b182e

備考

◎問い合わせ先:itami.masato.7u * kyoto-u.ac.jp(*を@に変えてください)


開催報告

日本原子力研究開発機構の永井佑紀さんに「Juliaによる科学技術計算」というタイトルで講演していただきました。

講演は物性物理学分野におけるコード開発状況の説明から始まりました。固体における電子状態が主な研究対象である物性物理学では、アボガドロ数オーダーの電子が相互作用することで創発する現象を扱うため、まともに数値計算をすることは難しく、本質を抽出した計算をすることが多いそうです。抽出の仕方は多彩であり、業界として一つの良い共通コードがあるという状況ではないそうです。汎用パッケージの多くがFortranで書かれてきたこともあり、研究で使われているプログラミング言語はFortranが多かったそうですが、ここ10年でC++の公開コードが増えてきたり、機械学習の流行に伴い機械学習系のライブラリが充実しているPythonの利用者も増えているそうです。ただし、MPI並列計算で便利なこともあり、Fortranはまだまだ現役なようです。

次に、Fortranよりもパッケージが充実していてコードの作成が容易な言語としてJuliaが紹介されました。数値計算はコードの作成と実行からなるので、必ずしも実行が早いFortranが優れているわけではありません。講演では以下の3つを例にとり、Juliaによる科学技術計算の利点を教えていただきました。
 1. グリーン関数の行列要素を求めるReduced-shifted Conjugate Gradient method
 2. 多体電子系で登場する疎行列の厳密対角化
 3. 格子量子色力学のモンテカルロシミュレーション(LatticeQCD.jl)
1では、Juliaだとクロネッカー積などの行列の演算、疎行列特有の扱い、行列の行列の扱いが容易なことや、パッケージ化の利点について解説していただきました。2では、パラメトリック型を使うことで、拘束条件の追加などのコードの改造が容易に行えることを教えていただきました。3では、多重ディスパッチを使って高速かつ可読性の高いコードを書く方法や、Fortranに匹敵する実行速度を出すためのコツについて解説していただきました。

Juliaの仕様、機能の使い方、早いコードを書く方法などに関して、講演中も講演後も非常に多くの質問が出て、活発な議論が行われました。
(文責:伊丹將人)