Twitter APIの仕様変更のため、「いいね」の新規取得を終了いたしました

黒木玄 Gen Kuroki

@genkuroki

  • いいね数 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日(火)

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf @cometscome_phys そもそも #Julia言語 における

a ? b :c



if a
b
else
c
end

と等価だと思いますが、私は何か勘違いしていますか? 添付画像を参照。 pic.twitter.com/Yi9ntpTRfV

タグ: Julia言語

posted at 00:52:41

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf @cometscome_phys #Julia言語 #Ising きくちさんも書いていましたが、if も ifelse も使わない方法で境界条件を処理する方法があります。私が数ヶ月前にコードを書いたときにはそういうのも試してみました。forループを「内部」と「境界」に分けて、「内部」と「境界部分」での周囲のスピンの和の計算法を変えるだけ。

タグ: Ising Julia言語

posted at 00:55:52

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf @cometscome_phys #Julia言語 あるときから、「アルゴリズム自体で工夫するよりも、CPUの機能を使ったもっとよい方法がある」という発想が強くなりすぎているような気がします。

「我々」が遊んでいる2D Isingの計算の高速化は「言語やCPUの仕様ではなく、アルゴリズムの違いで勝負する話」に近いと思います。

タグ: Julia言語

posted at 00:58:01

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf @cometscome_phys #Julia言語 #Ising 「内部」と「境界」にforループを分ける場合には、Julia言語の配列がメモリ上でどのように実現されているかを気にした方が速くなる可能性があると思いました。

ifelseを使った現在の私のコードではすでにそうしているつもりなのですが、効果は観測されませんでした。続く

タグ: Ising Julia言語

posted at 01:01:27

こなみひでお @konamih

18年1月9日

Julia なるものをインストールしてみた。

タグ:

posted at 01:07:17

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@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

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語【Julia ナイーブに書くだけじゃ速くならなくて色々と idiomatic な書き方しらないとダメ】のような感想に私は異論を持っています。Julia言語を使って速くなったかどうかの判定にはJulia言語以外の対照群を設定しないと何もわかりません。続く

twitter.com/tkf/status/950...

タグ: Julia言語

posted at 01:44:00

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 他言語で書いても遅くなるような効率が悪いことをやっている場合にはプログラミング言語と無関係に遅くなっているということ。実際、他言語でも高速計算できる人はJulia言語でもすぐに高速計算できているように見える。(例:きくちまことさん)

タグ: Julia言語

posted at 01:48:10

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 私によるサンプルコードも貼り付けておきます。これは2次元イジング模型のメトロポリス法です。テストでは10億回ループを回していますが、実用にな1000億回は回さないとダメなようです。

コードを見ればわかるのですが、特別な書き方はしていません。

gist.github.com/genkuroki/4fa4... pic.twitter.com/Y3hMyuiyyK

タグ: Julia言語

posted at 01:50:59

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 繰り返し計算される確率を前もって計算して配列 prob に格納していることや、剰余演算ではなくifelseで「周囲のスピンの和」を計算していることは、Julia言語特有の工夫でも何でもなくて、普遍的に通用する工夫です。そのような普遍的な工夫を除けば、メトロポリス法を素直に翻訳しただけ。

タグ: Julia言語

posted at 01:53:14

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 そして、函数の引数の型を指定する書き方を一切していないことにも注目して下さい。sは整数±1のみを成分に持つ2次元配列であることを期待して書かれた函数群なのですが、±1は64bit整数~8bit整数のどれでも構いません。この性質のおかげで色々助かったことはすでに別に書いた。

タグ: Julia言語

posted at 01:58:09

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 メトロポリス法のアルゴリズムをすなおに簡潔に書き下しただけのコード(アルゴリズムを書き下しただけなので型指定はどこでもされていない)で、10億点の更新(100×100の盤面全体を10万回更新)を8秒ちょっとでできているわけです。

タグ: Julia言語

posted at 02:03:59

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 そして、計算だけではなく、プロットのコードも含めて(空行を除いて)30行足らずです。「s::Array{Int8,2}」のような面倒な型指定を一切していないので、非常にすっきりしています。

タグ: Julia言語

posted at 02:07:12

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 2次元イジング模型のメトロポリス法によるシミュレーションをJulia言語で書いたシンプルなコードに詳しいコメントを付けておきました。コメントも読めば他言語に翻訳するのは易しいと思います。

gist.github.com/genkuroki/4fa4...

タグ: Julia言語

posted at 02:48:54

tₖᶠ @tkf

18年1月9日

@genkuroki まず優れたアルゴリズム (hot-loop 中の計算をなるべく外に出す、等) を用意しないと速くならないのは当然です。それが出来た上で、さらに高速化するために言語機能を色々と知らないといけないことについての意見でした。他言語との比較が必要なのは同意です。

タグ:

posted at 02:52:21

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#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

tₖᶠ @tkf

18年1月9日

@genkuroki @cometscome_phys そのようですね。他の言語と勘違いしていたみたいです。

タグ:

posted at 03:15:36

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 「トップレベルにコードを書かずに函数の中に入れる」というのはJulia言語特有の事情ですが、それは仕方がない。

