MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

Python/C++/MATLABユーザのための高速科学計算言語Julia入門

Julia: High Performance Programming

Julia: High Performance Programming

目次

はじめに

最近、

数値計算や最適化の技術を調べていると、

Pythonではなく、

Juliaという新しいプログラミング言語を

使っているのをよく見るようになりました。

The Julia Language

 

そこで自分のような

Python/C++/MATLABユーザの視点から見た、

Juliaの基本的な使い方をまとめてみたので、

紹介したいと思います。

 

Juliaとは?

Juliaとは、

2009年からMITの研究者を中心に開発が始まった

スクリプト言語です。

 

MATLABやPythonなどが得意な

科学技術計算を得意とする言語で、

様々な科学技術計算用のライブラリがデフォルトで内包されています。

 

それ以外にも、下記のような特徵があります。

 

特徴1: 計算が高速

Juliaの大きな特徵として、LLVMのフレームを使った

Just in Time(JIT) コンパイラの技術を使うことで、

非常に高速に計算を実施することができます。

 

下記はjuliaのホームページに掲載されている、

各言語におけるい計算速度のベンチマークです。

C言語の処理を1とし、各言語の比率を計算しています。

下記の結果を見ると分かる通り、

Pythonと比べて、約10倍弱早く、

C言語と比べても2倍ほどしか遅くなっていないことがわかります。

f:id:meison_amsl:20170521064426p:plain

 

特徴2: 動的型付けのスクリプト言語

言語の特徵としては、

前述のように高速でありながら、

Pythonと同じ動的型付け言語です。

ですのでプロトタイプを作るのも簡単です。

 

特徵3: 型を指定することもできる

しかし、複雑なシステムを作る時は、

どうしても型が欲しくなります。

最近PythonでもType Hintが追加されました。

qiita.com

 

Juliaでは、関数の引数における型チェックが、

デフォルト機能として追加されています。

また、型を使ったC++で言う所の関数のオーバロードもサポートしています。

 

特徵4: 数式に近い表現でソースコードが書ける

Juliaは科学技術計算に強いため、

実際の数式に近い表現でソースコードを書くことができます。

例えばほとんどの言語は掛け算の*を省略できませんが、

Juliaの場合は下記のように書くことができます。

Julia> x2 + 2x - 1

 

特徵5: C, C++, Fortran との親和性の高さ

Juliaは十分計算速度が早いのですが、

既存のCやC++,Fortranのコードを使いたい時があります。

 

Juliaは言語の機能として、

CやC++, Fortranのコードの呼び出しをサポートしています。

これはJuliaがLLVMを利用しているため、

CやC++, Fortranのバイトコードと共通性があるためのようです。

 

特徵6: Pythonとも親和性がある

こちらは言語の機能ではないですが、

JuliaからPythonのコードを呼ぶパッケージも公開されています。

github.com

 

個人的にはPythonからJuliaコードを呼ぶライブラリが欲しいですが。。。

 

特徵7: 並行・並列処理に強い

最近の言語であるgoなどは、

マルチコア時代に対応するためか、

並列、並行処理に特化した機能を言語そのものが有していますが、

Juliaも言語のデフォルト機能として、

並行・並列処理のAPIを有しています。

 

Pythonでも並行処理は可能ですが、

GIPがあるためかなり無理が多いです。。

myenigma.hatenablog.com

 

インストール

各プラットフォームでのJuliaのインストール方法です。

Mac

Homebrewでインストールできます

$ brew update

$ brew tap staticfloat/

$ brew install julia

bicycle1885.hatenablog.com

 

JupyterでJuliaを使えるようにする

続いて、Pythonで便利すぎるJupyterが、

Juliaでも対応しているため、

Jupyter用のカーネルをインストールします。

 

juliaのコマンドラインから、

Pkg.add(“IJulia”)

とするだけでインストールされるはずです。

 

自分の環境では、julia0.5.0を使っていたのですが、

上記のコマンドでインストールしようとした所、

gitのエラーがでました。

そこで、

>$ brew update julia

として0.5.1にアップデートした所、

エラーが消えて、無事インストールできました。

 

あとは、普通にjupyterを立ち上げると、

選べるカーネルとしてJuliaが追加されているはずです。

f:id:meison_amsl:20170517081248p:plain

 

これでPythonと同じ感じでJuliaを使えますね。

qiita.com

 

Juliaの外部パッケージの管理

Pythonのpipやcondaのように、

外部パッケージをインストールしたり、

管理したりする時は、

デフォルトのPkgというパッケージを使います。

外部パッケージのインストール

hogeというパッケージをインストールする場合は、

下記の通りです。

julia> Pkg.add(“hoge”)

 

インストールパッケージの確認

Pkg.installed()

 

Juliaを学ぶための資料

下記の資料が分かりやすかったです。

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

Julia: High Performance Programming

Julia: High Performance Programming