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月05日(金)

け @ke_math

18年1月5日

juliaproっておう謎のjuliaがあったから試しに入れてみたけど, ただの全部乗せって感じでプロ向けではなかった

タグ:

posted at 00:07:38

け @ke_math

18年1月5日

何も考えたくない人向けのjuliaって感じがした

タグ:

posted at 00:07:59

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang

nbviewer.jupyter.org/gist/genkuroki...
大域変数を含む函数は遅くなる

fは大域変数を含み、gは定数を含み、hはローカル変数を含む。
それぞれの実行に要する時間は

f(10^8) → 4.742593 seconds
g(10^8) → 0.230339 seconds
h(10^8) → 0.235304 seconds

メモリの使用量も段違い。

タグ: JuliaLang

posted at 00:08:02

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang

{at}code_warntype f(10^8)

とすると赤字で Any と表示される部分が出て来る。これは悪い兆候。グローバル変数aのせいで、s=0.0としてあるにもかかわらず、sの型をAnyとせざるを得なくなってしまっている。

タグ: JuliaLang

posted at 00:09:38

NOBIE.jl @NOBIE41

18年1月5日

この辺の仕様、Julia開発者から「大域変数なんてもの使うな」「まともなプログラミングスタイルを身に付けろ」という強いメッセージを感じる。 twitter.com/genkuroki/stat...

タグ:

posted at 00:11:05

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang いつも悩むのが計算が複雑な定数を函数の中で使用したい場合。Julia言語的にはマクロで計算が複雑な数を定数として定義するようにしてしまえばよいのかもしれませんが、マクロについてまだよく理解していないので、

続く

タグ: JuliaLang

posted at 00:11:17

斉藤 淳 『アメリカの大学生が学んでいる @junsaito0529

18年1月5日

「財政破綻後の日本経済の姿」に関する研究会:これまでの経過と内容 www.carf.e.u-tokyo.ac.jp/research/zaise...
このサマリーを見ていると、「掛け算に順番がある」という主張に共通する怖さを感じてしまう。

タグ:

posted at 00:11:27

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 続き~以下のようなことをすることが多い:

function make_h()
local c = 2*Float64(π)

function h(N)
local s = 0.0
for i in 1:N
s += c*rand()
end
return s/N
end

return h
end

h = make_h()

h(10^8)

タグ: JuliaLang

posted at 00:12:22

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 続き。実戦でこれをやる場合には c は配列であることが多く、配列 c の計算にはそれなりに手間がかかる。(cに当たるものの例:Euler変換で使用されるウェイト)

これで十分に速いことを知っているので、実用的にはこれで不満はないのですが、もっといいやり方があるんですかね?

タグ: JuliaLang

posted at 00:14:35

S.Hirano @Bimaterial

18年1月5日

@ceptree ありがとうございます(雑な思いつきですみません…)
考えてみれば ifort が gfortran より圧倒的に速いのは内積などの組み込み関数であることが多く、今回の計算では確かに違いが無さそうです。何故 Julia がこれほど速いのかを表面的にでも理解したいところてすが、まずは触ってみたいと思います

タグ:

posted at 00:22:09

Computer Science @CompSciFact

18年1月5日

There's a new record for the largest known prime. Written in binary, it is a string of 77,232,917 ones.
www.johndcook.com/blog/2018/01/0... pic.twitter.com/VFdqpHa1pl

タグ:

posted at 00:26:31

ceptree @ceptree

18年1月5日

@Bimaterial > 何故 Julia がこれほど速いのかを表面的にでも理解したいところてすが、まずは触ってみたいと思います
私もまったく同意見です!一緒に遊びましょう!

タグ:

posted at 00:28:51

ceptree @ceptree

18年1月5日

@sikinote いえいえ、for文の速度と配列の呼び出しは切り分けて議論できたほうが良いと思うので、ズレてないと思いますよ。ただ私のほうでもやってみたところfortranは速くなりましたが、juliaの方はむしろ遅くなりましたね。

タグ:

posted at 00:34:52

S.Hirano @Bimaterial

18年1月5日

@ceptree 私の手元では環境構築もまだなので試していませんが、2年前に書かれたこのブログ
qiita.com/y_irabu/items/...
では、再帰的関数による計算で Julia より gfortran が5倍近く速かったようです。今では逆転しているのか、気になるところです

タグ:

posted at 00:37:06

k @musicisthebest_

18年1月5日

@genkuroki 超算数界隈の先生方は、物理のいい加減な定義を書かなければならない掟でもあるんでしょうか。
twitter.com/musicisthebest...

タグ:

posted at 00:37:27

S.Hirano @Bimaterial

18年1月5日