私が公開したコードを見ればわかるように、特別な書き方をしなくてもJulia言語は速い。Julia言語は特別な書き方をしなくても速い。これが事実。

twitter.com/wx257osn2/stat...

タグ: Julia言語

posted at 03:17:27

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 他にも「特別な書き方をしなくてもJulia言語は速い」ことを実証する事例はあります。最近話題の

qiita.com/ceptree/items/...

でもプログラムの書き方に何か特別なところは全然なくて、素直にアルゴリズムを翻訳しているだけ。function main() ~ end で囲んで実行するだけで爆速。

タグ: Julia言語

posted at 03:21:55

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 あと名前を出したのできちんと擁護しておきます。私は最近、きくちまことさんに教えてもらって大変勉強になりました。きくちさんのイジングのプログラムが速いのはアルゴリズムで工夫しているからです。教えてもらった通りに私が書いたプログラムを変更したら、実際に速くなりました。

タグ: Julia言語

posted at 03:23:22

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 は、トップレベルではなく函数の中に書いていれば、アルゴリズムを素直に翻訳したコードが速いです。だから、高速なアルゴリズムを思い付く能力とそれを素直にコード化する能力があるかどうかでかなり差が出る言語かもしれません。

ごちゃごちゃ複雑なことをすると失敗する。

タグ: Julia言語

posted at 03:29:45

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 上の方で公開した2D Isingのコードはまだアルゴリズムの面で改善の余地が残っています。周期境界条件で周囲のスピンの和を取る函数でifelseを使っていますが、forループを「内部」と「境界」に分ければ、ifelseも消し去ることができます。しかし、サンプルコードとしては複雑になりすぎる。

タグ: Julia言語

posted at 03:37:39

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 2次元イジング模型へのメトロポリス法の適用のサンプルコード

gist.github.com/genkuroki/4fa4...

添付画像を見てもらえればわかるようにシンプルで短いです。
10^9回ループを回すのに8秒ちょっとかかっています。
inboundsなどの高速化のための処置は一切施していません。 pic.twitter.com/dToIYDzB0N

タグ: Julia言語

posted at 03:48:19

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 2次元イジング模型は色々な意味でとてもかわいい模型なのでもっと流行して欲しいと思っています。

コードを見てもらえればわかるようにシンプルな話です。ベイズ推定で使われているMCMCシミュレーションの簡単な場合になっています。もっと効率の悪いコードから改善すると色々勉強になる。

タグ: Julia言語

posted at 03:53:24

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf ええと、Julia言語に限定すれば、言語機能を色々知らなくても十分に速いですよね。これは非常に重要なポイントで、特別な「おまじない」抜きにアルゴリズムを素直に翻訳したコードが速いというのは大変なメリットです。そこから先の最適化は特別な高速化が必要な場合にのみやる意味がある。

タグ:

posted at 04:16:01

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf Julia言語でナイーブに書くだけじゃ速くならない例を一つ以上挙げて頂けませんか?

私に限らず複数の人がJulia言語でナイーブに書いて十分に速い例を幾つも挙げています。まだ見たことがないので「Julia言語でナイーブに書くだけじゃ速くならない例」です。

タグ:

posted at 04:20:09

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf 「Julia言語でナイーブに書くだけじゃ速くならない例」の具体的なコードを見せて下さい。

タグ:

posted at 04:23:04

ceptree @ceptree

18年1月9日

Qiitaの記事をjupyter notebookにして、GitHubGistにあげてみた
gist.github.com/ceptreee/44d3d...

タグ:

posted at 04:23:19

tₖᶠ @tkf

18年1月9日

@genkuroki 「そこから先の最適化」のために Julia の機能を知らないとダメだけれど、それらの機能を知らなくても出せるスピードのリミットをもっと上げて欲しい (+将来的には上げてくれるのではという期待)、というのが元のツイートの意図でした。

タグ:

posted at 04:24:42

tₖᶠ @tkf

18年1月9日

@genkuroki 内積を3パターンで書きました。少しずつJuliaの機能を使っていって少しずつ速くなっています。 gist.github.com/89d489802f51a2... pic.twitter.com/7DHPfLXoON

タグ:

posted at 04:40:02

tₖᶠ @tkf

18年1月9日

@genkuroki 最初の dot0 がナイーブなコードです。 Julia の型推論について知らないとこのコードを書いてしまうと思います。a と b が両方共 Array{Int} なら dot0 と dot1 の速度は変わりませんが、 Array{Float64} だと dot0 はノートブックにあるベンチマークの通り、かなり遅いです。

タグ:

posted at 04:45:50

tₖᶠ @tkf

18年1月9日

@genkuroki dot1 や dot2 も完全に idiomatic な Julia ではなく、 a::Array{Int}, b::Array{Float64} の場合に備えるなら s = zero(promote_type(eltype(a), eltype(b))) などとする必要があります。

タグ:

posted at 04:53:25

ceptree @ceptree

18年1月9日

もう少し詳しく書くと、同一ファイルでjuliaとPythonを変更できるので、あるセルではjuliaで実行して、別のセルではPythonで実行するということができた。

タグ:

posted at 06:18:08

非公開

タグ:

posted at xx:xx:xx

積分定数 @sekibunnteisuu

18年1月9日

#超算数 商品をまとめて買う場合と別々に買う場合で式を書き分けるという指導
www.saitama-city.ed.jp/03siryo/sidoua...

タグ: 超算数

posted at 07:26:11

hase @hase3desu

18年1月9日

教える方は「あわせて」で判別させたら楽だものな

教える内容の優先事項が第一に教師が教えやすいかどうか、第二にテストに出るかどうか。
正確さに関しては「正しいことを言っても伝わらなければ意味がない」
#超算数 twitter.com/pakiene/status...

タグ: 超算数

posted at 08:13:17

(「・ω・)「ガオー @bicycle1885

18年1月9日

Juliaステッカーまた2つ出品しました。値段+50円になってるのは封筒代などを勘定に入れてなかったからです。

タグ:

posted at 09:04:45

ɥozɐʞıɥ @hikazoh

18年1月9日

Julia面白いな。今年はJuliaも頑張ってみますかね。

タグ:

posted at 09:44:42

くずの王子様 @kz_kiyoshi

18年1月9日

JuliaがTLで局所的に流行っているのはいいのだけど,まとまったいい本とかあるのだろうか.

タグ:

posted at 10:04:32

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf いきなり s = 0 から s = zero(eltype(a)) なんて難しい書き方にジャンプするから、「Julia特有の書き方をしないと速くならない」と誤解してしまうのだと思います。 s = 0.0 と初期化すれば dot1 と結果的に同じになります。

あとnboundsにするかどうかをどのように書くかは言語依存なのは当然。

タグ:

posted at 11:29:24

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf 訂正:inboundsのiが抜けました。

inboundsについては、実例が最近話題の

qiita.com/ceptree/items/...

にあります。ブログ筆者はJulia言語のinboundsマクロの存在を最初知らなかったのですが、Cythonでwith boundscheck(False)としている例をコメント欄で教えてもらって、存在に気付いています。続く

タグ:

posted at 11:45:17

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf そして、Julia言語にも対応するマクロがあることを調べ、次のブログ記事
qiita.com/ceptree/items/...
ではそれも試している。

inboundsの件は「Julia特有の書き方をしないと速くならない」場合に含めるのではなく、「その機能の存在を知っていれば速くできる」場合に含めるべきだと思いました。

続く

タグ:

posted at 11:52:32

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf dot2 は例から削除して問題ないと思いました。

それに対して、dot1は微妙です。

個人的には、Julia言語を知らない人であっても、アルゴリズム設計のときに、「浮動小数点数だと思っているものを整数で初期化したりしない」となって欲しいのです。続く

タグ:

posted at 11:55:07

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf しかし、整数と浮動小数点の区別さえしない人が速度を求めてJulia言語を使いたいと思うかもしれない。

そこはある程度Julia言語側が技術的に対応可能かもしれない部分なので、私もがんばって欲しいと思います。dot1のsは「Int64またはFloat64」ではなく、Float64だと判定して欲しいです。続く

タグ:

posted at 12:11:02

非公開

タグ:

posted at xx:xx:xx

すとまと @stmtk_yu

18年1月9日

@sei06k14 流行ってるなあれ。僕もそのうち触りたい

タグ:

posted at 12:14:02

tₖᶠ @tkf

18年1月9日

Julia の数値リテラルの型を勝手に推定してくれるのって将来的にはやってくれそうだけどどうなんだろう。 Haskell とか型を勝手に決めてくれなかったっけ。

タグ:

posted at 12:16:21

非公開

タグ:

posted at xx:xx:xx

すとまと @stmtk_yu

18年1月9日

@sei06k14 は?フレキシブルにも程がある。やべぇwwwww

タグ:

posted at 12:18:27

すとまと @stmtk_yu

18年1月9日

Juliaやべえな。rubyなんか比じゃない

タグ:

posted at 12:19:23

(「・ω・)「ガオー @bicycle1885

18年1月9日

@tkf Juliaでは型の宣言がないぶんリテラルの型情報が重要な意味を持つのでちょっと難しい気もします。

タグ:

posted at 12:19:47

非公開

タグ:

posted at xx:xx:xx

すとまと @stmtk_yu

18年1月9日

@sei06k14 人によって全然書き方違いそうだし、共同作業には向いてなさそうだけど個人で作業するならこれって感じじゃん

タグ:

posted at 12:23:34

非公開

タグ:

posted at xx:xx:xx

すとまと @stmtk_yu

18年1月9日

Juliaが最近人気な理由がよくわかった。わけわかんねぇぐらいすごい

タグ:

posted at 12:28:25

(「・ω・)「ガオー @bicycle1885

18年1月9日

ブログ記事書いてもはてブもアクセス数も稼げないからJuliaはダメ

タグ:

posted at 12:29:14

horiem @yellowshippo

18年1月9日

MATLAB やってたときはなんだこのレガシー言語はと思っていたが、Python といい Julia といい、MATLAB に近い表現が多い言語が流行ってるので MATLAB の経験には非常に助けられている。ようは高級言語でも行列演算を最適にやりたいってニーズが高まってるんだと思うんだけど。

タグ:

posted at 12:34:04

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf しかし、「引数の型が変わっても適切に型推定されるように書く」という習慣はJulia特有のものですが、「整数型と浮動小数点型を区別する」ことは普通です。

「sをs=0ではなく、s=zero(eltype(a))と初期化すること」はJulia言語特有の習慣ですが、「sをs=0.0と初期化する」のは普通。続く

タグ:

posted at 12:55:01

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf #Julia言語 浮動小数点数になる予定のsの初期化の仕方を「s=0」からいきなり「s=zero(eltype(a))」に飛躍させて、「Juliaはナイーブに書くだけじゃ速くならなくて色々とidiomaticな書き方しらないとダメ」と決め付けてしまうのは、ミスリーディングであり、非常によろしくないと思いました。

タグ: Julia言語

posted at 12:59:38

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf #Julia言語 続き。「浮動小数点数になる予定のsはs=0と整数の0で初期化するのではなく、s=0.0と初期化する」という素朴なスタイルで書くだけでも実用的でかつ速いので、「Juliaは色々とidiomaticな書き方をしないと速くならない」というような**誤解**を広めないようにした方がよいと思いました。

タグ: Julia言語

posted at 13:05:57

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf #Julia言語 に関するまとめ:

* 「idiomaticな書き方をしないと速くならない」という主張は誤り。

* 浮動小数点になる予定の変数sをs=0と整数で初期化するようなことをすると遅くなる場合があるが、s=0.0と浮動小数点数の0で初期化する程度のことで十分に速い。

* inboundsなどもできて速い。

続く

タグ: Julia言語

posted at 13:11:56

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf #Julia言語 に関するまとめ続き:

* 変数sをs=zero(eltype(a))のように初期化することはJulia言語特有のスタイル。計算速度だけが問題ならば「s=0.0」のような普通のスタイルで十分。計算速度だけの問題ではなく、配列aの要素の型が変わっても適切なアルゴリズムで計算して欲しいときにそうする。

タグ: Julia言語

posted at 13:16:15

(「・ω・)「ガオー @bicycle1885

18年1月9日

ワシの輸入したJuliaステッカーが日本全国に拡散していく (今日は4件発送する)。

タグ:

posted at 13:17:07

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf #Julia言語 続き。

* 「s=0」から「s=0.0」という普通の書き方を経由せずに、計算速度だけがメリットではない「s=zero(eltype(a))」のようなJulia言語特有の書き方に飛躍して、「Juliaはidiomaticな書き方をしないと速くならない」かのように誤解させるようなことは言わない方がよい。

以上です。

タグ: Julia言語

posted at 13:19:19

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf #Julia言語 訂正補足:「配列aの要素の型が変わっても適切なアルゴリズムで計算して欲しいときにそうする」の「そう」は「s=zero(eltype(a))のような書き方を」という意味です。文字数の都合でそう書けませんでした。その辺のことをメンションを外してもう少し詳しく説明します。

タグ: Julia言語

posted at 13:21:23

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tkf #Julia言語 すみません。示すべきnotebookを示すのを忘れていました。

浮動小数点数になる予定のsの初期化の仕方をs=0からs=0.0に変えるだけで速くなることの証拠物品です。

gist.github.com/genkuroki/8451...

タグ: Julia言語

posted at 13:28:24

I @wx257osn2

18年1月9日

@genkuroki 一応一言付け加えておくと,このツイートは twitter.com/genkuroki/stat... までしか存在しなかった状態かつ私がJuliaのコードを見たことがない状態での発言(「言葉尻だけ捉えればその理論だけではまだ穴があるのでは」)であり,ぶっちゃけクソリプの類なのであんまり本気になさらないでください.

タグ:

posted at 13:28:59

くのちゃん @nokuuun

18年1月9日

ドイツの大学/研究組織のコンソーシアムが、エルゼビアの高騰する購読料とOA化への拒否に対抗して、全大学規模で2017年末に契約を打ち切った件。まさかのエルゼビアがしたてに回って、一時的に無料でアクセスをゆるす胸熱な展開になってる。
www.nature.com/articles/d4158...

タグ:

posted at 13:44:23

ceptree @ceptree

18年1月9日

@MathSorcerer また暇だったら書きます!ちなみにこちらに上げてます。基本的にjuliaで実行してますが、途中一部だけPythonのに変更してます。

twitter.com/ceptree/status...

タグ:

posted at 14:55:00

nishinojunji にしの@ ∴ @nishinojunji

18年1月9日

ちょっと julia もやらないと。

タグ:

posted at 15:26:58

非公開

タグ:

posted at xx:xx:xx

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 小ネタじゃない話

「Julia言語を使うには、結局のところ、Julia言語特有の一般的ではない書き方を覚えないといけない」というような誤解があるように思ったので次のノートブックを作成しました。

gist.github.com/genkuroki/d5f8...
変数を適切な型で初期化することについて

タグ: Julia言語

posted at 16:19:32

(「・ω・)「ガオー @bicycle1885

18年1月9日

全盛期のJulia伝説
「1クロック5命令は当たり前,1クロック8命令も」
「スクリプトを実行しようとしたらもう結果ファイルができていた」
「バブルソートを実装したらO(1)で動作した」
「ビットを勢い良くシフトしたら隣のマシンに移動してた」

