黒木玄 Gen Kuroki
- いいね数 389,756/311,170
- フォロー 995 フォロワー 14,556 ツイート 293,980
- 現在地 (^-^)/
- Web https://genkuroki.github.io/documents/
- 自己紹介 私については https://twilog.org/genkuroki と https://genkuroki.github.io と https://github.com/genkuroki と https://github.com/genkuroki/public を見て下さい。
2018年01月09日(火)
@genkuroki 使えてる♬ パッケージはちゃんと入ってるようなのだが何がいけないのか。そもそも #julia (小文字ですぞ)で開くコンソールで入れても #Jupyter (此方は大文字なのか、でノートブックは要らんか?)で実行しても同じなのか?何か色々と分からない。
posted at 23:25:36
@tsatie #Julia言語 ←「言語」もつけておかないと危ない
using Permutations
n = 4
for k in 1:factorial(n)
println(Permutation(n,k))
end
と使えています。
ここ3日ほどjuliaを検索してひどいのを全部ミュートしている。やっとおちついてきた。 pic.twitter.com/bKVMlYQByz
タグ: Julia言語
posted at 23:22:21
Juliaのいいのは、まず各種精度の数値型が取り揃えられており、シームレスに利用できること。また丸めやepsilon関連などの数値計算に必要な機能が整備されてること。
タグ:
posted at 23:12:29
Juliaのブーム,どうせ1日か2日くらいで終わるだろうと思ったが,1週間経つけど未だにチュートリアルへのアクセス数がが落ちない(むしろちょっと伸びてる)。
github.com/bicycle1885/Ju... pic.twitter.com/VWpARTbeyv
タグ:
posted at 22:58:43
#Julia言語 私はWindows 8.1でAnaconda3+Julia v0.6.2の組み合わせでJupyter notebookを使っています。同じような環境を作りたい人は私のインストール記録
nbviewer.jupyter.org/gist/genkuroki...
が役に立つと思います。
タグ: Julia言語
posted at 22:31:45
@genkuroki そんな高度なことはやってないです。自分で見つけたので使い方合っているかわかりませんが、Kernel→Change KernelでPythonかJuliaを選べました。 pic.twitter.com/ZEtb3Z2Zyd
タグ:
posted at 22:30:40
#Julia言語
julia側で Pkg.add("IPython")しているときのAnaconda3のjupyterのありかを示す環境変数が
JUPYTER=C:\Anaconda3\Scripts\jupyter.exe
のように(これは私の例)が設定されていないと、juliaはminocondaをインストールしてしまいます。続く
twitter.com/kubomasayuki/s...
タグ: Julia言語
posted at 22:29:35
@ceptree JupyterでSoSカーネルを使っていたりするのですか? #Julia言語
vatlab.github.io/blog/post/sos-...
タグ: Julia言語
posted at 22:21:10
adhara_mathphys @adhara_mathphys
最近はTLでは(Juliaなどを使った)数値計算の例として二次元イジング模型が盛んに扱われていますが、この相関関数とパンルヴェ方程式が関係があるという話です。
twitter.com/adhara_mathphy...
タグ:
posted at 21:57:44
三角格子のイジング模型→バンド計算→電子のアンダーソン局在とか、結構かっこいい仕事だったと自画自賛している。遊びじゃなくて現実の材料でこれを考えた経験のある人は、ガチの物性屋でも珍しいのではなかろうか。 twitter.com/Matz_Shin/stat...
タグ:
posted at 20:43:49
三角格子では絶対零度でもエントロピーが残ることは計算して気がついた。良く知られている結果だったが。 twitter.com/Matz_Shin/stat...
タグ:
posted at 20:41:00
#Julia言語 添付画像はスピンの平均値の分布です。最小-1、最大1になりえる。きちんと左右対称になっている。バグが発生している状況では1000億点更新しても左右対称にならず、「うぎゃ!」となりました。 pic.twitter.com/cJpvxuDMc5
タグ: Julia言語
posted at 20:14:39
#Julia言語 添付動画は100×100の2D Isingの盤面全体のメトロポリス更新を1000万回行った場合(1000億点更新の場合)の動画です。 pic.twitter.com/7ylqtSBX4P
タグ: Julia言語
posted at 20:10:58
#Julia言語 ifelseを消して高速化する前のバージョンは
gist.github.com/genkuroki/4fa4...
に抜き出して、サンプルコードとして読み易くしてあります。10億点の更新に8.3秒程度かかっています。ifelseを消すと完全に同一の結果を得るために必要な時間が2割ほど減ります。
タグ: Julia言語
posted at 20:08:21
非公開
タグ:
posted at xx:xx:xx
いま自分のQiitaの記事を@ code_typedでみてたら2点ほど型変換してるとこあった、これでもうひとネタ書けそう twitter.com/genkuroki/stat...
タグ:
posted at 19:59:38
Juliaをいじってる余裕がないので話だけ書きますが、イジングモデルの各スピンが持つ情報は1ビットです。そこでひとつのワードに多数のスピンを詰め込む「マルチスピンコーディング」という考え方があります。バリエーションがあるのですけど、僕は「ビットごとに違う温度」で並列計算していました
タグ:
posted at 19:52:42
#Julia言語 少し前にきくちさんが、周囲のスピンの和をifやifelseを使わずに計算するようにすれば速くなる、と言っていたような気がします。それは非常にもっともなので、私も昨晩実行してみました。
nbviewer.jupyter.org/gist/genkuroki...
のIn [2]のising2d_sweep! 函数がそれです。続く
タグ: Julia言語
posted at 19:46:24
みんなで、Julia言語を十分に理解しないままで、物理的に意味のある数値計算を十分高速に実行して楽しめている状況の中で、無粋なことを言う人がいるのはちょっと心外な感じ。Julia言語は十分に理解していなくても、高速計算を気軽に楽しめるプログラミング言語だと思う。
タグ:
posted at 19:43:19
#Julia言語 以下のノートブックを更新しました。
gist.github.com/genkuroki/d5f8...
レベル2の段階まで注意を払うだけで気楽に高速計算してくれる点がJulia言語の大きな特徴。
タグ: Julia言語
posted at 19:39:52
非公開
タグ:
posted at xx:xx:xx
ごまふあざらし(GomahuAzaras @MathSorcerer
やっとWindows上でJuliaカーネルノートブックでPythonのコード呼び出すことができた・・・. pic.twitter.com/0g9L2zWvLw
タグ:
posted at 18:28:06
ごまふあざらし(GomahuAzaras @MathSorcerer
PyCall のPythonのバージョンを変えるとき際に・・・WindowsユーザーはPathの¥を二回打つことに注意しないといけない・・・. pic.twitter.com/U5vfpNBQGu
タグ:
posted at 18:23:52
@ceptree 【続編】Qiitaより@ceptreeさんによる「Juliaの速さを体感する2」。qiita.com/ceptree/items/...
タグ:
posted at 18:09:28
ごまふあざらし(GomahuAzaras @MathSorcerer
conda パッケージを Juliaから追加しよう on @Qiita qiita.com/tenfu2tea/item...
タグ:
posted at 17:43:04
簡単なコードでJuliaの@ code_warntypeと@ code_llvm比較したら余裕じゃねって思ってたけど、for文いれた瞬間にわけわかめだった
タグ:
posted at 17:40:19
OpenLibmってJuliaのサブプロジェクトだったのかΣ(゚Д゚)
JuliaLang/openlibm: High quality system independent, portable, open source libm implementation github.com/JuliaLang/open...
タグ:
posted at 17:03:12
#Julia言語 以上で述べた
レベル2→Julia言語特有の書き方をせずに高速計算するためにはこれで十分
レベル3&レベル4→Julia言語特有の書き方と機能の面白さを知る
という話は既出の次のノートブックにも書いてあります。興味がある人は見て下さい。
gist.github.com/genkuroki/d5f8...
タグ: Julia言語
posted at 17:02:58
"Juliaの速さを体感する" qiita.com/ceptree/items/... (15.6 pt) by @ceptree | 72 Hours 2nd qaleido.space/?type=72hours
タグ:
posted at 17:00:02
ごまふあざらし(GomahuAzaras @MathSorcerer
Juliaちゃん.たかだか数行なのに読み込みと何かの処理で時間がかかるのはいただけない・・・.
Matplotlibに浮気しちゃうぞー. pic.twitter.com/Skh9oztoEc
タグ:
posted at 16:58:16
非公開
タグ:
posted at xx:xx:xx
まさに知りたかった@ code_warntype の出力結果の解説があるので、私のようなjuliaに移って高速化を意識し始めた人にオススメです twitter.com/genkuroki/stat...
タグ:
posted at 16:30:50
非公開
タグ:
posted at xx:xx:xx
全盛期のJulia伝説
「1クロック5命令は当たり前,1クロック8命令も」
「スクリプトを実行しようとしたらもう結果ファイルができていた」
「バブルソートを実装したらO(1)で動作した」
「ビットを勢い良くシフトしたら隣のマシンに移動してた」
タグ:
posted at 16:20:49
#Julia言語 小ネタじゃない話
「Julia言語を使うには、結局のところ、Julia言語特有の一般的ではない書き方を覚えないといけない」というような誤解があるように思ったので次のノートブックを作成しました。
gist.github.com/genkuroki/d5f8... …
変数を適切な型で初期化することについて
タグ: Julia言語
posted at 16:19:32
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
@MathSorcerer また暇だったら書きます!ちなみにこちらに上げてます。基本的にjuliaで実行してますが、途中一部だけPythonのに変更してます。
twitter.com/ceptree/status...
タグ:
posted at 14:55:00
ドイツの大学/研究組織のコンソーシアムが、エルゼビアの高騰する購読料とOA化への拒否に対抗して、全大学規模で2017年末に契約を打ち切った件。まさかのエルゼビアがしたてに回って、一時的に無料でアクセスをゆるす胸熱な展開になってる。
www.nature.com/articles/d4158...
タグ:
posted at 13:44:23
@genkuroki 一応一言付け加えておくと,このツイートは twitter.com/genkuroki/stat... までしか存在しなかった状態かつ私がJuliaのコードを見たことがない状態での発言(「言葉尻だけ捉えればその理論だけではまだ穴があるのでは」)であり,ぶっちゃけクソリプの類なのであんまり本気になさらないでください.
タグ:
posted at 13:28:59
@tkf #Julia言語 すみません。示すべきnotebookを示すのを忘れていました。
浮動小数点数になる予定のsの初期化の仕方をs=0からs=0.0に変えるだけで速くなることの証拠物品です。
gist.github.com/genkuroki/8451...
タグ: Julia言語
posted at 13:28:24
MATLAB やってたときはなんだこのレガシー言語はと思っていたが、Python といい Julia といい、MATLAB に近い表現が多い言語が流行ってるので MATLAB の経験には非常に助けられている。ようは高級言語でも行列演算を最適にやりたいってニーズが高まってるんだと思うんだけど。
タグ:
posted at 12:34:04
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
@tkf そして、Julia言語にも対応するマクロがあることを調べ、次のブログ記事
qiita.com/ceptree/items/...
ではそれも試している。
inboundsの件は「Julia特有の書き方をしないと速くならない」場合に含めるのではなく、「その機能の存在を知っていれば速くできる」場合に含めるべきだと思いました。
続く
タグ:
posted at 11:52:32
@tkf 訂正:inboundsのiが抜けました。
inboundsについては、実例が最近話題の
qiita.com/ceptree/items/...
にあります。ブログ筆者はJulia言語のinboundsマクロの存在を最初知らなかったのですが、Cythonでwith boundscheck(False)としている例をコメント欄で教えてもらって、存在に気付いています。続く
タグ:
posted at 11:45:17
非公開
タグ:
posted at xx:xx:xx
教える方は「あわせて」で判別させたら楽だものな
教える内容の優先事項が第一に教師が教えやすいかどうか、第二にテストに出るかどうか。
正確さに関しては「正しいことを言っても伝わらなければ意味がない」
#超算数 twitter.com/pakiene/status...
タグ: 超算数
posted at 08:13:17
#超算数 商品をまとめて買う場合と別々に買う場合で式を書き分けるという指導
www.saitama-city.ed.jp/03siryo/sidoua...
タグ: 超算数
posted at 07:26:11
非公開
タグ:
posted at xx:xx:xx
もう少し詳しく書くと、同一ファイルでjuliaとPythonを変更できるので、あるセルではjuliaで実行して、別のセルではPythonで実行するということができた。
タグ:
posted at 06:18:08
@genkuroki dot1 や dot2 も完全に idiomatic な Julia ではなく、 a::Array{Int}, b::Array{Float64} の場合に備えるなら s = zero(promote_type(eltype(a), eltype(b))) などとする必要があります。
タグ:
posted at 04:53:25
@genkuroki 最初の dot0 がナイーブなコードです。 Julia の型推論について知らないとこのコードを書いてしまうと思います。a と b が両方共 Array{Int} なら dot0 と dot1 の速度は変わりませんが、 Array{Float64} だと dot0 はノートブックにあるベンチマークの通り、かなり遅いです。
タグ:
posted at 04:45:50
@genkuroki 内積を3パターンで書きました。少しずつJuliaの機能を使っていって少しずつ速くなっています。 gist.github.com/89d489802f51a2... pic.twitter.com/7DHPfLXoON
タグ:
posted at 04:40:02
@genkuroki 「そこから先の最適化」のために Julia の機能を知らないとダメだけれど、それらの機能を知らなくても出せるスピードのリミットをもっと上げて欲しい (+将来的には上げてくれるのではという期待)、というのが元のツイートの意図でした。
タグ:
posted at 04:24:42
Qiitaの記事をjupyter notebookにして、GitHubGistにあげてみた
gist.github.com/ceptreee/44d3d...
タグ:
posted at 04:23:19
#Julia言語 2次元イジング模型へのメトロポリス法の適用のサンプルコード
gist.github.com/genkuroki/4fa4...
添付画像を見てもらえればわかるようにシンプルで短いです。
10^9回ループを回すのに8秒ちょっとかかっています。
inboundsなどの高速化のための処置は一切施していません。 pic.twitter.com/dToIYDzB0N
タグ: Julia言語
posted at 03:48:19
#Julia言語 他にも「特別な書き方をしなくてもJulia言語は速い」ことを実証する事例はあります。最近話題の
qiita.com/ceptree/items/...
でもプログラムの書き方に何か特別なところは全然なくて、素直にアルゴリズムを翻訳しているだけ。function main() ~ end で囲んで実行するだけで爆速。
タグ: Julia言語
posted at 03:21:55
#Julia言語 「トップレベルにコードを書かずに函数の中に入れる」というのはJulia言語特有の事情ですが、それは仕方がない。
私が公開したコードを見ればわかるように、特別な書き方をしなくてもJulia言語は速い。Julia言語は特別な書き方をしなくても速い。これが事実。
twitter.com/wx257osn2/stat...
タグ: Julia言語
posted at 03:17:27
#Julia言語 では
a = [1,2]
function f!(x)
x[2] = 123
end
f!(a)
とすると、配列 a の値が [1, 123] に変化します。
Julia言語界では引数を変化させる可能性のある函数の名前の最後には!を付ける習慣になっています。他言語ではもちろん従う必要はありません。 pic.twitter.com/T2ecPbt5II
タグ: Julia言語
posted at 02:58:20
@genkuroki まず優れたアルゴリズム (hot-loop 中の計算をなるべく外に出す、等) を用意しないと速くならないのは当然です。それが出来た上で、さらに高速化するために言語機能を色々と知らないといけないことについての意見でした。他言語との比較が必要なのは同意です。
タグ:
posted at 02:52:21
#Julia言語 2次元イジング模型のメトロポリス法によるシミュレーションをJulia言語で書いたシンプルなコードに詳しいコメントを付けておきました。コメントも読めば他言語に翻訳するのは易しいと思います。
gist.github.com/genkuroki/4fa4...
タグ: Julia言語
posted at 02:48:54
#Julia言語 私によるサンプルコードも貼り付けておきます。これは2次元イジング模型のメトロポリス法です。テストでは10億回ループを回していますが、実用にな1000億回は回さないとダメなようです。
コードを見ればわかるのですが、特別な書き方はしていません。
gist.github.com/genkuroki/4fa4... pic.twitter.com/Y3hMyuiyyK
タグ: Julia言語
posted at 01:50:59
#Julia言語【Julia ナイーブに書くだけじゃ速くならなくて色々と idiomatic な書き方しらないとダメ】のような感想に私は異論を持っています。Julia言語を使って速くなったかどうかの判定にはJulia言語以外の対照群を設定しないと何もわかりません。続く
twitter.com/tkf/status/950...
タグ: Julia言語
posted at 01:44:00
@tkf @cometscome_phys #Julia言語 で3×3の s[i,j] 達はメモリ上で
s[1,1]
s[2,1]
s[3,1]
s[1,2]
s[2,2]
s[3,2]
s[1,3]
s[2,3]
s[3,3]
のように並んでいる。行列の横方向と縦方向の走査で計算速度が変わってしまうらしいです。
docs.julialang.org/en/latest/manu...
あと
github.com/stevengj/18S09...
タグ: Julia言語
posted at 01:16:44
@tkf @cometscome_phys #Julia言語 #Ising 「内部」と「境界」にforループを分ける場合には、Julia言語の配列がメモリ上でどのように実現されているかを気にした方が速くなる可能性があると思いました。
ifelseを使った現在の私のコードではすでにそうしているつもりなのですが、効果は観測されませんでした。続く
posted at 01:01:27
@tkf @cometscome_phys #Julia言語 あるときから、「アルゴリズム自体で工夫するよりも、CPUの機能を使ったもっとよい方法がある」という発想が強くなりすぎているような気がします。
「我々」が遊んでいる2D Isingの計算の高速化は「言語やCPUの仕様ではなく、アルゴリズムの違いで勝負する話」に近いと思います。
タグ: Julia言語
posted at 00:58:01
@tkf @cometscome_phys #Julia言語 #Ising きくちさんも書いていましたが、if も ifelse も使わない方法で境界条件を処理する方法があります。私が数ヶ月前にコードを書いたときにはそういうのも試してみました。forループを「内部」と「境界」に分けて、「内部」と「境界部分」での周囲のスピンの和の計算法を変えるだけ。
posted at 00:55:52
@tkf @cometscome_phys そもそも #Julia言語 における
a ? b :c
は
if a
b
else
c
end
と等価だと思いますが、私は何か勘違いしていますか? 添付画像を参照。 pic.twitter.com/Yi9ntpTRfV
タグ: Julia言語
posted at 00:52:41