Julia を使い始めたいけど目の前の論文(自分の投稿論文と学生の修論)書き終わるまで何も出来ない気がする…せめて学期が終われば…

タグ:

posted at 00:42:20

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang ああ、なるほど、

docs.julialang.org/en/stable/manu...
Function-like objects

を使えば良さそうですね。

struct Hoge
d::Float64
end

function (hoge::Hoge)(N)
local s = 0.0
for i in 1:N
s += hoge.d*rand()
end
return s/N
end

k = Hoge(2*Float64(π))

k(10^8) pic.twitter.com/O2RHOorcGO

タグ: JuliaLang

posted at 01:06:49

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang ああ、なるほど、functor-like object は数値計算のコードを書きたい人なら当然思い付く機能だ。

例えば、ある函数の点aを中心とする項数Nのテイラー展開の計算を繰り返し行う場合には、aとNからテイラー展開の係数を全部前持って求めておきたい。しかし、それを大域変数で~続く

タグ: JuliaLang

posted at 01:09:12

ceptree @ceptree

18年1月5日

@Bimaterial 再帰関数に関しては3〜4倍fortranの方が速かったです。 pic.twitter.com/tWMMn62F1N

タグ:

posted at 01:11:37

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 続き~やるのは行儀が悪いし、バグの原因になる。「aとNからテイラー展開の係数を計算した結果」と「テイラー展開の計算法」(函数)を持つ「オブジェクト」を作る方法が欲しい。

functor-like objectはそのまんまの機能ですね。

これは勉強になった。今後は使わせてもらおう。

タグ: JuliaLang

posted at 01:12:25

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang Jupyter notebook にも以上の件(functor-like objectの件)を追加しておいた。

nbviewer.jupyter.org/gist/genkuroki...
gist.github.com/genkuroki/739f...

前者には更新がまだ反映されていないですが、じきに反映されると思います。

タグ: JuliaLang

posted at 01:21:23

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#数楽 リンク先の問題はここ数年で知った中では最高のパズル!

twitter.com/genkuroki/stat...

タグ: 数楽

posted at 01:41:16

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#数楽 数学を勉強していれば、100人の囚人の一人になっても30%以上の確率で死なずにすみます😆

タグ: 数楽

posted at 01:42:39

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

18年1月5日

@genkuroki 2人だと100%助かる♬ 事前の協議も不要か。3人は半分だけ見る事ができるという話が通らないからパス。4人だとどうだろう、、、あかん明日は5時起きやん。寝よう。

タグ:

posted at 02:28:08

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang に限らず色々な言語について勉強になる。

色々な言語で計算速度を比較してみた qiita.com/hanada/items/c...

タグ: JuliaLang

posted at 02:54:35

黒木玄 Gen Kuroki @genkuroki

18年1月5日

* 函数にしていない直書きのコードで速度計測
(Julia言語では函数にしないと遅い)

* シェルからの time julia foo.jl による速度計測
(gccなどによるコンパイル時間も含めた実行時間計測と本質的に同じ)

の2つは #JuliaLang のベンチマークでは禁忌。

タグ: JuliaLang

posted at 03:01:18

黒木玄 Gen Kuroki @genkuroki

18年1月5日

@tsatie 囚人が2人のとき、各々が開けられる木箱は1つだけ。1人目が外すと2人とも処刑されます。

タグ:

posted at 03:04:17

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang あと大域変数を含む函数もめちゃくちゃ遅い。

gist.github.com/genkuroki/739f...

タグ: JuliaLang

posted at 03:06:26

黒木玄 Gen Kuroki @genkuroki

18年1月5日

大学レベルの話の中には本質的に難しい内容が結構含まれているので、教えている側がわかっていないことは結構普通。

ぶっちゃけ、堂々とデタラメが継続的に教えられている場合もあるので、学生側はきちんと厳しい突っ込みを入れなければいけない。

twitter.com/ceptree/status...

タグ:

posted at 03:12:34

黒木玄 Gen Kuroki @genkuroki

18年1月5日

例えば、物理の統計力学の授業で【ギブスのパラドックスがあるので統計力学から熱力学を再現するためには量子力学が必須】のように教わったりしたら、学生の側は厳しく突っ込みを入れるべき。

タグ:

posted at 03:17:10

黒木玄 Gen Kuroki @genkuroki

18年1月5日

例えば、統計学の授業で【ベイズ統計の基礎はベイズの定理である】とか【ベイズ統計は事前分布に主観が入るから信頼できない】とか「頻度主義 vs. ベイズ主義」の話を延々としだしたら、学生の側は徹底的な突っ込みを入れるべき。

タグ:

