#julia #python #numpy #pi #MonteCarlo #gist
ううむ、自分の実力だと python numpy でのスピードアップは添付画像のような感じが限界でした。約3.7秒。
たぶん、もっと速くする方法があると思うんですが、わかりません。
最初に v = np.rand(2,n) として2n個の乱数の配列を確保している時点で相当に遅くなっていると思います。
そういうことを避ければもっと速くなるんじゃないかと思うのですが、どうすればいいんでしょうか?
Jupyter notebooks を
https://gist.github.com/genkuroki/45e47f56799aee57c3dc11cda6df869a
に置いておきました。Juliaのコードも置いてあります。
「くろきのおっちゃん、ダメじゃないか。こうすればいいんだよ」と言ってくれる人が出て来ることを希望。
#julialang #python
https://mathtod.online/@plauda/403702
私の環境では、Juliaによる1億回ループの円周率モンテカルロの計算時間は軽く0.5秒を切ります。
CPUを4コア全部使うと(小さなコードの変更だけで容易に可能)さらに3倍以上速くなって、0.12~0.14秒程度になります。
よくわからないのはPython numpyでの高速化。
plaudaさんに教えて頂いた方法なら、私が考えた方法よりも倍速いです。教えて頂きどうもありがとうございました。
しかし、それでも、2.3秒以上かかっているので、Juliaとはまだオーダーが違う。
遅いforループを回さない、メモリーを無駄に確保しないだけで、Pythonのケースでも相当に高速化できそうだと思うのですが、方法がわからない。
私が使ったコードは次のリンク先で公開されています。批判的なコメント大歓迎です。勉強させて下さい。
https://gist.github.com/genkuroki/45e47f56799aee57c3dc11cda6df869a