2022年2月18日金曜日

Julia のベクトル計算高速化

 Julia についての本ということで「1から始める Julia プログラミング」を読んでみた。タイトルから見ると初心者向けのようにも見えるけど、Julia で基本的なプログラミングができる段階から読んでみると多くの勉強になるかと思う。

 例えば、ベクトル x = [5; 3] に対して, a = 7, b = 4 のスカラーのときに
a*x .+ b
とすれば、数式で言うa*x+b*[1; 1] が計算できるわけだけど、これは
a.*x .+b あるいは @.(a*x+b)
の方が良い。

これがなぜ良いのか、という理由が分かりやすく書いてある。上の例だと小規模なのであまり影響が出ないが、最急降下法などで反復回数が増えるとパフォーマンスに違いが出そうにも思う。(この違いをコンパイラが最適化で吸収すると、パフォーマンスの違いはなくなるかもしれないけど。)

他にも、コードを関数の中に入れるだけで Julia は高速化されやすくなるのか、など、高速化の理由が書いてあり勉強になる。

あと、パッケージ管理や仮想環境などについても触れていたりなどなど、勉強になる点が多い。