posted at 03:20:32

黒木玄 Gen Kuroki @genkuroki

18年1月5日

例えば、算数数学教育の授業で、幼児はピアジェの保存課題に失敗するので数量の概念を理解していない、のようなことを教わったら、学生の側はそう教えた先生の言うことを全て疑うようにした方が良い。厳しい突っ込みを入れまくらないと大変なことになるかもしれない。

タグ:

posted at 03:27:09

ceptree @ceptree

18年1月5日

投票ありがとうございました!総投票数104票で「Julia(プログラミング言語)」が26%、「JULIA(AV女優)」が63%、「その他」が11%という結果でした!JULIAさんのデビューが2010年、Juliaのリリースが2012年ということを鑑みれば妥当な結果でしょうかね!また来年この結果がどう変わっているか楽しみです! twitter.com/ceptree/status...

タグ:

posted at 03:40:36

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang Float64な大域変数aを含む函数

function f(N)
local s = 0.0
for i in 1:N
s += a*rand()
end
return s/N
end

ではsの型がAnyと判定され、実行速度が遅い。そこで、s::Float64と型を教えてあげると滅茶苦茶**遅く**なります。笑えるくらい遅くなる。

タグ: JuliaLang

posted at 03:53:25

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 正しい型の教え方は大域変数に関する a::Float64 です。

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

しかし、aを定数にしたり、函手的オブジェクトを使った場合よりは遅い。大域変数を含む函数はやはりやめた方がよさそう。

タグ: JuliaLang

posted at 03:55:40

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 上に方のリンク先のブログ記事ではループを1億回回しているようだが、少なすぎ。ベンチマークをやるなら10億回にした方がよいと思う。

以前、モンテカルロπで試したときにも、forループを10億回回さないといけない感じだった。

タグ: JuliaLang

posted at 04:10:09

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

18年1月5日

@genkuroki 何とな、お話だと一度見る事ができる、のだと思うてた。ふーん。では50%なのか。

タグ:

posted at 06:00:52

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

18年1月5日

@genkuroki 読み直してみた。「見つける」というのはどういう事だろう。一つ箱を開けて「違う」ならもう一つの箱にある事を「見つけた」とはならないのか?ふーむ。謎だ。

タグ:

posted at 06:04:07

Yuki Nagai @cometscome_phys

18年1月5日

なおうちの子(4歳)には、仮面ライダーは強い、仮面ライダーは物理学者、物理学者は強い、だからパパも強い、みたいな感じで思われている

タグ:

posted at 07:59:35

Riko Muranaka/村中璃子 @rikomrnk

18年1月5日

池田元教授から起こされている名誉棄損裁判の進捗が一気にアップデートされました。ポイントは、実験を行ったA氏が、実は雇止めになった大学を池田氏と全く同じセットの薬害弁護士を代理人として訴えていた点や、突如、裁判長が交代となり、実... fb.me/1u32fEKK8

タグ:

posted at 08:32:21

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

18年1月5日

仮面ライダーにJuliaプログラマーを出してください

タグ:

posted at 09:38:58

らばQ @lbqcom

18年1月5日

ゼラチンアートと言うそうだけどこれは凄い…いつまでも見ていられる pic.twitter.com/xYKKpuRT95

タグ:

posted at 11:40:44

しっぽ @h_shippo

18年1月5日

仮面ライダー部活外部指導者

仮面ライダー介護従事者

仮面ライダーFORTRAN 77、仮面ライダーLISP、仮面ライダーCOBOL

仮面ライダーJuliaは流行に乗りすぎか。

保育園の先生とか幼稚園の先生は…戦隊モノ?保育戦隊スクスクジャーとか? twitter.com/hachiya/status...

タグ:

posted at 11:46:18

Iwao KIMURA @iwaokimura

18年1月5日

書名に「ベーシック」という一言を入れると売れるので「ベーシック圏論」になったわけではないだろうけど(原題がBasic Category Theory)その方針で行くなら,「ベーシック数論」という邦訳もありうる.

タグ:

posted at 12:23:35

シータ @Perfect_Insider

18年1月5日

男の子のなりたい職業1位が久しぶりに「学者」だったのが、仮面ライダービルドが原因だったら個人的には非常に面白い事態だと思うが、ビルド放映が9月開始なのに対し、なりたい職業の方の調査期間が7-9月なので、来年の同じ調査の結果を見ないと何とも言えないと思っている。

タグ:

posted at 13:36:00

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

18年1月5日

イジングモデルをall upからTcに上げた後のダイナミクスでFirst passage time (初めて磁化が0を切る時刻)の分布を調べた研究をご存知のかたはおられませんか。ざっと調べた範囲では見つからなかったのですが(Tc以下へのクエンチでは宮下さんとかが昔やってる。臨界点が見つからない)

