体力,気力,ときどき知力

情報系大学院生 兼 HPC系ソフトウェアエンジニアのメモ書き.やったことを貼って後日にコピペ再現するために書いているので新規性・汎用性・芸術性は考えてません.数値計算,高精度演算,SIMD, vim, Linuxなど.

高精度演算(多倍長)をやりたいのでJuliaをはじめてみる,動機・導入・実行まで (on Fedora 29)

Motivation

いつもと全然違う,とある事の勉強をしようと思ったけど,C++で書くのやる気しないなーと思って,

ずっとやろうと思っていたScilabOctaveでやろうかと思って調べたら,Juliaが予想以上に私のやりたいことをやれそうだった.

Juliaって?

パッと調べて,記憶に残ってるのは,

  • JuliaはMITとかの人が作って,速くて書きやすいのが売りらしい.
  • JITなので初回実行時にコンパイルが走るらしい.
  • BLASLAPACKがバックエンドに使われてて数値計算やりやすいらしい
  • プログラムが書きやすい(構文が賢い)ようだ
  • マルチスレッドは簡単にかけそうだ.マルチプロセスは調べてない

で,私はどこに惹かれたか

別に多くの場合においてC++で困らないし,Pythonとか書いててもBLASとかLAPACK使うから結局Cのライブラリを呼ぶハメになるので, BLASが言語仕様に入ってても,別にBLASの関数とか大体使うのは覚えてるからいらねーや.と思っていたら,予想以上に欲しいものが言語的に採用されていた.

と,いうことで,高精度演算をやったときに,他の精度との精度比較するのに使いやすかったりしないかな?と思ってはじめることする.

気になっていること (別に調べて情報があるか/ないかをキチンと確認してない疑問)

初志を忘れてはいけないので,なぜ始めたのを記録しておく.

  • 動的型付けのように読める (ただし型を明示的に指定もできる)が,BigFloat型にバックエンドのBLAS / LAPACKは対応しているのか? ** BLAS / LAPACKは無理でも,特に型指定のないライブラリなら多倍長で実行してくれちゃったりするのか?(しかも速く!?)

  • マルチスレッドはどこまで便利か?速いか

  • プロファイラ周り.時間計測とかベンチマークの楽さ

  • Sparseの扱い(SparseをLAPACKに突っ込むと?とか)と,Sparse matrix formatの種類,スピード.

Install

Juliaの環境を構築するのは簡単. 環境はConohaのVPS上のFedora29

  • 落としてくる (現在のStableはjulia-1.1.0の模様)

Generic Linux Binaries for x86というのを落とせばいい Julia Downloads

  • tar xzvf ....で解答する

  • julia-1.1.0/binにPATHを通す

おわり.簡単だった.

なんか動かす

正しくPATHが遠てればjuliaコマンドを打つと対話画面が出てくるので

println("ごまちゃんかわいい")

とかやると,ゴマちゃんが可愛いことをJuliaが教えてくれる

今日はここまで