JuliaHub を使って複数ノードのDistributed Computingを試す

20898 ワード

本日は

JuliaHub を用いて分散コンピューティング(Distributed computing) を試すお話です.

JuliaHubの入門はここにも書きました

この記事ではみんな大好き「乱数を用いた円周率の計算」を複数のコンピュータを用いて並列計算させます. 大学や研究機関など特別な機関に所属していないような普通の人間でも(お金さえ払えば)できてしまうのです.

この記事を書いている中の人は「自腹で4台のラズパイを買って, LANケーブル繋いでMPIによって並列計算をPythonでおこなった」程度の経験しかないよくある一般人です. それよりも多いノードを使ったスパコンシステムを使うのは JuliaHub が初めてになります.

この記事を読んだ方で普段スパコンを触っている方がいれば是非 JuliaHub を使って既存のシステムとの比較・所感を書いていただけると幸せになる人がいると思います.

前提

  • JuliaHub に登録しクレジットカード認証が通った状態
  • 手元で簡単なJulia のコードの記述・実行ができる
  • Distributed.jl を使いこなせれば尚可.

扱うトピック

JuliaHub のチュートリアル をベースに話を進めていきます. みんな大好き乱数によって円周率を計算します.

[-1, 1]\times [-1, 1] \subset \mathbb{R}^2 の領域でランダムに点(x, y)\in\mathbb{R}^2を生成します. この生成を n 回繰り返しましょう.各々の試行で生成された点が半径が1の円の中に所属するかどうかを観測します. その様子を描いたのが下記の図になります.

緑: 円の中に入った点, 赤色: 円の外側に所属した点

画像は下記のリンクから抜粋
https://help.juliahub.com/juliahub_tutorials/vscode_extension/#executing_a_script

円の面積を領域の面積で割った値は \pi/4 になります. ということで

4(円の中に入った点の数)/n

を円周率の近似値として得ることができます.

用意するコード

読者が JuliaHub のチュートリアルを真似できるようにコアなロジックは