タグ:

posted at 16:20:49

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 について

* 高速で計算して欲しいコードは必ず函数の中に入れる.

は常識になってきている。. 個人的にあともう一つ常識になるべきだと思うのは

* T型になるはずの変数をT型以外の数値で初期化しない.

例えば

* 浮動小数点型になるはずの変数を整数値で初期化しない.

続く

タグ: Julia言語

posted at 16:25:11

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 例えば、配列xの和を取る函数

f(x) = (s=0; for i in endof(x); s+=x[i]; end; s)

を浮動小数点数を成分に持つ配列 x に適用すると、sが整数値0で初期化されているのに、足し合わせる x の成分は浮動小数点数なので、Julia言語は高速に計算してくれなくなります。続く

タグ: Julia言語

posted at 16:30:33

ceptree @ceptree

18年1月9日

まさに知りたかった@ code_warntype の出力結果の解説があるので、私のようなjuliaに移って高速化を意識し始めた人にオススメです twitter.com/genkuroki/stat...

タグ:

posted at 16:30:50

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 浮動小数点数の和を計算するのだから、sの初期値は浮動小数点数のゼロになって欲しい。

f(x) = (s=0.0 for i in endof(x); s+=x[i]; end; s)

のように s=0.0 と初期化すればJulia言語は速く計算してくれるようになります。この点はJulia言語を使い始めた人が必ずはまることだと思う。続く

タグ: Julia言語

posted at 16:34:13

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 続き。しかし、この問題をJulia言語の問題だと考えることは適切ではないと思う。変数の中に具体的に何が入っているか(例えば整数なのか浮動小数点数なのか)が曖昧な状況で高速に計算する方法はないと思います。計算結果がT型になるならば変数もそれに合う型で確保しなければいけない。

タグ: Julia言語

posted at 16:36:57

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 問題は変数確保のときにどのようにして型を指定するかです。

Julia言語では、 0.0 はFloat64型の浮動小数点数なので、変数 s を Float64型で初期化したければ s = 0.0 と書けばよいです。この書き方はJulia言語だけの特別な書き方ではなく、他の多くの言語と共通する書き方でしょう。続く

タグ: Julia言語

posted at 16:41:15

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 続き。0は整数のゼロなので、sは浮動小数点数のつもりなのに、s=0と初期化すると問題が生じる可能性が増す。

しかし、この辺は結構ゆるくて、例えば、

s=zeros(10)

と初期化すると、sは0.0が10個並んだ配列になるのですが、その後に、

s[1]=1

としてもs[1]は1.0になってくれます。続き

タグ: Julia言語

posted at 16:46:45

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 続き。配列を確保するときに、配列の中身の型が目的に合わせて適切になるようにしておけば、その後はかなりテキトーな書き方をしても問題ない感じ(問題が生じる場合があるなら教えて下さい)。

変数の初期化を適切な型で行なえば計算が遅くなることはあんまりないはず。

タグ: Julia言語

posted at 16:49:42

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 xが浮動小数点数の配列ならば、

function f(x)
s=0.0 #←sを浮動小数点数で初期化
for i in endof(x)
s+=x[i]
end
s
end

とすればよいということを知っているだけで、相当に楽になると思います。

私は以下のノートブックでこの段階を「レベル2」と呼んでいます。

タグ: Julia言語

posted at 16:53:39

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 「レベル1」は「函数の中に計算のコードを入れる」です。

レベル2のスタイルで書かれたコードはJulia言語特有の書き方を含まないのに高速になります。しかし、それだとJulia言語の高速性しか使っていないことになり、ちょっと残念かもしれません。Julia言語特有の機能は素晴らしいです。

タグ: Julia言語

posted at 16:56:08

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 の特徴は「引数が複数の型を取り得る場合であっても高速に動作する函数を書けること」です。レベル2のやり方だと浮動商薄点数の配列を引数とするときにのみ使える函数になってしまいます。例えば、整数や有理数の配列に使用すると計算結果が浮動小数点数に丸められてしまう。

タグ: Julia言語

posted at 16:58:15

