#julialang #python #numpy #gcc #gpp #openmp

【更新】私のWindows環境での現時点での最高速のまとめ【更新】

円周率を求めるモンテカルロの1億回ループにかかる時間

g++ → 2.6秒台

Python & numpy → 2.3秒台

g++ & OpenMPで並列化 → 0.4秒台

gcc & dSFMT → 0.4秒台

Julia → 0.4秒台

Juliaで並列化 → 0.12秒

#julialang #python #numpy #gcc #gpp #openmp

【更新】私のWindows環境での現時点での最高速のまとめ【更新】

ループを1億から10億に増やしました。

モンテカルロ法による円周率の計算でループを10億回まわした場合

g++ → 26秒台

gcc default rand() → 約25秒

Python & numpy → 約22.5秒

gcc Mersenne Twister → 約8.5秒

g++ OpenMPで並列化 → 約4秒

Julia → 約4秒

gcc dSFMT → 約3.2秒
ついにJuliaを凌駕した!!!

gcc dSFMT OpenMPで並列化 → 1.3秒台
Juliaの並列化のケースとほぼ互角だと言ってよいでしょう!

Juliaで並列化 → 1.2秒台

今回の件で、モンテカルロシミュレーションで乱数生成が高速であることの重要性を初めて理解できました。

#julialang #python #numpy #gcc #gpp #openmp #dsfmt #mersennetwister

使用したCとC++のコードは

https://gist.github.com/genkuroki/740f5515330217a3b9247b636fc09f0d

にあり、Python と Julia の Jupyter notebooks が

https://gist.github.com/genkuroki/45e47f56799aee57c3dc11cda6df869a

にあります。

勉強になっています。

みなさん、本当にどうもありがとうございます。