黒木玄 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 を見て下さい。
2021年04月20日(火)
計算を無駄に遅くするための主要なコツの1つは、ループの内側でメモリアロケーションを繰り返し発生させることです。
新たな配列の確保はメモリアロケーションを発生させます。push!でもメモリアロケーションが発生する場合がある。
計算速度が重要なら、そうならないような設計にしないとダメ。
タグ:
posted at 00:03:48
#Julia言語 最終サイズが事前に不明な場合には push! を使うことになるのですが、コンピュータで計算する場合には最終サイズが大雑把にはわかっているはずなので、sizehint!を使うことによってメモリアロケーションの回数を減らせます。
docs.julialang.org/en/v1/base/col...
タグ: Julia言語
posted at 00:12:25
あと、計算速度が問題にならない場合には「お好きなように自由にやってくれ」で問題なし。計算速度が問題にならない場合にまで細かいことを気にするにも合理的ではない。
タグ:
posted at 00:14:57
メモリアロケーションの方は回数が多くなるとまずい。Juliaに限らず、どの言語でも遅くなる。
Juliaでは
$ time julia foo.jl
ではなく
julia> @ time Foo.solve(prob)
のスタイルでプログラムを実行することが多く、@ timeマクロで表示されるメモリアロケーションの回数の情報が非常に重要。
タグ:
posted at 00:24:42
#Julia言語
配列の配列を作る [fill(0.01, 10^4) for _ in 1:10^4] (添付画像①)と2次元配列を作る fill(0.01, 10^4, 10^4) (②)ではメモリアロケーションの回数が全然違っていて、実行時間も6倍違う。
オリジナルのコードはさらにメモリアロケーションが多い(③)。
gist.github.com/genkuroki/d16c... pic.twitter.com/fQFWlSTZvx
タグ: Julia言語
posted at 01:04:26
@kikumaco 総長こういう経歴www.osaka-u.ac.jp/ja/guide/presi... で、統計学の心得がないとは思えないのに、どうしてこうなったと言いたい。誰がK値を推したのやら。
タグ:
posted at 01:07:01
@chr1sa Yes, and you can approach it with freedom to dip in and out of vectorization. Loop, array comprehensions all work fast. Custom data types are first class, easy GPU codegen, no need to find weird pandas indexing or methods.
Easy to call R and python if encounter corner case 1/n
タグ:
posted at 01:07:20
#Julia言語 総和の計算もsum函数を使えば60 msで計算が終了するが、オリジナルのコードでは100 msを超えている。1.6~1.7倍の違い。
make_list + iterate_list
2.075 s + 0.102 s ←Original
1.639 s + 0.061 s ←Revised_2
0.276 s + 0.060 s ← Revised_3
gist.github.com/genkuroki/d16c... pic.twitter.com/9sq2TgC1k8
タグ: Julia言語
posted at 01:11:06
@chr1sa twitter.com/evalparse/stat... github.com/JuliaData github.com/JuliaStats github.com/alan-turing-in... github.com/JuliaPy/PyCall... github.com/JuliaInterop/R... github.com/TuringLang/Tur...
Let me know if there's something in particular you can't locate. 2/2
タグ:
posted at 01:11:26
@chr1sa Other benefits: Multiple dispatch means you can use units, custom arrays and table types and they all just compose and are fast. Can have R like DSLs locally with macros, but globally keep things with sane semantics like C based languages. Custom fast differentiable loss fnctns
タグ:
posted at 01:13:49
@chr1sa The rest of numpy is here: docs.julialang.org/en/v1/stdlib/L... Also dot broadcasting is cool: julialang.org/blog/2017/01/m...
and this: juliadocs.github.io/Julia-Cheat-Sh...
Also very active slack and discourse community: julialang.org/community/
タグ:
posted at 01:19:31
#Julia言語
f(n) = [fill(0.01, 2) for i in 1:n]
g(n) = nestedview(fill(0.01, 2, n))
h(n) = [SVector(0.01, 0.01) for i in 1:n]
f → slow
g → fast
h → fast
arrays of arrays exmaples
gist.github.com/genkuroki/ba50...
使い分けるとよい。 pic.twitter.com/Oam5dmEf4I
タグ: Julia言語
posted at 01:45:42
#Julia言語 全然違う方法で計算した例が以下のリンク先にある。
KdV: 初期条件は1-soliton + 1-soliton
nbviewer.jupyter.org/github/genkuro... pic.twitter.com/0zFWsyU2Av
タグ: Julia言語
posted at 02:24:29
#Julia言語
KdV: 初期条件はsinで周期境界条件
nbviewer.jupyter.org/github/genkuro... pic.twitter.com/KPsAZfLyGO
タグ: Julia言語
posted at 02:24:44
Dr. Chris Rackauckas @ChrisRackauckas
Why ModelingToolkit? Why not another Modelica implementation? Here's why. ModelingToolkit, Modelica, and Modia: The Composable Modeling Future in Julia.
www.stochasticlifestyle.com/modelingtoolki...
#julialang #sciml #modelingtoolkit
タグ: julialang modelingtoolkit sciml
posted at 04:11:48
New post: ModelingToolkit, Modelica, and Modia: The Composable Modeling Future in Julia - www.juliabloggers.com/modelingtoolki... #julialang pic.twitter.com/dDCbQRoi4Z
タグ: julialang
posted at 04:15:35
What packages do you all usually keep in your base #julialang environment? For me it's BenchmarkTools, Revise, StatsPlots, and recently Pluto.
タグ: julialang
posted at 05:28:10
ModelingToolkit, Modelica, and Modia: The Composable Modeling Future in Julia www.juliabloggers.com/modelingtoolki... #juliabloggers
タグ: juliabloggers
posted at 06:47:45
便利なテンプレートがあるのね。
「julia を googlecolab で使えるようにしたい。」 qiita.com/dauuricus/item... #Qiita
タグ: Qiita
posted at 08:57:51
#Julia言語 要するに、Julia側でのmake_listとiterate_listはそれぞれ
make_list() = fill(0.01, 10^4, 10^4)
iterate_list(a_list) = sum(a_list)
で十分です。2つの実行時間は2.1秒から0.34秒に縮まります。 pic.twitter.com/MpalUYANDE
タグ: Julia言語
posted at 09:09:58
#Julia言語 Pythonと無関係に、Juliaにおいて配列の配列を使いたい場合には以下のリンク先のベンチマークテストの結果+αで何を使うかを決める。選択肢が沢山ある。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 09:14:21
Stefan Karpinski @StefanKarpinski
Really visionary blog post about creating an open ecosystem for modeling that every user becomes a contributor to twitter.com/chrisrackaucka...
タグ:
posted at 09:14:37
Thanks to some heavy lifting by
@ianshmean, my TiffImages.jl package is now the default TIFF reader/writer in #julialang's FileIO.jl.
Hopefully it speeds up⚡️your image analysis 🔬🔭 workflow without too many 🐛!
タグ: julialang
posted at 09:35:14
#超算数
本を整理していたら、@oyanochikara 親野智可等氏のクソ算数指導の本が出てきた。
算数ができる子になる魔法のことばwww.amazon.co.jp/%E7%AE%97%E6%9... pic.twitter.com/ZaXjbIjiQI
タグ: 超算数
posted at 09:46:52
#超算数
www.oyaryoku.jp/books/sansu_ry...
@oyanochikara 親野智可等氏に算数勉強指南はクソなので信用しないように。 pic.twitter.com/0rVnWIsPa6
タグ: 超算数
posted at 09:49:12
アマエビは殲滅したいもの。縁起担ぎ、淫祠邪教は一時的に社会を鼓舞することができても、悪縁とかジンクスに敏感になる心理を呼び込むから。反ワクチン(ワクチン渋りかも)を宥めるのにも、社会が(少なくとも公的組織が)迷信に渋い顔を向けておくことは大切。
タグ:
posted at 11:44:11
この萩生田文科相へのインタビュー記事も見出しや大臣の発言が酷い。自分たちで調査した結果、大学はうそつきだったのか?問題意識や制約条件や大学の講義の実態についての事実認識がまずいから、妥当な調査ができない、その結果様々なミスリードを引き起こしたのが現実では。
dot.asahi.com/dot/2021041600...
タグ:
posted at 13:25:10
自分たちの行動や施策を、自分たちサイドに寄せられた声だけで正当化し、各大学で募っているアンケートがあたかも実態を反映していないかのように扱った挙句、「圧倒的多くはキャンパスに通うことを望んでいるのではないか」のような根拠に乏しい推測を並べる文科相。一方的過ぎて不当だ。
タグ:
posted at 13:28:51
露本伊佐男 / Isao Tsuyumo @tsuyu2011
火星でヘリを飛ばすのに成功したNASAの部署。大喜びする様子が放送されてたんだけど,大喜びしながら書類を破くパフォーマンスをする女性スタッフ。そういうときは書類を破く習慣でもあるのかと思ったら,「失敗したとき用の発表原稿」だったそうな。
タグ:
posted at 14:20:39
@SxGxD69 @fault330 ドイツ🇩🇪のユーロノヴァアートホテルって場所らしいですよ!
サイケデリックカーペットっていって、廊下や部屋を走らせないようにするための工夫もあるってどっかに書いてました笑
euronova-arthotel.topcolognehotels.com/ja/
タグ:
posted at 15:06:17
Kohei Kawaguchi=Suna @mixingale
@ohtanilson Juliaのプラクティスはわからないけど、関数内では絶対にグローバル参照はするべきじゃないと思う。確実にバグを生み出す魔法だから。
タグ:
posted at 15:08:38
#Julia言語 引数の煩雑化を避けたいなら、問題を記述する情報を1つの変数にまとめるとよいです。
using Parameters
@ with_kw struct Prob{A,B,C}
a::A=1.2
b::B=3.4
c::C=10^3
end
prob=Prob()
function f(prob)
@ unpack a, c = prob
a,cを使ったコード
end
f(prob)
続く twitter.com/ohtanilson/sta...
タグ: Julia言語
posted at 16:07:58
#Julia言語
Juliaでは具体型が不定のグローバル変数を簡単に作れるせいで、引数を経由せずに函数内でグローバル変数を使うと計算速度が大幅に遅くなります。
バグの原因にもなり易い。
公式ドキュメントのPerformance tipsでも最初にそういう注意が書いてあります。
docs.julialang.org/en/v1/manual/p...
続く twitter.com/ohtanilson/sta...
タグ: Julia言語
posted at 16:07:59
一般に以下の行為はやめた方が得だと思う。
❌複数のグローバル変数に問題を記述するパラメータ達をバラバラに格納する。
❌それらのグローバル変数を、函数に引数として与えずに、函数の中で直接使用する。
❌グローバル変数の設定を書き換えて再実行を繰り返す。
タグ:
posted at 16:08:00
⭕️問題を記述するパラメータ達は1つの変数にまとめる。
⭕️問題を記述するパラメータ達をまとめたオブジェクトを函数に常に引数として渡すようにする。
⭕️パッケージ化して、パッケージ内の函数を実行する。 (#Julia言語 ならパッケージを10秒で作成可能なので手間は増えない。)
タグ:
posted at 16:08:00
コードを書く分量はほぼ変わらないのに、問題probを解く函数solve(prob)を書かずに、main()函数を実行するスタイルを維持するのは合理的ではない。
この辺は伝統的に大学での教育がうまく行っていない所だと思います。
タグ:
posted at 16:26:15
オンライン授業のためにZoomに接続し、YouTubeに中継を繋ごうとしたら、YouTubeの第一回の授業中継にレダイレクトされてしまうという事象が起き、パニックになりかけたんですが、Zoom会議室の設定を「繰り返し」にしていたので、前回の中継の設定がそのままに再開してしまうと言う理由だと判明。
タグ:
posted at 16:37:34
非公開
タグ:
posted at xx:xx:xx
学生はPandAの所定のページから接続する規定になっていること、そしてその時点で誰も接続していなかったこと(授業開始㉚分前)から可能になった訳ですが、やっぱり、授業前には接続リハーサルが大切だってことですね。
タグ:
posted at 16:39:49
周回遅れなので,いまさらの話だと思うんだけど――自分の場合,Zoom でリアルタイム遠隔授業やるときには,スライド/ホワイトボード/カメラを OBS で配置して,「仮想カメラ」を ON.そんで, OBS の仮想カメラ映像を Zoom で「共有」してる.その方が画質を落とさずに見てもらえるご様子なので. pic.twitter.com/iEIZy3VjMY
タグ:
posted at 16:46:47
画面に表示する資料のレイアウトは,OBS の「スタジオモード」で切り替えてる:プリセットをつくっておいて,スライドのみ表示したり,カメラだけ表示したり切り替える.
タグ:
posted at 16:50:50
別アカウントでタブレット etc. で学生視点で Zoom 授業に入っておいて,主にそっちの音声を聞きながら授業を進める.もしも音声が止まったりしたら,早く気づけるはず.
タグ:
posted at 16:53:18
非公開
タグ:
posted at xx:xx:xx
#Julia言語
A = [1, 2, 3, 4, 5, 6]
findfirst(A .== 4)
は
findfirst(==(4), A)
の方が効率的です。A .== 4 でメモリ割当が発生するのですが、後者の方法なら生じない。==(4)(x) は x == 4 と同じ。
foo(函数, コンテナ)型の函数が他にも沢山あります。例えば
sum(f, A)
maxmum(f, A) twitter.com/jirohhana/stat...
タグ: Julia言語
posted at 18:06:42
非公開
タグ:
posted at xx:xx:xx
@secondinspire @sekibunnteisuu 【『50×300=15000円』みたいに書いた」としたら受け取り手は50円のものを300個買ったと認識するのが一般的ではないでしょうか】と同じような感覚の教師は一般常識を知らないことになるので、馬鹿にされて当然。
馬鹿にされて当然の教師のみが馬鹿にされているという認識が正しい。#超算数
タグ: 超算数
posted at 19:10:40
@secondinspire @sekibunnteisuu 天下の国税庁(笑)のウェブサイトでも
3,500個 × 1円 = 3,500円
と
10,000円 × 1,500個 = 15,000,000円
のスタイルがすぐ側に混在しています。
かけ算順序にこだわる人は税金について学ぶときにも困るでしょうね。#超算数
www.nta.go.jp/law/joho-zeika... pic.twitter.com/MhM7Ei14W8
タグ: 超算数
posted at 19:14:15
@secondinspire @sekibunnteisuu 小学校の先生達や市の教育委員会などにかけ算順序は大事だと教えるべきだとする非常識な人達が沢山いるのは事実のようですが、保護者の前で「そういう教え方に反対だ」と明言してくれる小学校の先生もいます。
非常識な教師を馬鹿にし、常識ある先生達を応援するのがよいと思います。
タグ:
posted at 19:17:26
@secondinspire @sekibunnteisuu 非常識な考え方を持っていてかつ「バツにすることには反対」と言う人は多いです。
子供の相手をしたり、子供への教え方に口を出したりして欲しくないのは、非常識な考え方の持ち主です。
バツを付けられるより、バツをつけずに優しく非常識な考え方を子供の心に注入されることの方が怖い。
タグ:
posted at 19:51:57
@secondinspire @sekibunnteisuu 現実の小学校では、かけ算順序はどうでもよいと思っている常識ある若い先生が、別の先輩先生にかけ算順序指導をすることを強制されている場合もあるようです。
ここまで非常識な側が堂々と酷いことをしているケースは珍しく、誰が真にクズなのかをきちんと見極めないと非常にまずいです。 twitter.com/genkuroki/stat...
タグ:
posted at 20:17:26
@secondinspire @sekibunnteisuu かけ算順序はどうでもよいと思っている常識ある若い先生が、別の先輩先生にかけ算順序指導をすることを強制されている場合もあるので、常識ある先生達はSNSで自分の意見を率直に述べ難くなっていると思われます。
タグ:
posted at 20:19:05
朝に近所で見かける通学途中の小学生がめちゃくちゃかわいいことを知っていれば、そのかわいい小学生達に非常識な考え方を教えることを強制されている先生達のストレスは相当に大きなものになっていると推測されます。
ここまで非常識なことが子供相手に堂々と行われているのは本当にまずいです。 twitter.com/genkuroki/stat...
タグ:
posted at 20:29:14
非公開
タグ:
posted at xx:xx:xx
#Julia言語
2つの処方箋有り
* JuliaではOffsetArrays.jlというパッケージを使えば配列のインデックスを始まりを任意に設定可能。
* 0始まりインデックスのa[i]をJuliaにおけるa[begin+i]に書き換える。
配列のインデックスの始まりが0に固定されているプログラミング言語への過学習が問題。 twitter.com/yoshi_hide_ban...
タグ: Julia言語
posted at 20:43:37
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
これなー。昔新卒の看護師のポケットからハサミが飛び出て俺の脇を掠めたことがあったわ。実際は30cm以上離れてたんだろうが、マジで恐怖を感じた。 twitter.com/dora2midway/st...
タグ:
posted at 21:03:27
とかいってたら、GitHubでMars 2020 Helicopter Missionに貢献した人に送られるバッチを自分がもらえてたぁあ!!!!!!! 😲 よくわからないけど、SciPyのメンテナーの一人だからもらえているらしい。世界的な偉業にすこしでも貢献できたのであれば嬉しいな🎉 pic.twitter.com/1H5CA93MVS
タグ:
posted at 21:19:23
Oobleck is a non-Newtonian fluid made of 1 part of water to 1.5–2 parts of corn starch, and is used to show the force of sound vibrations. When sitting on subwoofers, it thickens from the force, and looks like it’s dancing or coming to life [full video: buff.ly/2p3XwXW] pic.twitter.com/uBaFS88NHD
タグ:
posted at 23:30:00
まともに触ったと言えるものでR, Python, Lua, JavaScript。
Rパッケージを移植して遊んでみたJulia。
学生時代に学んで少し遊んですっかり忘れたFortran。ぎり6でいいかな?
LispやCも授業では触ったが、数に入れるのは抵抗あるな。 twitter.com/0_u0/status/13...
タグ:
posted at 23:56:39
@Atsushi776 まともに触っているのはRとPython(仕事でも使う)とCとC++(一応コンパイルして動くアルゴリズムを実装したから数に入れちゃう甘ちゃん)とRustとJulia(Cより簡単だけどなんか後回しになってしまっている)
タグ:
posted at 23:59:26