タグ:

posted at 13:41:41

Viral B. Shah @Viral_B_Shah

18年1月5日

This package makes it much easier to precompile #julialang packages for deployment. @SimonDanisch building really cool things always! twitter.com/SimonDanisch/s...

タグ: julialang

posted at 13:43:15

TJO @TJO_datasci

18年1月5日

"Julia"の検索結果が変わるのはパーソナライズの結果なので、試しにシークレットウィンドウとかで検索し直してみると現状が分かります

タグ:

posted at 14:14:53

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang この試みは要注目

“Compiling Julia Binaries”
medium.com/@sdanisch/comp...

タグ: JuliaLang

posted at 14:29:31

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

18年1月5日

Juliaとは心の所作

タグ:

posted at 14:42:37

@kuromoyo

18年1月5日

計測に time コマンド使ってのベンチ比較は基本的に JavaVM の Java/Scala や LLVM の Julia 勢が不利だな。Perl 系譜の高機能シェルスクリプトのような、コマンド風の単発起動を想定している実行系に計算速度とは関係のない起動速度の加点が入る。

タグ:

posted at 15:43:45

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

18年1月5日

というわけで、僕が博士課程在学中に書いた3次元イジングモデルの臨界緩和の論文( Kikuchi & Okabe JPSJ vol.59, p.1359)
journals.jps.jp/doi/abs/10.114...
を読み直したんですけど、結構いいじゃん。必要なことは全部書いてあるし、計算も内容も先駆的じゃん。もっと引用してくれよー

タグ:

posted at 15:44:30

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

18年1月5日

なんとたったの10回しかダウンロードされてない。まあ1986年ですから、まだみんな冊子体で論文読んでましたけどね

タグ:

posted at 15:45:49

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

18年1月5日

関連してさらに先駆的なのは1985年にPRLに載せた表面臨界緩和の論文で、スケーリングが美しいんですけど、そもそもがニッチすぎるテーマなのか被引用数は極めて少ない
journals.aps.org/prl/abstract/1...
表面臨界現象もやり残した細々したことはたくさんあるんだけどねえ

タグ:

posted at 15:49:32

非公開

タグ:

posted at xx:xx:xx

tₖᶠ @tkf

18年1月5日

Julia を始めそうな人々にファボ圧をかけていくエーアイの開発が期待されている

タグ:

posted at 16:42:13

tₖᶠ @tkf

18年1月5日

特に(広い意味での)力学系的なこと (SDEとかPDEとか含む) やっている人達には Julia お勧めな気がするな。 DifferentialEquations.jl の機能はヤバい (語彙力) docs.juliadiffeq.org/latest/ このトーク見ると概観がつかめるはず→ www.youtube.com/watch?v=75SCMI...

タグ:

posted at 16:46:32

ceptree @ceptree

18年1月5日

検証したいなと思っていたことを、@bicycle1885さんが完璧にやってらした

Juliaではfor文を使え。ベクトル化してはいけない。
bicycle1885.hatenablog.com/entry/2015/04/...

タグ:

posted at 17:23:34

積分定数 @sekibunnteisuu

18年1月5日

#超算数 式を立てない方が正答率が高い。

加減の文章問題における立式の妨害効果
www.jstage.jst.go.jp/article/pamjae...

タグ: 超算数

posted at 17:24:05

新帯秀樹 Hideki Shintai @hs_heddy

18年1月5日

Juliaではfor文を使え。ベクトル化してはいけない。 - りんごがでている bicycle1885.hatenablog.com/entry/2015/04/...

タグ:

posted at 17:25:35

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

18年1月5日

3年くらい前なので若干状況が変わってます。今ならloop fusionする構文があるので,ループを展開してもそんなに速くはならないと思います (詳しくは julialang.org/blog/2017/01/m...)。あと,Intel MKL Vector MathematicsとかならJuliaでもベクトル化すると速くなると思います。 twitter.com/ceptree/status...

タグ:

posted at 17:42:55

非公開

タグ:

posted at xx:xx:xx

ぱりー @Woofer30

18年1月5日

Julia人気の高まりを見るとやっぱり速さは正義だったと確信する

タグ:

posted at 17:51:10

Inagaki Katsuhiko @tas3cdw

18年1月5日

TLにJuliaの話ばかり流れるようになったので,一度インストールしてみるか。

タグ:

posted at 17:51:26

Ka2yuki I @esk_Masurao

18年1月5日

Julia 流行りだしたな

目をつけてたけど、行動が伴ってなかった

時間あるし試しにやってみよう

