#julialang #gcc #dsfmt #openmp #fma

ちなみにマクロ定義を除いたJulia側のコードは次の一行だけです。

findpi_macrosum(n::Int) = (4.0/n) * (@sum i 1:n ifelse(rand()^2 + rand()^2 <= 1.0, 1, 0))

この1行だけで円周率をモンテカルロで計算できる。

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

#julialang #gcc #dsfmt #openmp #fma

OMP_NUM_THREADS の値によってどれだけ速さが変わるかに興味がある人は添付画像を見て下さい。

CPU: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz

https://mathtod.online/media/FNHimMxh0n8Z2X6SbfI

https://mathtod.online/@tetu/413121

tetuさん、お世話になっています。
ついに、ついに、ついに、………

#julialang #gcc #dSFMT #OpenMP #FMA

Julia と gcc の死闘、ついに終止符が打たれるのか?!?!?!

40億回のモンテカルロループにかかった時間

Julia帝国軍 → 4.2秒

gcc dSFMT OpenMP FMA 連合軍 → 1.9秒

ついに、gcc連合軍の圧倒的勝利!

しかし、たくさんの血が流された……………

https://mathtod.online/media/DM-mn4TzeuVDBa_1Pzs

#julialang #mingw64 #gcc #dSFMT #OpenMP #SSE2

二大怪獣最終決戦?😁

10億回のループでは短い感じなので、40億回にしてみました。

適当にあいだをあけながら二三十回試して一番短い方の時間をピックアップしました。

結果

mingw64 gcc with dSFMT, SSE2, and OpenMP → 5.3秒

julia @paralle → 4.3秒

Julia @parallel 強いです。

なかなか倒せない。数字がばらつくのですが、安定してJuliaの方が速い感じです。

統計処理をしてみようかと思ったのですが、色々面倒なのでやめました。

CPUの温度が計算にかかる時間のゆらぎに関係しているっぽい雰囲気。 https://mathtod.online/media/ga6fhfgzumvcQKkyZb0

#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

にあります。

勉強になっています。

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

@tetu

すんばらしいです!!!とても速いです!

それでも微妙に並列処理版のJuliaよりちょっと遅い。

そこで、非OpenMP版も作って試してみました。(普段使うときには並列処理に書き直す手間をかけない。)

Juliaの非並列処理版よりも速かったです!!!

ついに普段使っている状況でJuliaを凌駕できました!

もう少ししたら、返答を外して、詳しい情報を公開します。

#julialang #gcc #dsfmt #openmp

https://mathtod.online/@waidotto/409847

#julialang #gcc #dsfmt

y.さんのおかげで、gccでJuliaと同じ速さ、円周率モンテカルロをできるようになりました!

gcc で並列化を使わずに0.4秒台が出ました!

私が追試するときに使ったコードとコンパイルの仕方(Makefile)は次の場所にあります。

https://gist.github.com/genkuroki/67a5ab63a44ad88446f31db499f08d1c

findpi_dSFMT.c のコンパイルのためには
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index-jp.html
から dSFMT-src-2.2.3 をダウンロードして展開しておく必要があります。

https://mathtod.online/media/-8HAEg24dlSX9Fm7A6w