黒木玄 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年06月12日(土)
New post: CUDA.jl 3.3 - www.juliabloggers.com/cuda-jl-3-3/ #julialang pic.twitter.com/OjAvoFTCAq
タグ: julialang
posted at 00:58:16
CUDA.jl 3.3 brings some very interesting possibilities. Support for union types paves the path for DataFrames.jl on GPUs, debug information, computational graphs, and CUDA 11.3 support. Really excited about native #julialang for data manipulation on GPUs.
juliagpu.org/post/2021-06-1...
タグ: julialang
posted at 01:16:04
非公開
タグ:
posted at xx:xx:xx
#Julia言語 t .+= 1 は t .= t .+ 1 と等価なので、 t = t .+ 1 とは異なる結果になります。
mysum2 の方は「引数 t から配列 t .+ 1 を新たに作って、ローカル変数 t に代入する」になる。
mysum1 の方は「引数 t の各成分に 1 を加える」になって、配列の引数 t の成分の値が変わる。 twitter.com/nakamoto3728/s...
タグ: Julia言語
posted at 02:15:17
#Julia言語
test = [0; 0] は結果的に [0, 0] と同じ意味になる。無理にセミコロンを使う必要はない。
test = [0, 0]
t1 = test
t2 = [0, 0]
における t2 = [0, 0] は「test = [0, 0] 及び t1 = test とは異なる配列(成分はすべて#等しい) [0, 0] を作って t2 に代入する」という意味になる。 twitter.com/nakamoto3728/s...
タグ: Julia言語
posted at 02:15:18
I continue to be amused that the class for which the Prof told me I wasn't a good enough mathematician to attend has probably been the most relevant to my recent work of any of the classes I took in college.
タグ:
posted at 03:21:40
@cometscome_phys #Julia言語 【普通の配列も関数の中で呼んでる時に一回目の呼び出しでは1アロケーションしてるっぽく、二回目は0アロケーションになる】
これを実現しようとちょっと試してみましたが、私にはできませんでした。
minimal working exampleを公開すれば良い反応が出て来る可能性があると思いました。
タグ: Julia言語
posted at 04:04:13
@KenoFischer Arguably the ideal college experience would be to take all the hardest/best classes and just have it be ok to get a C.
タグ:
posted at 04:20:03
#Julia言語 例えば、
z = exp.(.-x' .^ 2 .- y .^ 2)
と書くと失敗の確率が高まる。
z = @. exp(-x'^ 2 - y^2)
とか
f(x, y) = exp(-x^2-y^2)
z = f.(x', y)
が安全。
あと、= までブロードキャストを通す必要があるなら、特に注意を払う。この失敗はよくやる。 pic.twitter.com/ycOUKPGZA0
タグ: Julia言語
posted at 04:23:34
@JeffBezanson That is pretty much what I did - by my count I took grad level classes in at least 6 different departments :). Of course the class in question was an undergrad class, so ....
タグ:
posted at 04:29:31
@cometscome_phys #Julia言語
やはり、普通のComplexF64の配列g1では、getindex(g1[3,1,1])でメモリ割り当ては発生しなかったです。さすがにそこでメモリ割り当てが発生するはずがない。続く twitter.com/cometscome_phy...
タグ: Julia言語
posted at 07:40:04
@cometscome_phys #Julia言語 localpart(g)[3,1,1] の方は @ time ではなく、BenchmarkTools.@ btime で確認すればメモリ割当てゼロであることがわかります。続く
タグ: Julia言語
posted at 07:46:58
@cometscome_phys #Julia言語 DArrayのgのg[3,1,1]では以下のリンク先のgetindex_tuple(g, (3,1,1)) で処理されます。
その中ではremotecall_fetchで値を取得しているので、その分だけのメモリ割当ての発生と遅延が生じます。
github.com/JuliaParallel/...
タグ: Julia言語
posted at 07:49:53
@cometscome_phys #Julia言語 私はど素人なのでよくわかっていないのですが、分散処理ではメモリ共有をしていないので、分散先が持っている情報を引っ張って来るために大きなコストがかかるのは仕方がないと思う。
「結局何をやりたいか」の詳細な説明がなければ、有益なコメントができない問題かもしれません。
タグ: Julia言語
posted at 07:53:35
@genkuroki コメントと調査ありがとうございます。並列化してないのに呼び出しにコストがかかる、というのはその通りです。一方localpartを使ってもメモリアロケーションが発生している問題がそちらで再現できていないようです。ループで呼び出した時にメモリアロケーションが出てきてたのでminimal作ります
タグ:
posted at 07:55:32
@genkuroki DistributedArraysの実装上の問題は、並列化してない場合でもremotecall呼んでるせいで普通の配列より遅い事です。解決策はlocal partを使う事なのですが、ここでもまだ遅くて、再現できるコードを書いてみます
タグ:
posted at 07:57:08
@cometscome_phys テストをするときには、DArrayを含む配列のコンストラクタの起動はテストする函数の外側で使い、外側で作った配列の g はテスト函数に
@ btime time($g)
の形式で渡すのが基本です。この手続きを誤ると無視するべきメモリ割り当てまでテスト結果に含めてしまうことになります。
タグ:
posted at 08:04:04
@cometscome_phys あと、実際にどのメソッドが起動されるかを @ which で確認して、ソースコードを確認すれば、裏で何をやっているかがわかります。
多重ディスパッチのJuliaでは @ which がものすごく有用です。
タグ:
posted at 08:05:59
制度や考え方が原因で「成績を気にして難しい講義を取ろうとしない」というような傾向が生まれている大学、学部、学科があると聞いたことがある。
考え方がダメでそうするやつは放置でよいと思うが、制度のせいでそうなっているのであればそれは制度が悪い。
タグ:
posted at 08:11:54
@cometscome_phys 子ワーカーを立ち上げての確認はしていません。
結局何をやりたいかがわからないし、そもそも分散処理が適切な方法かもわからないので、手間をかけるモチベーションがわかない。
タグ:
posted at 08:16:14
@genkuroki いえ、そういう意味ではなくてですね、子ワーカー立ち上げずにjulia hoge.jlってやってDistributedとBenchMarkToolsがエラーでbtimeがこちらの環境では使えないという話をしています。jupyter使っていますか?
タグ:
posted at 08:19:01
@cometscome_phys ええと、エラーが出る話については
discourse.julialang.org/t/please-read-...
の指示に従って、minimal working example (エラーが出るコード)を出してくれないと、何を言っているか自体が分かりません。
どんなにシンプルに見えることであっても情報の詳細を出さないと伝わらない。
タグ:
posted at 08:29:15
@genkuroki 言い方を変えますと、私の環境ではtimeにbをつけてbtimeにするコードは動かないということです。子ワーカーとかの話ではありません
タグ:
posted at 08:32:55
@genkuroki いえ、私が提示したコードを修正してbtimeに変えて動いた、という話をされていましたので、その変えたコードはどんな感じですか?ということでした。あなたがbtimeが良いと書かれていたので、その良いコードを閲覧したかったのですが、面倒なら自分でやりますのでお手数をおかけしました
タグ:
posted at 08:38:22
@cometscome_phys ええと、コミュニケーションの齟齬が生じているわけですが、そちらが知りたい情報があるなら、そちらが知りたい情報が得られるコードが具体的にどれかを示してください。コピー&ペーストで実行可能なものを。
@ btimeを含むコードはどこにありますか?
タグ:
posted at 08:42:55
@cometscome_phys #Julia言語 欲しい情報はこれかな? 0 allocationsです。
これが欲しい情報である可能性に今気付きました。
using DistributedArrays, BenchmarkTools
g = dzeros(ComplexF64, 3, 3, 256)
test_localpart(g) = localpart(g)[3, 1, 1]
@ btime test_localpart($g)
@ の後の空白は除く。 pic.twitter.com/letSJQeMKN
タグ: Julia言語
posted at 08:48:20
@cometscome_phys 1つ前のツイートを見れば以下のリンク先の説明の内容はクリアになると思います。失礼しました。
❌ time
⭕️ test
です。 twitter.com/genkuroki/stat...
タグ:
posted at 08:50:44
@cometscome_phys はい、私の側は疑問に答えることができたようです。
それでは【julia hoge.jlってやってDistributedとBenchMarkToolsがエラーでbtimeがこちらの環境では使えない】のhoge.jlの内容を教えてください。
タグ:
posted at 09:05:33
仮説検定の考え方だと、カンニングしていないと仮定し、そのような高校生で2^100 を覚えている生徒は5%以下だ。だから、カンニングをしたと結論付けられそうだ。有意水準が1%でも危ない。
まあ、検定が絶対だという風潮が新課程の数学Iで起こらなければよいと思うけれど。
タグ:
posted at 09:34:13
非公開
タグ:
posted at xx:xx:xx
ごまふあざらし(GomahuAzaras @MathSorcerer
0.12 なら動きました.
#Julia言語 twitter.com/MathSorcerer/s...
タグ: Julia言語
posted at 11:00:16
OokuboTact 大久保中二病中年 @OokuboTact
こんな人が数学教師をやっているんだあ
驚き pic.twitter.com/3gJOclEsTW
タグ:
posted at 11:12:24
先日の勉強会の発表スライドを公開しました。プロセッサフレンドリな二分探索の実装テクについてです。
Binary search with modern processors speakerdeck.com/kampersanda/bi...
タグ:
posted at 11:16:36
非公開
タグ:
posted at xx:xx:xx
| Quantum Zeitgeist @QZeitgeist
Plenty of Quantum Companies are using the Julia Language.
Join Quantum Computing companies exploring the Julia Language at JuliaCon 2021
quantumzeitgeist.com/join-quantum-c... @JuliaLanguage #JuliaLang
タグ: JuliaLang
posted at 13:54:46
| Quantum Zeitgeist @QZeitgeist
We wrote a while back on the merits of the Julia Language.
Could Julia replace Python and be transformational in Quantum Computing?
quantumzeitgeist.com/could-julia-re... @JuliaLanguage #JuliaLang
タグ: JuliaLang
posted at 13:57:11
The central limit theorem equivalently reads as the convergence of iterated convolutions.
en.wikipedia.org/wiki/Central_l... pic.twitter.com/x7XO29lhpA
タグ:
posted at 14:00:00
非公開
タグ:
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
非公開
タグ:
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
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
Jupyter Labをブラウザ単体で稼働させるライブラリ。WebAssemblyを使ってブラウザ上でPythonを実行できるPyodideが内部で使用されている。
github.com/jtpio/jupyterl...
タグ:
posted at 14:50:31
Python, julia なんでもいいので立体図形を切断した断面図とかを可視化できる方法はないですかね?
アニメーションを作れるとなおいいんですが。
Geogebraで出来そうな気もする。
タグ:
posted at 14:54:06
3歳と近所を散歩中
『舗装用敷石の黒だけ踏んで歩く』
に挑戦している小学生の男の子を見た3歳が、それを真似して黒い敷石を踏んで歩こうとして転び、娘に気づいたその子が
「大丈夫?下、海やからな!」
気を付けてと言ってくれた。知ってる、おばちゃんも昔おんなじ事やったことあるよ。
タグ:
posted at 15:48:14
男の子の設定的には、そこはとても暗い危険な海なのだそう。でも娘は普段外出する時には携帯できる医療用酸素をつけているので
「あのさあ、実はこれ酸素ボンベなんやで」
と教えてあげたら
「すげえ!海なら無敵やん!」
ホントは海で使うヤツじゃないんだけど、そう言って去って行った。可愛い。
タグ:
posted at 16:01:16
いまさらなのかもしれませんが、Juliaプロジェクトが管理するOpenLibmなるものがあることを知りました。openlibm.org Juliaのための高品質なlibmの必要性から生まれて、クロスプラットフォームでスタンドアローンなlibmとしてまとめられたものだそうです。
タグ:
posted at 16:55:38
もとはSunが開発したFDLIBMをBSDが採用して、今もFreeBSD msun, NetBSD libm, OpenBSD libm として使われています。FreeBSD msun とOpenBSD libmをもとにOpenLibmが作られたとのことです。
タグ:
posted at 16:55:39
実際に、FDLIBMとFreeBSD msunとNetBSD libmとOpenBSD libmとOpenLibmのそれぞれについてatan()のコードを探して読み比べてみたところ、ほとんど同じものでした。
タグ:
posted at 16:55:39
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
さらに面白いことに、 #Julia言語 の人達は github.com/JuliaMath/open... を開発するだけではなく、sinなどの函数をpure Juliaで書き直しています。
github.com/JuliaLang/juli... を見ると、 Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved とあります。 twitter.com/kamo_hiroyasu/...
タグ: Julia言語
posted at 17:37:14
インライン化による最適化でSIMDと相性がよくなるようなsinなどの基本初等函数のpure Juliaによる実装は
github.com/JuliaSIMD/SLEE...
にあります。
コンパイル済みのバイナリのライブラリ内の函数を使うという方針は計算速度的にも、自動微分やその一般化的にも不利になります。
タグ:
posted at 17:45:04
@musorami @temmusu_n 画像は、小学校学習指導要領(平成29年告示)解説 算数編の191頁です。
前学習指導要領解説にはこのような図はありませんでした。 pic.twitter.com/1gi9EntI78
タグ:
posted at 17:45:35
#Julia言語 の人達のやり方を見ていると、「おまえらsinを何回実装し直すつもりだ?」という感じ(笑)
非常に楽しそうでよい。
初等函数だけではなく、基本特殊函数の実装もpure Juliaでやり直し、Fortranで書かれたライブラリ中の函数より2〜3倍の速さを実現している。
youtu.be/mSgXWpvQEHE
タグ: Julia言語
posted at 17:50:33
#Julia言語 最近知った情報では、行列のかけ算の実装もpure Juliaでやり直して、爆速のMKLに喧嘩を売ろうとしている。
ここまで来るとめちゃくちゃクレージーな感じでとてもよい。
github.com/JuliaLinearAlg... pic.twitter.com/ZpfaPWmpP9
タグ: Julia言語
posted at 17:57:37
#Julia言語 添付画像は
github.com/JuliaMath/open...
にある Copyright (C) 1993 by Sun Microsystems な|x|≤π/4のFloat64でのsin(x)のコードです。
S1,...,S6は13次奇函数多項式近似における3次,...,13次の係数です。この係数をどうやって見つけたかを知っている人がいたら教えて下さい。続く pic.twitter.com/LZIX1pZkDm
タグ: Julia言語
posted at 18:05:17
#数楽
github.com/JuliaMath/open...
大事なポイント
①sinのTaylor展開を使っていない。
②13次奇函数多項式による(なんらかの適切な意味(複数ある)での)理想化された最良近似で1次の係数はぴったり1にならないが、この場合には1次の係数をぴったり1に固定する必要がある。(試行錯誤で確認した)
タグ: 数楽
posted at 18:08:49
#数楽
③これは、1次の係数をぴったり1に固定した13次奇函数多項式で、0≤x≤π/4におけるsin(x)の相対誤差(|近似値 - sin(x)|/sin(x))を最小化する場合の係数でもない。
④|近似値 - sin(x)|/xを最小化するとほぼこの係数になることを確認できた。
⑤ぴったり同じ値は出せなかった。誰か教えて! pic.twitter.com/mijbgTnzvg
タグ: 数楽
posted at 18:14:29
#数楽 #Julia言語 sin x をFloat64で計算するための多項式近似を求める私による計算は以下のリンク先で公開されています。
多分、私が公開しているJupyter notebookの中で最も汚い内容になっている。Remez.jlを使っている。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/z4a6Ql8dCL
posted at 18:24:06
非公開
タグ:
posted at xx:xx:xx
#Julia言語 #数楽
Remez.jl example - degree-13 polynomial approximations of sine.ipynb の微小訂正版
↓
nbviewer.jupyter.org/github/genkuro...
posted at 18:38:01
完全に理解はできてはいないにしても、sin(x)の|x|≤π/4での数値計算は私の理解が及ぶ範囲になっている感じ。
現時点では何も理解できていないのは、pure JuliaでがちでMKLにがちで喧嘩を売っている件。誰かが、何をどう工夫して高速化しているのかを易しく解説してほしいです。
タグ:
posted at 18:51:44
Ali AlSaibie | علي ا @AliAlSaibie
باقة لطيفة لعرض العناصر الكيميائية في #JuliaLang
توجد العديد من الباقات البرمجية في العلوم الكيميائية
github.com/svaksha/Julia.... pic.twitter.com/H4a39yJBWN
タグ: JuliaLang
posted at 18:54:37
#統計 たとえそれが滅茶苦茶な形をしていても、左右対称な分布に関する中心極限定理の収束は速い(以下のリンク先の場合)。
左右の非対称性が極端に大きい場合には、中心極限定理の収束は非常に遅くなる。そういう場合には左右の非対称性を考慮した確率モデルを使う方が勝る。 twitter.com/gabrielpeyre/s...
タグ: 統計
posted at 19:03:38
#Julia言語 の sin(πx) の実装では、πとxの掛け算を高精度を行う函数を定義することによって行われています。
github.com/JuliaLang/juli... pic.twitter.com/ly7JEphzr3
タグ: Julia言語
posted at 19:14:25
#Julia言語 結果的にsinpiがsinより3割ほど遅くなっていて、「それを改善できないか?」というissueも立てられています。
↓
github.com/JuliaLang/juli...
私はこのissueの解決法があれば驚きます。
こういう所でも数学とプログラミングの才能を発揮する若い人達の活躍が期待されます。
タグ: Julia言語
posted at 20:10:48
@genkuroki stackoverflow.com/questions/3611...
Javaの人もどうやって見つけたのか訊いてましたね。
昔のSunはすごかったんだろうなぁ。
タグ:
posted at 20:15:11
「sin(x)の実装で使われている13次多項式をどうやって見つけたのか」という疑問に関する関連情報
チェビシェフ多項式近似だと最大絶対誤差最小化なので実はダメ。
欲しいのは相対誤差が小さな近似式なので、Remez法などを使う必要がある。
stackoverflow.com/questions/3611...
twitter.com/ikaneko01/stat...
タグ:
posted at 20:21:12
私も最初、チェビシェフ多項式近似だろうと思って、サクッと実装して試してみましたが(その程度のことは私のようなど素人でもサクッとできる)、全然合わないことにすぐに気付いた。
こういうのは「論よりコード」で実際に自分でコードを書いてみて試行錯誤しないと真実には全然近付けない。
タグ:
posted at 20:23:39
Remez法の実装は私程度の実力ではまだ「サクッと」はできる感じではなかったし、面倒だと感じたので、ググって
github.com/simonbyrne/Rem...
Remez.jl
を見つけてありがたく使わせてもらった。
タグ:
posted at 20:25:45
#Julia言語 その結果、私が作った係数a1=1, a3, ..., a13とSunの人が見つけてJuliaでも使われている係数DS0=1, DS1, ..., DS6を使ったsinの近似計算の相対誤差がほぼぴったり一致するようにはできた。
私の係数によるFloat64での計算の誤差はSunのコードの誤差とほぼ同じです。ここまで私は行けた。 twitter.com/genkuroki/stat... pic.twitter.com/uPl6AY3wEE
タグ: Julia言語
posted at 20:36:00
#Julia言語 私が求めた係数a3, a5, ..., a13のa3, a5はSunの人が求めた係数に完全に一致しており、a7は表示されている最後の桁を除けば一致しています。
私の係数計算アルゴリズムは昔のSunの人が使ったアルゴリズムに数学的に相当に近そうなことが分かります。
試行錯誤が必要でした。 pic.twitter.com/sorETd6eHu
タグ: Julia言語
posted at 20:39:50
New post: Benchmarking and Profiling Julia Code - www.juliabloggers.com/benchmarking-a... #julialang
タグ: julialang
posted at 21:19:33
Benjamin Vincent, DP @inferencelab
Just got my head around Queryverse.jl in @JuliaLanguage. Let's you get complex data processing done really succinctly. Way cleaner and more declarative than the version I originally did in Pandas/Python. pic.twitter.com/ybwsuvtXnj
タグ:
posted at 21:23:19
非公開
タグ:
posted at xx:xx:xx
弊社がスポンサーしているLibreOfficeのカンファレンス。インドネシアからの発表。ジャワ語で書かれたスクリプト。これが本当のJavaScript pic.twitter.com/EyDUldT3Bs
タグ:
posted at 21:50:33
またしてもJuliaの学習がおざなりになっていたけれど、今こんな風に(dplyrっぽい操作、パイプ処理)ができるの!?驚き。
tidyverseならぬQueryverse🎆直感的に読める...読めるぞ!
Julia for Data Scienceの進化を感じました(小並感)。勉強しなおさないとな💪 twitter.com/inferencelab/s...
タグ:
posted at 21:52:04
@phasetrbot #Julia言語 すでにPyCallが使えていて、PyCallで使えるpythonのpipが使えることを仮定。シェルで
pip install yfinance
を実行してPythonでyfinance github.com/ranaroussi/yfi... を使えるようにする。
あとは添付画像のようにすれば使える。
ソースコード
↓
github.com/genkuroki/publ... pic.twitter.com/D42Wz0ajcj
タグ: Julia言語
posted at 22:17:19
The hardest part of DataFrames.jl development process (Re-post) www.juliabloggers.com/the-hardest-pa...
タグ:
posted at 22:37:16
juliaはpythonの構文に近いと思っていましたが、なんとRLikeにもかけるんですね、、! twitter.com/u_ribo/status/...
タグ:
posted at 22:49:08
非公開
タグ:
posted at xx:xx:xx
そんなわけで遅くなったけど遊んでみた。#Python だと負の無限大が -float(‘inf’)で実現されることが分かった。ふーむ。-ooは #julia だったか。
github.com/tsatie/SatieGi...
posted at 23:47:18