適用於高效能科學計算新語言—Julia

前言

Julia 是一個很新的高階、適合高效能計算的動態語言,她的語法很接近常用的科學計算語言,像是 Python, R 等。但 Julia 的設計是想讓高效能科學計算(像是平行運算、數值計算等)更容易上手。加上科學計算需要用到大量的數學函數,所以她的 library 中也支援線性代數、隨機函數產生、訊號處理等。此外,Julia 效能非常好,號稱可以接近 C 的速度;她也能夠直接支援呼叫 C 的函數,透過 PyCall 去使用 python 函數等。除了高效能和強大數學運算外,她最重要的一點是支援物件導向語言中的多分派(Multiple dispatch),並且也能透過強大的 ipython 介面更有效的開發並進行資料探索(包括統計繪圖、互動式開發及教學等)。

簡單的說,開發 julia 語言的野心是希望能有像 C 一樣的快速、像 Python 般通用於科學計算、像 R 一樣處理統計的強大,matlab 處理線性代數與矩陣的威猛,又能夠有分散式平行運算的能力。雖然文件還沒開始讀,但看到 Julia 的「遠大」夢想,就讓我想要一窺其面貌。

安裝與設定

以 homebrew 為例(on MacOS X Mavericks)

安裝 julia 及其相依套件(denpendencies)

因為 julia 需要有 gcc, llvm 3.3, openblas 等相依套件才能編譯,安裝程序如下:

# 先更新 homebrew repository
$ brew update
# 安裝 gcc
$ brew install gcc
# julia 沒有在 homebrew 內,所以要先 tap staticfloat-julia
$ brew tap staticfloat/julia
# 因為 julia 編譯需要用到 LLVM 3.3,所以需要  tap homebrew/versions
$ brew tap homebrew/versions
# 安裝 julia,希望有 64bit 支援,所以下 --64bit 參數
$ brew install --64bit julia

安裝 julia 的相關開發套件

和 Python, R 等語言相同,julia 也有延伸套件(package/library)支援,你可以用 Pkg.add() 來安裝。我希望用 iJulia 介面來開發,所以就先從 shell 進入 julia ,然後再用 Pkg.add("IJUlia"),系統就會自動安裝相依的套件,並產生一個 ipython profile 叫做 julia

mutolisp@Brachypodium ~ (master*) $ julia
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "help()" to list help topics
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.2.1 (2014-02-11 06:30 UTC)
 _/ |\__'_|_|_|\__'_|  |  
|__/                   |  x86_64-apple-darwin13.2.0

   
julia> Pkg.add("iJulia")
...

接下來使用 ipython 介面來開發

ipython notebook --profile julia

快速自學 julia 可參考 http://learnxinyminutes.com/docs/julia/

參考資料

[0] The Julia Language
[1] Homebrew julia
[2] Documentation of julia
[3] iJulia
[4] Julia 語言,讓高性能科學計算人人可用
[5] Parallel Julia

Comments

comments powered by Disqus