タグ:

posted at 18:04:29

ceptree @ceptree

18年1月5日

AKBのようにjuliaも成長を楽しむプログラミング言語なんですね

タグ:

posted at 18:11:37

bra-ketくん @mac_wac

18年1月5日

#julialang の習作としてRösslerにLaplacianくっつけたの解いてみた(初期条件として微小ノイズ入れてる)。プロットはRCall使って、慣れてるggplot2。特に考えずに速度出るという触れ込みだったが、(at)timeによるとGCに半分ほど時間使ってるらしくハァ?💢ってなってる(3分ほどかかった)。 pic.twitter.com/DKxQPDazan

タグ: julialang

posted at 18:23:33

bra-ketくん @mac_wac

18年1月5日

あとバカパラやろうと思ったけどどうも配列絡みで上手くいかん。SharedArrayって組み込み型しか使えない?

タグ:

posted at 18:25:07

にーな @TR_NN

18年1月5日

julia、確かに使いやすいのだけども動的型になってしまわないようにとかGCの制御とかがしんどいので、スクリプト言語として使うには良さそうだがC++の代替になりはしないだろうなという感じ(C++/Pythonの組み合わせからRust/Juliaの組み合わせへの移行という気持ちで行くとよさそう)

タグ:

posted at 18:28:48

bra-ketくん @mac_wac

18年1月5日

ちなみにスキームはCrank-Nicolson使ってる。NLsolve掛けようと思ったらメモリが足らんと怒られて、そらよく考えたらJacobi行列計算するには足りなさすぎる。仕方がないので自分で反復書いた。dxが粗すぎるけど、10倍にするにはキツい。

タグ:

posted at 18:29:38

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

18年1月5日

Juliaブームが年始に来たのがよく分かる github.com/bicycle1885/Ju... pic.twitter.com/Ey9rV74zv3

タグ:

posted at 18:41:19

tₖᶠ @tkf

18年1月5日

Juliaのビッグウェーブきてる

タグ:

posted at 18:47:12

Yuki Nagai @cometscome_phys

18年1月5日

イジング模型のモンテカルロシミュレーションの計算をしてるWebページ色々あるけど、磁場ゼロにしてシミュレーションして磁化の温度依存性を見てるのがある。磁場ゼロなら全スピンフリップのエネルギー差がないので、トータル磁化はゼロになるべきなのだけどなあ

タグ:

posted at 19:35:44

Yuki Nagai @cometscome_phys

18年1月5日

磁場ゼロのイジング模型のモンテカルロシミュレーションの自己相関長、ローカルスピンフリップしか考えないと転移点以下だとほぼ無限に長いのかな

タグ:

posted at 19:39:20

ceptree @ceptree

18年1月5日

私も黒木先生の影響で再入門したクチです。Juliaという単語が入ったツイートをひたすら拡散されてましたからね。 twitter.com/adhara_mathphy...

タグ:

posted at 19:45:46

shin @Matz_Shin

18年1月5日

@kikumaco 今更ですが、2次元の畳込み演算convolue2dを使うことをmatlab,pythonでは考えます。
0 1 0
1 0 1
0 1 0
というフィルターで畳み込むと隣接スピンの合計を表す行列が得られます。サイズが違うと思いますが、適当にスライスします。
もっとも、juliaならループ回してるほうが速いかも知れませんが。。。

タグ:

posted at 19:45:54

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang

gist.github.com/genkuroki/44e6...

Julia言語では和の取り方の選択肢が結構あってどれを使用するか悩む。

sum(rand(N)) ←メモリを大量消費
sum(rand() for i in 1:N) ←メモリは消費しないが遅い
(s=0.0; for i in 1:N s+=rand() end; s) ←速くてメモリも消費しないが書くのが面倒

続く

タグ: JuliaLang

posted at 19:47:15

ceptree @ceptree

18年1月5日

あとはやはり@bicycle1885さんが何年も前からjuliaの記事を書かれていて、素晴らしい情報を教えて頂いたことも要因ですかね。

タグ:

posted at 19:51:17

ゆきちゃん @yuki0626chan

18年1月5日

Julia関係のツイートをよく見かける

タグ:

posted at 19:52:40

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang LaTeXでは書くのが面倒な部分をマクロにするのが普通なのですが、Julia言語でも同様の目的にマクロを使用できます。添付画像のような感じ。マクロを定義しておくと

(s=0.0; for i in 1:N s+=rand() end; s)



@ sum(0.0, i, 1:N, rand())

と書ける。@ の後の空白は除く。 pic.twitter.com/k5gTEuDwTU

タグ: JuliaLang

posted at 19:54:10

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang

Jupyter notebookでjuliaを julia -p auto で起動するようにしておくと並列処理もできます。以下のリンク先の第1.10節に解説がある。

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

並列処理のマクロを使うと

@ parallel (+) for i in 1:N rand() end

で乱数の和を計算してくれます。@ の後の空白は除く。

タグ: JuliaLang

posted at 19:57:44

非公開

タグ:

posted at xx:xx:xx

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang Julia言語での注意点

* 重い計算のコードは必ず函数の中に書く。

* 大域変数を含む函数を書かない。(const や functor-like object を使う。)

* forループは速い。(マクロをうまく利用できれば見易く短く書けるかも)

タグ: JuliaLang

posted at 20:05:55

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang あとJulia言語で配列を無用に確保しまくるコードを書くと計算速度も当然遅くなります。その点については以下に注意する。

* 配列の各要素に函数を作用させる場合には dot syntax を使うと効率がよくなる。
docs.julialang.org/en/stable/manu...

続く

タグ: JuliaLang

posted at 20:09:42

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 2次元配列(行列)aについてa[:,j]はaの第i列の配列(ベクトル)になります。1次元配列bをaの第j列に代入するにはa[:,j]=bとすればよい。左辺でa[:,j]を使うことには問題はない。

注意しなければいけないのは「右辺」でa[:,j]を使う場合。配列が新たに確保される!続く

タグ: JuliaLang

posted at 20:13:36

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 行列aの第j列に函数fを作用させた結果を第j+1に代入する場合には

a[:,j+1] = f(a[:,j])

と書ける。ところが右辺のa[:,j]の分の配列が新たに確保されてしまう。それが嫌なら

a[:,j+1] = f(@ view a[:,j])

のように書く必要があります。@ の後の空白は除く。

docs.julialang.org/en/stable/stdl...

タグ: JuliaLang

posted at 20:17:12

tₖᶠ @tkf

18年1月5日

Julia は Lisp (定期) pic.twitter.com/Zt3VClv6v0

タグ:

posted at 20:17:54

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang まとめ

* 重い計算のコードは必ず函数の中に書く。
* 大域変数を含む函数を書かない。(const や functor-like object を使う。)
* forループは速い。(マクロをうまく利用できれば見易く短く書けるかも)
* dot syntaxを使用する。
* @ view a[:,j] を使用する。(@ の後の空白は除く)

タグ: JuliaLang

posted at 20:18:35

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 実際にはそんなに神経質になる必要はなくて、計算は必ず @ time マクロをつけて実行して、実行時間と使用メモリを常に監視し、実行時間が短くても異様に消費メモリが大きい場合に注意を払えば十分だと思います。そして、計算が遅くなったときには @ code_warntype f(x)を確認する。

タグ: JuliaLang

posted at 20:22:25

阿部真人|Masato S. Abe @a_symap

18年1月5日

ついつい流行りに乗ってJuliaをインストールした

タグ:

posted at 20:23:04

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 大域変数を含む函数を避ける方法については

nbviewer.jupyter.org/gist/genkuroki...
大域変数を含む函数は遅くなる

の後半に例があります。

タグ: JuliaLang

posted at 20:26:21

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

18年1月5日

@genkuroki そっかぁ、その手があったか。なるへそ。分かりやすいし、高校生でも何とかわかるやも。難しいとすれば、、、何やろか。どれも少しずつ難しいか。

タグ:

posted at 20:29:34

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 「函数の中に計算のコードを書く」と「大域変数を含む函数を書かない」は計算速度が気になる計算を実行するときには最優先事項になります。

タグ: JuliaLang

posted at 20:29:43

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang あ、重大なことを忘れていた。

「型不明の書き方をしない」

も優先順位が非常に高いです。

函数 f(x) を書くときに、xに数値を代入したとき(例えばf(10)とかを計算させるとき)、xの型からf(x)の中の変数の型がどのように確定して行くかを推定する必要がある。これが難しい。

タグ: JuliaLang

posted at 20:31:48

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 例えば、

a=[]; for i in 1:N push!(a, f(i)) end

のような書き方をすると、aが型不明の何かの配列になっているせいで遅くなります。f(i)がFloat64型になるなら、a=Float64[] と初期化するとそれだけで数倍速くなります。

あとサイズが決まった配列を使った方が速いです。

タグ: JuliaLang

posted at 20:33:50

Yuki Nagai @cometscome_phys

18年1月5日

Julia、ループごとに変更したいパラメータが多いとき、引数に書く以外の遅くならないうまい方法はないだろうか

タグ:

posted at 20:36:36

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang a=[]としてpush!(a,~)を繰り返すと遅くなることについては