ごまふあざらし(GomahuAzaras @MathSorcerer

18年1月9日

Juliaちゃん.たかだか数行なのに読み込みと何かの処理で時間がかかるのはいただけない・・・.
Matplotlibに浮気しちゃうぞー. pic.twitter.com/Skh9oztoEc

タグ:

posted at 16:58:16

Qaleidospace @Qaleidospace

18年1月9日

"Juliaの速さを体感する" qiita.com/ceptree/items/... (15.6 pt) by @ceptree | 72 Hours 2nd qaleido.space/?type=72hours

タグ:

posted at 17:00:02

黒木玄 Gen Kuroki @genkuroki

18年1月9日

レベル2での利用によって #Julia言語 を手軽に高速計算に利用できることに気付いた人が次に進むべきレベルは「想定される引数の型が複数であっても適切に処理できる函数の書き方を知ること」だと思います。これは「multiple dispatchを利用すること」と表裏一体。

タグ: Julia言語

posted at 17:00:27

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 以上で述べた

レベル2→Julia言語特有の書き方をせずに高速計算するためにはこれで十分

レベル3&レベル4→Julia言語特有の書き方と機能の面白さを知る

という話は既出の次のノートブックにも書いてあります。興味がある人は見て下さい。

gist.github.com/genkuroki/d5f8...

タグ: Julia言語

posted at 17:02:58

てらモス @termoshtt

18年1月9日

OpenLibmってJuliaのサブプロジェクトだったのかΣ(゚Д゚)

JuliaLang/openlibm: High quality system independent, portable, open source libm implementation github.com/JuliaLang/open...

タグ:

posted at 17:03:12

Naoaki ONO @naono_twt

18年1月9日

なぜ僕らはJuliaを作ったか(翻訳) - 丸井綜研 marui.hatenablog.com/entry/20120221...

タグ:

posted at 17:24:17

ceptree @ceptree

18年1月9日

簡単なコードでJuliaの@ code_warntypeと@ code_llvm比較したら余裕じゃねって思ってたけど、for文いれた瞬間にわけわかめだった

タグ:

posted at 17:40:19

ごまふあざらし(GomahuAzaras @MathSorcerer

18年1月9日

conda パッケージを Juliaから追加しよう on @Qiita qiita.com/tenfu2tea/item...

タグ:

posted at 17:43:04

dc1394 @dc1394

18年1月9日

Juliaが流行っているようなので、私もJulia覚えるか…。

タグ:

posted at 17:46:05

むそうかん @musokan

18年1月9日

@ceptree 【続編】Qiitaより@ceptreeさんによる「Juliaの速さを体感する2」。qiita.com/ceptree/items/...

タグ:

posted at 18:09:28

ごまふあざらし(GomahuAzaras @MathSorcerer

18年1月9日

PyCall のPythonのバージョンを変えるとき際に・・・WindowsユーザーはPathの¥を二回打つことに注意しないといけない・・・. pic.twitter.com/U5vfpNBQGu

タグ:

posted at 18:23:52

ごまふあざらし(GomahuAzaras @MathSorcerer

18年1月9日

やっとWindows上でJuliaカーネルノートブックでPythonのコード呼び出すことができた・・・. pic.twitter.com/0g9L2zWvLw

タグ:

posted at 18:28:06

非公開

タグ:

posted at xx:xx:xx

エヌユル @ncaq

18年1月9日

あ,juliaインストールできた

タグ:

posted at 18:47:02

driller/どりらん @patraqushe

18年1月9日

最近Juliaの記事をよく見る気がする

タグ:

posted at 19:11:27

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 以下のノートブックを更新しました。

gist.github.com/genkuroki/d5f8...

レベル2の段階まで注意を払うだけで気楽に高速計算してくれる点がJulia言語の大きな特徴。

タグ: Julia言語

posted at 19:39:52

黒木玄 Gen Kuroki @genkuroki

18年1月9日

みんなで、Julia言語を十分に理解しないままで、物理的に意味のある数値計算を十分高速に実行して楽しめている状況の中で、無粋なことを言う人がいるのはちょっと心外な感じ。Julia言語は十分に理解していなくても、高速計算を気軽に楽しめるプログラミング言語だと思う。

タグ:

posted at 19:43:19

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 少し前にきくちさんが、周囲のスピンの和をifやifelseを使わずに計算するようにすれば速くなる、と言っていたような気がします。それは非常にもっともなので、私も昨晩実行してみました。

nbviewer.jupyter.org/gist/genkuroki...

のIn [2]のising2d_sweep! 函数がそれです。続く

タグ: Julia言語

posted at 19:46:24

NOBIE.jl @NOBIE41

18年1月9日

@genkuroki せ、センセー!! 去年書かれたのですか!?(日付)

タグ:

posted at 19:47:52

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 ifelseを使っていた場合には1億点の更新に0.84秒かかっていたのですが、使わないようにする改良によって0.65秒で計算できるようになりました。2割位速くなっています。これで、100億点(100×100の盤面全体を100万回更新)を1分ちょっとできるようになりました。

タグ: Julia言語

posted at 19:49:37

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 おまじない的に @ fastmath @ inbounds @ simd (@ の後の空白は除く)を追加してありますが、これを付けても計算が高速化してい感じはしません(残念、使い方が悪いのか?)。

計算の高速化は実施的にアルゴリズムの改良のみで実現されています。

タグ: Julia言語

posted at 19:51:48

あ〜る菊池誠(反緊縮)公式 @kikumaco

18年1月9日

Juliaをいじってる余裕がないので話だけ書きますが、イジングモデルの各スピンが持つ情報は1ビットです。そこでひとつのワードに多数のスピンを詰め込む「マルチスピンコーディング」という考え方があります。バリエーションがあるのですけど、僕は「ビットごとに違う温度」で並列計算していました

タグ:

posted at 19:52:42

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 最初のバージョンでは1億点の更新に11秒程度かかっていたので、0.65秒まで縮まったのは非常に気分がいいです。

1000億点更新して100コマのGIFアニメーションを作るのに11分ちょっと(667秒)の時間がかかっています。GIFアニ作成に40秒ほどかかるので、計算時間は10分半程度です。

タグ: Julia言語

posted at 19:55:39

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 最初のバージョンでは1000億点の更新には11000秒=約3時間なので、3時間かかっていたはずの計算がアルゴリズムの改良で10分半で終わるようになったわけです。この違いは非常に大きいです。

なるほど、これは「非常に楽しい」です。

タグ: Julia言語

posted at 19:57:40

ceptree @ceptree

18年1月9日

いま自分のQiitaの記事を@ code_typedでみてたら2点ほど型変換してるとこあった、これでもうひとネタ書けそう twitter.com/genkuroki/stat...

タグ:

posted at 19:59:38

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 しかし、函数定義の行数は増えました。最初のバージョンでは十数行だったのが、現在のバージョンでは40行を超えています。

実は行数が増えたせいで、m-1までforループを回すべきところを最初m-2と誤って入力してしまっており、全く更新されないラインができるバグが発生しました。

タグ: Julia言語

posted at 20:02:15

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 計算結果のアニメーションを表示するようにしてあったおかげで、バグが発生していることにすぐに気付きました。

旧版の ising2d_sweep_ifelse! と新版の ising2d_sweep! による更新結果が完全に等しくなることも確認してあるので、現在の版はバグが取れていると思います。

タグ: Julia言語

posted at 20:03:53

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 モンテカルロシミュレーションなので「更新の結果が等しくなることを確認した」の部分で「あれ?」と思った人もいると思います。擬似乱数のシードを両方同じにして同一の擬似乱数が発生するようにして、同じ結果になることを確認しました。

タグ: Julia言語

posted at 20:05:21

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 ifelseを消して高速化する前のバージョンは

gist.github.com/genkuroki/4fa4...

に抜き出して、サンプルコードとして読み易くしてあります。10億点の更新に8.3秒程度かかっています。ifelseを消すと完全に同一の結果を得るために必要な時間が2割ほど減ります。

タグ: Julia言語

posted at 20:08:21

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 添付動画は100×100の2D Isingの盤面全体のメトロポリス更新を1000万回行った場合(1000億点更新の場合)の動画です。 pic.twitter.com/7ylqtSBX4P

タグ: Julia言語

posted at 20:10:58

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 添付画像はスピンの平均値の分布です。最小-1、最大1になりえる。きちんと左右対称になっている。バグが発生している状況では1000億点更新しても左右対称にならず、「うぎゃ!」となりました。 pic.twitter.com/cJpvxuDMc5

タグ: Julia言語

posted at 20:14:39

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 一度バグが発生すると疑心暗鬼になって大変でした。モンテカルロシミュレーションなのでアニメーションを見てわからないバグが残っているかもしれない。疑い出すときりがありません。

結局、シンプルで誤りが無さそうな旧版とぴったり同じ結果になることを確認してすっきりしました。

タグ: Julia言語

posted at 20:19:31

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@NOBIE41 さんきゅ!今から直します!こういう誤りを教えくれる人って大好きです。どうもありがとうございます。

タグ:

posted at 20:23:27

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@NOBIE41 直しました。さんくす。

タグ:

posted at 20:24:50

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@ceptree たぶん「2つの1」のことだと思います。楽しみに待っています。

タグ:

posted at 20:39:06

shin @Matz_Shin

18年1月9日

イジングモデルの数値計算は業務で一度組んだ事がある。得られた結果をタイトバインディング近似のバンド計算プログラムに突っ込んだ。

タグ:

posted at 20:39:29

shin @Matz_Shin

18年1月9日

三角格子では絶対零度でもエントロピーが残ることは計算して気がついた。良く知られている結果だったが。 twitter.com/Matz_Shin/stat...

タグ:

posted at 20:41:00

shin @Matz_Shin

18年1月9日

三角格子のイジング模型→バンド計算→電子のアンダーソン局在とか、結構かっこいい仕事だったと自画自賛している。遊びじゃなくて現実の材料でこれを考えた経験のある人は、ガチの物性屋でも珍しいのではなかろうか。 twitter.com/Matz_Shin/stat...

タグ:

posted at 20:43:49

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 Pythonをすでに使っているもしくはPythonを勉強し始めた人はJulia言語もインストールしておくと楽しみが増えるかも。Jupyter notebookで使えるし。Julia言語側からPythonのライブラリを結構簡単に使えます。さらなるJulia側の仕様変更でさらに相性がよくなることはほぼ確実。

タグ: Julia言語

posted at 21:55:16

adhara_mathphys @adhara_mathphys

18年1月9日

最近はTLでは(Juliaなどを使った)数値計算の例として二次元イジング模型が盛んに扱われていますが、この相関関数とパンルヴェ方程式が関係があるという話です。
twitter.com/adhara_mathphy...

タグ:

posted at 21:57:44

ʇɥƃıluooɯ ǝıʇɐs @tsatie

18年1月9日

今宵も少しjuliaをさらう。とはいえ昨日気になってお伺いを立ててた3^n±2の素因数分解。今日はn=2から順に調べさせた。途中でも分かった結果が逐次出力されるので面白いが矢張り所々猛烈に待ち時間が。其処で今日は@timeを仕込んで時間を計測してる。色々と興味深い。

タグ:

posted at 21:58:06

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@ceptree JupyterでSoSカーネルを使っていたりするのですか? #Julia言語

vatlab.github.io/blog/post/sos-...

タグ: Julia言語

posted at 22:21:10

ʇɥƃıluooɯ ǝıʇɐs @tsatie

18年1月9日

@konamih 十分使えそう、、、は撤回。今時間計測しながらn=90からn<=100までお伺いを立ててるけどいきなり7.089second。35.52% gc time とあるけど此のgcって何やろ?ガベージコレクション?いやそもそもガベージコレクション自体がPrologの頃から今一つわかってないが。

タグ:

posted at 22:28:14

てらモス @termoshtt

18年1月9日

Juliaをコマンド一つでインストールOSがありまして、ArchLinuxって言うんですけど…

タグ:

posted at 22:29:28

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#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

てらモス @termoshtt

18年1月9日

インストール*出来る*OS

タグ:

posted at 22:30:01

ceptree @ceptree

18年1月9日

@genkuroki そんな高度なことはやってないです。自分で見つけたので使い方合っているかわかりませんが、Kernel→Change KernelでPythonかJuliaを選べました。 pic.twitter.com/ZEtb3Z2Zyd

タグ:

posted at 22:30:40

黒木玄 Gen Kuroki @genkuroki

18年1月9日

#Julia言語 私はWindows 8.1でAnaconda3+Julia v0.6.2の組み合わせでJupyter notebookを使っています。同じような環境を作りたい人は私のインストール記録

nbviewer.jupyter.org/gist/genkuroki...

が役に立つと思います。

タグ: Julia言語

posted at 22:31:45

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@ceptree ああ、なるほど、PythonとJuliaのカーネルを切り替えていたのですね!
コロンブスの卵!

タグ:

posted at 22:37:20

ʇɥƃıluooɯ ǝıʇɐs @tsatie

18年1月9日

@konamih #julia そして92で詰まってるので棄権した。この辺りの途中で放棄って適当で良いのやろか?そんな事も分からない。何ができるか分からないと何を自分で組めば良いかも分からないので辛い。みんな解析系な情報ばかりなのか。

タグ: julia

posted at 22:37:22

てらモス @termoshtt

18年1月9日

Juliaはマクロ書くの楽しそう

タグ:

posted at 22:49:00

てらモス @termoshtt

18年1月9日

気がつくとJuliaインタプリタが生えてるくらいになりたい

タグ:

posted at 22:50:01

τακυ @phy_neko

18年1月9日

@genkuroki そうですね。

タグ:

posted at 22:52:38

シキノ @sikinote

18年1月9日

juliaの配列が1からっていうのfortran使ってた側から見ると非常に嬉しい。

タグ:

posted at 22:58:16

(「・ω・)「ガオー @bicycle1885

18年1月9日

Juliaのブーム,どうせ1日か2日くらいで終わるだろうと思ったが,1週間経つけど未だにチュートリアルへのアクセス数がが落ちない(むしろちょっと伸びてる)。
github.com/bicycle1885/Ju... pic.twitter.com/VWpARTbeyv

タグ:

posted at 22:58:43

ceptree @ceptree

18年1月9日

Julia炎上してる twitter.com/bicycle1885/st...

タグ:

posted at 22:59:40

takscape @takscape

18年1月9日

Julia自体は科学技術計算にはとても良い言語だと思うんですけどね。

タグ:

posted at 23:04:49

こばし かずひで @_kobashi

18年1月9日

せっかくシラバスを見直す機会あったので、プログラム演習3に Julia って書いておこうかな。まだ1行もコード書いたことないけど。

タグ:

posted at 23:10:10

takscape @takscape

18年1月9日

Juliaのいいのは、まず各種精度の数値型が取り揃えられており、シームレスに利用できること。また丸めやepsilon関連などの数値計算に必要な機能が整備されてること。

タグ:

posted at 23:12:29

ʇɥƃıluooɯ ǝıʇɐs @tsatie

18年1月9日

#julia だけどPermutations使えない。どないなっとるのやろ。安定してへんからやろか。

タグ: julia

posted at 23:12:33

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@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

ʇɥƃıluooɯ ǝıʇɐs @tsatie

18年1月9日

@genkuroki 使えてる♬ パッケージはちゃんと入ってるようなのだが何がいけないのか。そもそも #julia (小文字ですぞ)で開くコンソールで入れても #Jupyter (此方は大文字なのか、でノートブックは要らんか?)で実行しても同じなのか?何か色々と分からない。

タグ: julia Jupyter

posted at 23:25:36

黒木玄 Gen Kuroki @genkuroki

18年1月9日

@tsatie どう使えていないかが不明

タグ:

posted at 23:27:36

@genkurokiホーム
スポンサーリンク
▲ページの先頭に戻る
ツイート  タグ  ユーザー

User

» More...

Tag

» More...

Recent

Archive

» More...

タグの編集

掛算 統計 超算数 Julia言語 数楽 JuliaLang 十分 と教 モルグリコ 掛け算

※タグはスペースで区切ってください

送信中

送信に失敗しました

タグを編集しました