黒木玄 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 を見て下さい。
2020年09月23日(水)
#Julia言語 続き。ただし、mutable struct は作るたびにメモリ割当が発生します。
mutable structは1回だけ作って使い回すのであれば、問題ないのですが、大量に作って配列に保存するというようなことをやる場合には速度劣化の原因になりえます。
gist.github.com/genkuroki/0622...
twitter.com/mac_wac/status... pic.twitter.com/ppRMfgaRUf
タグ: Julia言語
posted at 23:46:13
そういえば、
Yao.jlで量子エンタングルメント作った話です。後編は3qubit、4qubitになります。
sizumi.net/julia/yao_enta...
Blueqatがjuliaに対応したらしいので、そちらも試みたい
#julia言語
タグ: julia言語
posted at 23:32:04
@sekibunnteisuu なお、界隈の方々が順序に固執する理由が薄々解ったからといって、それを許容するつもりはありません。
いやね、あの方々が自分自身だけの問題として固執しているのならどーでも良いのですが、害悪を撒き散らしている現状を見ると看過できないんですよね。
タグ:
posted at 23:30:38
@sekibunnteisuu どこまでを”工学畑”とするか判然としないのでアレではありますが。
一応それっぽい所を卒業してそれっぽい仕事をしていますが、実用上は全く無意味ですね。
ただ、界隈の方々が順序に固執する理由は薄々解ってはきましたけれど。
タグ:
posted at 23:28:46
非公開
タグ:
posted at xx:xx:xx
#Julia言語
struct Param
dt
ω²
end
ではなく、
struct Param{T}
dt::T
ω²::T
end
としないと遅くなることの証拠を示していなかったので作って来ました。私の環境では前者は後者の17倍以上遅くなりました。
gist.github.com/genkuroki/0622...
twitter.com/genkuroki/stat... pic.twitter.com/6XlFbn7x6o
タグ: Julia言語
posted at 22:57:06
#Julia言語 Juliaで例えば 1.0 (Float64) に作用させることができるメソッドがどれだけあるかを知りたければ、
methodswith(typeof(1.0))
もしくは
methodswith(Float64)
を実行すればよい。これ、結構使います。 pic.twitter.com/lldi162bAH
タグ: Julia言語
posted at 22:49:44
@sekibunnteisuu @Presence_fTVA 【単価×個数もありますが?】
そうなのです。
「数量×単価 が幅をきかしている」
とは言いましたが、
「圧倒的である」
とは言っていないのです。
拮抗しているのです。
twitter.com/genkuroki/stat...
takexikom.hatenadiary.jp/entry/20130107...
タグ:
posted at 22:01:15
#Julia言語
biojulia.net/post/seq-lang/ のストーリーは科学研究に使うソフトウェアの速度比較は、内容を精査しないと全く意味がないこともよくわかる話です。
以下のリンク先スレッドで粗筋を説明しています。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 21:42:43
#Julia言語 以上の話題とは毛色が違いますが、
biojulia.net/post/seq-lang/
On the performance and design of BioSequences compared to the Seq language
Jakob Nybo Nissen, Ben J. Ward
Jan 23, 2020
はくそ面白かった。
仕掛けられたスピード競走の顛末記。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 21:38:25
#Julia言語 あと、気候モデルのような分野でもJuliaが使われているという話も初めて知ったときにはびっくりしました。
気候モデルの世界はそういうものではないと誤解していた。
私の感覚も明らかに古過ぎで時代遅れ。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 21:34:30
#Julia言語 広く使われている十分に最適化されたライブラリとして数値線形代数のOpenBLASは有名。Juliaで実験的に書いてみた数値線形代数の基本演算のコードがOpenBLASの9割程度の速度を達成した話には非常にびっくりしました。
github.com/Sacha0/GemmDem...
タグ: Julia言語
posted at 21:13:22
以前、Pythonで記述したプログラムをJuliaに移植しただけで処理時間が1/10程度になった事には流石に感動した。パッケージもPythonのものを使ったりしていたのでJuliaの能力を十二分に発揮しているわけではないが、数値計算以外のfor文を使った処理が高速化されていた為だろう。
タグ:
posted at 21:02:00
@hayato_VTA #Julia言語 ごめんなさい。私はそちら方面は本当に何も知らないので分かりません。
Juliaがサーバーサイドでどのように使われているかについては、Juliaのもっと偉い人達に聞いて下さい。 twitter.com/bicycle1885/st...
タグ: Julia言語
posted at 20:53:09
@yasuo_ozu @nakayoshix なるほど。ということは
【速度を求めるならJuliaよりRustを使おう(布教したいだけ)】
という発言は撤回して
速度を求めるならJuliaよりRustを使うべきだという証拠はない!
しかし、布教したいのでRustを使おうと言いたい!
に訂正するわけですね。それなら了解です。
タグ:
posted at 20:45:27
@yasuo_ozu @nakayoshix #Julia言語 とRustはLLVM仲間で基本的な速さは同じ程度だと考えられます。少なくとも私は実践的にRustの方がJuliaより速い証拠を知らないです。あるなら教えてほしい。証拠がないなら、意見を撤回するべき。
タグ: Julia言語
posted at 20:31:41
@musicisthebest_ もしかしてそう言って批判する人もいるかもしれないけど、批判批判派がそういう非本質的な論を取り上げて「こんなのナンセンス」と言うから、話がどんどん枝葉末節に入り込んでしまう。
「バツは決してその子の人格をないがしろにするものではないんです」とか、
そんなのどーーーでもいい
タグ:
posted at 20:21:02
#Julia言語 そのノートブック
nbviewer.jupyter.org/github/mitmath...
で解説されている方法は、__原理的には__プログラミング言語依存性が小さいと考えられる普遍的に通用する方法です。
だから、Juliaを使う気がない人も読む価値がある。
そういう内容の講義にJuliaが向いていることが重要なことだと思う。
タグ: Julia言語
posted at 20:12:28
#Julia言語 その講義群全体にはとても目を通せないという人も
github.com/mitmath/18S096...
↓
github.com/mitmath/18S096...
↓
nbviewer.jupyter.org/github/mitmath... ←これ‼️
だけには目を通しておいた方が良いです。
E₁(z)函数のJuliaによる実装でFortranで書かれたライブラリの5~6倍の速さを実現しています。
タグ: Julia言語
posted at 20:08:35
#Julia言語 具体的には MIT での Julia を使った講義群の記録が非常に面白いです。
github.com/mitmath
MIT Mathematics
タイトルにJuliaが入っていないですが、Juliaを使いまくっています。
そして、内容的には、将来Juliaを使わなくなる人にとっても役に立つ普遍的なものになっています。
タグ: Julia言語
posted at 19:59:52
中村 良幸 (Nakamura Yosh @nakayoshix
その後改めて @genkuroki さんのJuliaに関する一連のツイートを拝見し、なるほどJuliaっていうのは従来Fortranがターゲットにしていたような高速数値計算の分野にも向いてるんだな…とよくわかったので、今後はプライマリ言語の一つとしてPythonだけでなくJuliaも使っていこうかなと思った次第です。😇
タグ:
posted at 19:44:37
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
みわよしこ/Yoshiko Miwa, @miwachan_info
これは良いことを聞きました。今日も図書館で数値シミュレーションの本を手に取りかけて「博論出すまでは我慢ガマン」とがまんしたところ。
Cやアセンブリ言語の経験があるから、いまどきの高級言語はどれもラクショーかもしれないけど、ブランク長いからイマドキの一番いい入り口から復習したい。 twitter.com/genkuroki/stat...
タグ:
posted at 18:42:13
Pythonで教える場合には、「メモリの無駄遣いをしても、NumPyに乗せれば速い」というようなPythonを前提にすれば実用的であっても、コンピュータの力を最大限発揮させたいという立場からはナンセンスなバッドノウハウを過学習させないように気を付ける必要がある。
Juliaだとその辺の心配が消える。
タグ:
posted at 18:19:41
#数楽 以上のような話は定番のネタで、高木貞治『解析概論』にも書いてあるし、私も
genkuroki.github.io/documents/Calc...
に解説を書きました。
タグ: 数楽
posted at 17:51:38
#数楽 H_n=1/1+1/2+…+1/nの積分による近似を細かく見ると、H_n - log n がn→∞で収束することを証明できます。収束先の値はよく γ = 0.5772156649… と書かれます。
この γ は π, e の次に出て来る重要な数学的定数。 pic.twitter.com/YgcjvgKdTv
タグ: 数楽
posted at 17:35:00
#数楽 添付画像は #Julia言語 で 10⁹ 個の和を素朴に計算しています。函数 k -> 1/k の値を k=1,2,…,n について足し上げるには
sum(k -> 1/k, 1:n)
と書けます。
10⁹ 個の和は現代のパソコンなら数秒で計算できます。(できまかったら、使っている道具が悪いので、Juliaに乗り換えるべき) pic.twitter.com/umKeYSIWt7
posted at 17:29:49
将棋の王将戦の挑戦者決定リーグに参加している7人+現王将の関係をグラフにしたものです。大変なことになってそう。 pic.twitter.com/6EE5rLRNqI
タグ:
posted at 17:27:47
#数楽 nが大きなとき、
H_n = 1/1 + 1/2 + … + 1/n
が
log n
で近似されることは、和H_nを積分で近似すればすぐに納得できることなのですが、H_n と log n の違いがどれくらいであるかは面白い問題です。
n=10¹~10⁹について H_n - log n を計算すると 0.57721566… に収束しているっぽい。 pic.twitter.com/Pt7zAE0z1P
タグ: 数楽
posted at 17:25:44
本気で強く批判的な意見を述べると、それを超えるだけ十分なほど肯定的な方向に進むための話を大量に書くことが強いられる感じ。
「高校数学の答案として」のような枠に制限した途端に不健全で有害な話題になってしまうという意見を述べるためには、不健全でない話の例を示す必要が出て来る。つらい。
タグ:
posted at 17:13:24
#数楽 (1 + h)^{1/h} と e(1 - h/2) のグラフ
式中に1/hが出て来ていてビビる人もいるかもしれないが、hについてh=0の近傍での解析函数に延長される。
www.wolframalpha.com/input/?i=plot%... pic.twitter.com/bwiT0odAwS
タグ: 数楽
posted at 17:08:43
#数楽 続き~、
(1+h)^{1/h} = exp(1 - h/2 + O(h²)) = e(1 - h/2 + O(h²)).
h > 0 が小さいとき、(1+h)^{1/h} は e より eh/2 程度小さな数値になります。
(1+hx)^{1/h}とexp(x)の関係も同様に出せます。 pic.twitter.com/FcM0kCaBWO
タグ: 数楽
posted at 16:50:29
#数楽 綴り訂正
❌bihavior
⭕️behavior
asymptotic behavior を「漸近挙動」と専門用語っぽく訳して終わりにするのではなく、「f(n)さんがn→∞でどのように振る舞うか、行動するか、動くか」のように親しみを込められると楽になる。
振る舞いや行動や動きを記述するやり方を数学で色々習う。 twitter.com/genkuroki/stat...
タグ: 数楽
posted at 16:24:56
#数楽 適当に数値的確認をするのも大事!
「高校数学の答案」というくだらない有害な枠組みを設定した途端に、漸近挙動を直観的に見るとか、数値的に確認してみるというような大事なことが全部抜け落ちてしまう。
そういう枠組みを設定することは数学教育的に極めて有害。 twitter.com/kale_aojiru/st...
タグ: 数楽
posted at 16:03:05
@twovillage #Julia言語 私は公式ドキュメントの特に Performace Tips を読むことをサボったせいで多くの時間を無駄にしました。
それを読んで実行して確認するだけで相当に楽になります。
タグ: Julia言語
posted at 15:21:11
#数楽 二項展開経由で
f(h) = (hについて3次以下の項) + O(h)
の形に整理する計算は添付画像の通り。地道に全部計算しています。
これを高校生の段階でできるようになる必要はないと思いますが、大学1年生レベルの話題なので、教える側は理解しておく必要があると思います。 pic.twitter.com/7VVYdKdVzS
タグ: 数楽
posted at 15:17:29
#数楽 立方根の方の3階の導函数は添付画像のようになるらしい。この程度なら実際にできてしまう人が多数いるように思われるので、実際に試験問題に出す場合にはちょっといじりたくなる。 pic.twitter.com/LWgUVqulZs
タグ: 数楽
posted at 15:12:55
#数楽 上の問題は h = 1/n とおくと、添付画像のように書き換えられます。
これと類似の問題は実際に試験問題で出したことがあります。
ロピタルの定理を使おうとして分子分母を機械的にhで3回微分すると大変なことになる(笑)。やはりパターンマッチ教育は有害。 pic.twitter.com/6WVcuXpL0g
タグ: 数楽
posted at 15:05:00
#数楽 「理解」という言葉は非常に難しい言葉で、沢山の経験を積まないとよく分からないことの代表例みたいなものだと思う。
私の主観では、清さんが出した問題と私が出した問題について「計算の手間が違うだけで本質的に同じ種類の問題に過ぎない」と断言できない人は「理解していない」と感じる。 twitter.com/f_sei/status/1... pic.twitter.com/QSV0FgsNjq
タグ: 数楽
posted at 14:51:31
#数楽
例えば、もとの問題について、
f(n) = (n³+6n²+2n+1)^{1/3}
については、f(n) - n の「分子の有理化」によって、
f(n) = n + (収束する部分) = n + 2 + (0に収束する部分)
と計算できた人は多いと思います。
この場合は特殊なのでnを発見するのは容易。
添付画像の問題ではどうか?(笑) twitter.com/f_sei/status/1... pic.twitter.com/G9NSOTwiiN
タグ: 数楽
posted at 14:39:47
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
#数楽 何度でも言いたいこと。
「高校数学の答案としてはどのように解いたらよいか」
のような問い方は数学教育的に有害なのでやめた方がよいと思います。
悪いことをしている自覚がないこと自体が大問題。
添付の類似の問題を解けばどうしてこのように言いたくなるかが分かるかも。 twitter.com/f_sei/status/1... pic.twitter.com/TJE7VNTowN
タグ: 数楽
posted at 13:58:51
白川は失業者や自殺者を増加させても、自分ら失業の心配の無い高所得者がデパートで食べるランチを同じ値段で充実させる方を良しとしたわけですよね。
マジでサイコパスなのでは。
あるいは現代の「アイヒマン」か。 twitter.com/hideakinonaka/...
タグ:
posted at 12:33:54
非公開
タグ:
posted at xx:xx:xx
『デフレと言われていた白川総裁時代、世界の量的緩和政策に逆らった日本円は最強になり、なんでも安く買えたし、海外へも抵抗感なく出かけられ、逆に日本の巷で外国人を見かけることもなかった。』
デフレが好きなのはこういう人たち。 円高で仕事を失った人など見えない。 blogos.com/article/485764/
タグ:
posted at 12:07:57
#Julia言語
添付動画は同ブログ記事↓より。
cormullion.github.io/pages/2020-09-...
ソースコードもそこにある。
同サイトの別の記事も面白い。ソースコード付き! pic.twitter.com/FBntJKzL2J
タグ: Julia言語
posted at 12:03:17
#Julia言語 添付動画は
cormullion.github.io/pages/2020-09-...
より。このような動画を自分で書いたコードによって作成したいならば、Juliaを使い始めて、上のリンク先のブログ記事を読めばよい! pic.twitter.com/VsRviN99Zg
タグ: Julia言語
posted at 12:00:11
#Julia言語
多分文字数の都合で仕方無かったのだと思いますが、
struct Param
dt
ω²
end
ではなく、
struct Param{T}
dt::T
ω²::T
end
として、コンパイラに中身の型が見えるようにしておかないと、速度劣化の原因になります。
docs.julialang.org/en/v1/manual/p...
Performace Tipsは最初に必読。 twitter.com/mac_wac/status...
タグ: Julia言語
posted at 07:01:59
手洗いや清潔の指導は、小児の胃腸炎感染を予防するか?[コンゴ共和国編]
インドで行われたクラスターランダム化比較試験でした。
手洗い講習と無料での石鹸の提供が、こども本人だけでなく、家庭内での感染症のリスクが減らせることが示唆されました。
www.dr-kid.net/handwash-crct-...
タグ:
posted at 07:00:54
#Julia言語 個人的には、パラメータの方は
Parameters.@ unpack
で抽出し、sys.x, sys.v はそのまま書けば良いと思います。
sysの方は略せなくても腹は立たない。
添付画像2のコードは十分読み易いと思います。
マクロを使い過ぎると大抵後で後悔する。
gist.github.com/genkuroki/44c9... twitter.com/mac_wac/status... pic.twitter.com/Dmz6WPaIji
タグ: Julia言語
posted at 06:57:42
GPU-Accelerated ODE Solving in R with Julia, the Language of Libraries. Read the complete blog here - www.stochasticlifestyle.com/gpu-accelerate...
#GPU #DataScience #ODE #R #julialang #MachineLearning
タグ: DataScience GPU julialang MachineLearning ODE R
posted at 06:40:00
非公開
タグ:
posted at xx:xx:xx
#Julia言語 上で出て来たCommon Lispで採用されている多重ディスパッチの優秀性を受け継いだJuliaでは、さらに何が付け加えられたかについては
tamaspapp.eu/post/common-li...
を参照。これは何度も紹介している非常に面白いブログ記事です。
タグ: Julia言語
posted at 05:02:46
#Julia言語
discourse.julialang.org/t/design-patte...
翻訳【[Juliaで採用している]多重ディスパッチは非常に強力なので、通常のオブジェクト指向「デザインパターン」はほとんど必要ない。】
通常のオブジェクト指向「デザインパターン」への__過学習__はJuliaやCommon Lispを使えば解消されるはず。
タグ: Julia言語
posted at 04:59:38
#Julia言語
デマに踊らされるタイプの人は
❌Juliaは数値計算専用
❌ゆえにオブジェクト指向プログラミングできないように設計
❌ゆえにコードの再利用が困難
のような誤解をしがちかもしれませんが、まともな人ならそうならないはず。
上の3つは全部__完全に間違っています__ pic.twitter.com/3UjclAYAH4
タグ: Julia言語
posted at 04:42:19
#Julia言語
❌Juliaの設計者はオブジェクト指向に否定的らしい
は誤り。正しくは
⭕️よくあるタイプのオブジェクト指向デザインパターンよりも、Juliaの多重ディスパッチの方が同等のことを簡潔に書けるので優れている。
すでにJulia版デザパタ本も出版されています。
www.amazon.co.jp/dp/B07SHV9PVV twitter.com/sasurai8748015...
タグ: Julia言語
posted at 04:36:27
#Julia言語 関連
blogs.nvidia.com/blog/2019/07/1...
【The team is developing the new model using __Julia__, ~ allowing the scientists to accelerate their climate model calculations using NVIDIA V100 Tensor Core GPUs onsite and on Google Cloud.】
気候モデルもJuliaで!
タグ: Julia言語
posted at 04:08:35
#Julia言語 関連
clima.caltech.edu/2020/06/08/cli...
CliMA 0.1: A first milestone in the next generation of climate models
June 8, 2020
by Sabrina Pirzada which describes how they are using Julia to build better climate models.
気候モデルもJuliaで!
タグ: Julia言語
posted at 04:03:46
非公開
タグ:
posted at xx:xx:xx
Stefan Karpinski @StefanKarpinski
@smartcity_lux @JuliaLanguage @OfficialLoganK @nassarhuda @JeffBezanson You could argue that instead of unsing Euler's `e` as the default base, we should use e^(π/180), which would restore the identity, but `e` is the unique value for which the derivative of e^x is e^x. That's why it's the _natural_ logarithm. Radians are natural in the same way.
タグ:
posted at 00:46:12
Stefan Karpinski @StefanKarpinski
@smartcity_lux @JuliaLanguage @OfficialLoganK @nassarhuda @JeffBezanson In radians, we have nice formulas like
e^(i*x) = cos(x) + i*sin(x)
In degrees, this would be
e^(i*π*x/180) = cosd(x) + i*sind(x)
Ewww.
タグ:
posted at 00:43:50
Stefan Karpinski @StefanKarpinski
@smartcity_lux @JuliaLanguage @OfficialLoganK @nassarhuda @JeffBezanson Taylor series of sin(x) in radians:
x - x^3/3! + x^5/5! - ...
Taylor series of sin(x) in degrees:
π*x/180 - π^3*x^3/34992000 + π^5*x^5/22674816000000 - ...
Yikes.
タグ:
posted at 00:37:12
Stefan Karpinski @StefanKarpinski
@smartcity_lux @JuliaLanguage @OfficialLoganK @nassarhuda @JeffBezanson This has nothing to do with standards or what mere humans prefer. Radians are the unique unit for trig functions such that their slope when the intersect the x-axis is 1. Or put another way, in radians the derivative of sin is cos. Do you know what it is in degrees?
タグ:
posted at 00:31:23
なぜJuliaのメタプロにこだわってるかというと、こんなコード書けたら可読性上がるなあと思ってちょっとずつ勉強してるからでありまして。
@ substforeach (:d in [1,2,3]) newE[:d,i,j,k] = oldE[:d,i,j,k] - dt_dx * @ rot newB[:d,i,j,k]
rotなんて時間発展の関数の中にいちいち裸で書きたくない。
タグ:
posted at 00:30:42
で、Juliaのメタプロ、次はマクロの展開の順序で悩んでる。expandafterみたいなのJuliaにはないんだろうか。とりあえず展開を抑制したいマクロを含む部分を全部quoteしといて、最後にeval関数に掛けるみたいなことやってみてるが、やや不細工感はある。
タグ:
posted at 00:26:24
Stefan Karpinski @StefanKarpinski
@smartcity_lux @JuliaLanguage @OfficialLoganK @nassarhuda @JeffBezanson Radians are in no way "defunct". I'm curious where you got that idea? Radians are THE objectively mathematically correct angular unit and the only one used by mathematicians. I'm also not aware of any programming language whose primary trig functions aren't in radians.
タグ:
posted at 00:25:54
function leapfrog(par::Param,sys::System)
@ structimport par @ structimport sys begin
x += v dt
v += ω² x dt
end
end
わざわざ sys.x += sys.v * par.dt とか書いてられないのでこれができると嬉しいんだけど、メタプロ理解してないのでちゃんと動くのか怖い。julia難しい。
タグ:
posted at 00:17:42
こういうことがしたかったけど、これで上手く行ってるのだろうか?
macro structimport(obj,expr)
syms = fieldnames(typeof(eval(obj)))
return Macrotools.postwalk(e -> (e in syms ? :($obj.$e) : e), expr)|>esc
end
struct Param
dt
ω²
end
mutable struct System
x
v
end twitter.com/mac_wac/status...
タグ:
posted at 00:17:41