gist.github.com/genkuroki/2a72...

を見て下さい。

* コードを函数の中に入れる→3倍高速化
* a=[]をa=Float64[]に→5倍高速化
* 固定長配列に変更→2倍以上高速化

こんな感じで簡単に2桁速くなります。

タグ: JuliaLang

posted at 20:37:25

Yuki Nagai @cometscome_phys

18年1月5日

イジング模型のシミュレーションのアニメーション、できた。あとは挙動調べて説明書こう

タグ:

posted at 20:39:54

Yuki Nagai @cometscome_phys

18年1月5日

100×100でも高速に計算できる

タグ:

posted at 20:40:22

Yuki Nagai @cometscome_phys

18年1月5日

日本語でfunction名を書くことにより可読性が凄い良い

タグ:

posted at 20:40:47

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang Julia言語では函数f(x)のコードはxに具体的な数値を入れて計算させようとするときにコンパイルされます。f(x)のxの型が確定しないとf(x)のコードが含む変数や函数達の型も確定しないので効率よくコンパイルできない。xの型を決めても確定しない場合には計算が超遅くなる(←これ要注意!)。

タグ: JuliaLang

posted at 20:42:06

Kodack @iKodack

18年1月5日

juliaなんでこんな流行ってんの

タグ:

posted at 20:46:07

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang まとめ

* 重い計算のコードは必ず函数の中に書く。
* 大域変数を含む函数を書かない。(const や functor-like object を使う。)
* xの型が確定したらf(x)のコード中の諸々の型が確定するように書く。
* forループは速い。
* dot syntaxを使用する。
* @ view a[:,j] を使用する。

タグ: JuliaLang

posted at 20:46:24

Yuki Nagai @cometscome_phys

18年1月5日

@ark_B Juliaです。こんな感じでUnicodeを変数や関数名に使えます
nbviewer.jupyter.org/github/cometsc...

タグ:

posted at 20:51:02

てらモス @termoshtt

18年1月5日

やぱいjuliaやってない

タグ:

posted at 21:02:39

てらモス @termoshtt

18年1月5日

julia> 1 + 1
2
インストールだん

タグ:

posted at 21:04:48

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang

函数の中の諸々の対象の型の決まり方:

f(x)=1+x

を使ってf(1)を計算させると1+xの1は整数だとみなされ、f(1.0) を計算させると 1+xの1は浮動小数点数だとみなされます。xに何を代入するかで1+xの1がどのようにコンパイルされるかが変わります。

gist.github.com/genkuroki/fcd5...

タグ: JuliaLang

posted at 21:08:25

エヌユル @ncaq

18年1月5日

久々にjuliaビルドチャレンジしてみるか

タグ:

posted at 21:08:38

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

18年1月5日

この論文は、いろいろ考えて最終的なスケーリングの形に辿りつけたのがうれしかったので、よく覚えている

タグ:

posted at 21:18:14

Yuki Nagai @cometscome_phys

18年1月5日

Julia、関数を引数にできるので、functionとして熱浴法とメトロポリス法を定義した後、
モンテカルロ法(熱浴法)
とか
モンテカルロ法(メトロポリス法)
とかで計算できて大変楽しい

タグ:

posted at 21:22:37

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

18年1月5日

Juliaの練習問題として計算した結果を眺めていたら、解釈がよく分からなくなってきた。オールドファッションな話なので、誰かがやってるだろうと思ったけど、ざっと検索した範囲では見つからない。既にやられているとすれば90年代半ばから0年代にかけてと予想。研究テーマになるかなあ

タグ:

posted at 21:22:53

てらモス @termoshtt

18年1月5日

ラムダ式欲しい

タグ:

posted at 21:35:44

てらモス @termoshtt

18年1月5日

julia> f(x,y) = x + y
f (generic function with 1 method)
こうやって書けるのか

タグ:

posted at 21:36:45

てらモス @termoshtt

18年1月5日

JuliaでNewton法書いてみた(1次元) on @Qiita qiita.com/termoshtt/item...

タグ:

posted at 21:44:54

てらモス @termoshtt

18年1月5日

やっつけ(`・ω・´)
JuliaでNewton法書いてみた(1次元) on @Qiita qiita.com/termoshtt/item...

タグ:

posted at 21:45:05

てらモス @termoshtt

18年1月5日

Julia入門したことにした(`・ω・´)

タグ:

posted at 21:46:38

n-kats @n_kats_

18年1月5日

juliaが攻めてくる

タグ:

posted at 21:58:25

非公開

タグ:

posted at xx:xx:xx

てらモス @termoshtt

18年1月5日

julia --emit=llvmとかないの

タグ:

posted at 22:01:51

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang

xs=ys=linspace(0,1,N) (0から1までの長さNの等差数列)の各々の要素に函数f(x,y)を作用させてN×Nの2次元配列zを作りたければ、

z = f.(xs, ys')

とする。ys'はysの転置で横ベクトル(1×N行列)になり、f.(xs, ys') は(i,j)成分がf(xs[i],ys[j])の2次元配列になります。

タグ: JuliaLang

posted at 22:04:18

Akinori Ito @akinori_ito

18年1月5日

RはLispだがJuliaもLispだったか。Lispじゃない言語を数えたほうが早いな

タグ:

posted at 22:06:25

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 上の状況のとき

xs .+ ys' * im

は(i,j)成分が複素数 xs[i] + ys[j]*im の二次元配列になります。このように二項演算子の前に dot を付けることもできる。

xs .* ys

だと同じN次元ベクトル(本当はちょっと違う)の各要素ごとの積で結果もN次元ベクトルになります。

タグ: JuliaLang

posted at 22:07:59

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 配列に対する dot syntax は計算効率が良いことを忘れても非常に便利なので多用すると幸せになれます。

異なる次元、異なるサイズの配列に dot syntax を適用すると、計算結果は「全部を含む次元とサイズ」の配列になります。

タグ: JuliaLang

posted at 22:10:02

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

18年1月5日

イジングモデルのダイナミクスの問題、考えたら現象論的には理解できた。誰もやっていなさそうだけど、たいして面白くもないかな、たぶん

タグ:

posted at 22:21:14

n-kats @n_kats_

18年1月5日

julia-vimが

FileType Auto commands for "*" の処理中にエラーが検出されました:
E117: 未知の関数です: LaTeXtoUnicode#Refresh

って警告出るのは僕だけかな?

タグ:

posted at 22:43:47

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang

nbviewer.jupyter.org/gist/genkuroki...
大域変数を含む函数は遅くなる

の話の続き。標準正規分布のサンプルによるウェイト付きのモンテカルロ積分で試してみた。標準正規分布のsampleと対応する適当なweightをパラメーターに与えるとモンテカルロ積分を実行できる。続く

タグ: JuliaLang

posted at 23:29:11

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang モンテカルロ積分は素朴には大域変数の配列sample, weightを含む函数として

mcint_naive(f) = mean(weight .* f.(sample))

と定義可能です。このようにシンプルに書けるのは dot syntax のおかげ。

しかし、これは大域変数を含む函数なので遅くなる。続く

タグ: JuliaLang

posted at 23:32:50

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 続き。大域変数の配列sampleとweightをconst宣言で定数にしてしまえば速くなる。しかし、そうするとsampleとweightを変更できなくなる。それも困る。

sampleとweightの変更可能性と計算の高速性を両立させるためには functor-like object と変な呼び名がついているものを使えばよい。続く

タグ: JuliaLang

posted at 23:35:41

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang 続き。サンプルコード:

mutable struct MCInt
sample::Array{Float64,1}
weight::Array{Float64,1}
end

(mcint::MCInt)(f) = mean(mcint.weight .* f.(mcint.sample))
mcint_struct = MCInt(sample, weight)
plotcomparison(mcint_struct);

タグ: JuliaLang

posted at 23:36:38

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang

mcint_struct = MCInt(sample, weight) で作られた mcint_struct は同じ名前でモンテカルロ積分の函数として利用できる。函数 f(x) に対して、

mcint_struct(f)

で積分を近似計算できる。そうするための定義が

(mcint::MCInt)(f) = mean(mcint.weight .* f.(mcint.sample))

タグ: JuliaLang

posted at 23:38:08

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang mcintを直接

mcint(f)=mean(weight .* f.(sample))

と定義すると大域変数を含むせいで遅くなってしまうが、weightとmeanをMCInt型のオブジェクトの中に保護して、

(mcint::MCInt)(f) = mean(mcint.weight .* f.(mcint.sample))

と定義しておけば、遅くならずにすむ。

タグ: JuliaLang

posted at 23:41:01

黒木玄 Gen Kuroki @genkuroki

18年1月5日

#JuliaLang functor-like objectは「パラメーター付き函数」のことだと思っておけば多分問題ない。Julia言語では同じ名前の異なる函数をいくらでも作れるので、同じ名前と同じパラメーターを持つ異なる函数もいくらでも作れる。「同じパラメーター達が様々なものに色々作用する」と考えればよい。

タグ: JuliaLang

posted at 23:50:31

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

User

» More...

Tag

» More...

Recent

Archive

» More...

タグの編集

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

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

送信中

送信に失敗しました

タグを編集しました