世界が幸せで在ります様に

ITエンジニアになりたい人・エンジニアの人にとって役立ちそうな商品を紹介するブログ

新しいプログラミング言語【Futhark】とは?

Futharkとは?

Haskellで書かれており、純粋な並列コードにコンパイルできる関数型プログラミング言語。 GPUの計算能力を活かして、データ並列配列の計算を高速化する作りになっており、今後が気になっている言語の一つ。 まだ、マイナーバージョンしかリリースされてないが、誕生は2017年11月なので、あと2ヶ月で2年が経ちそうといったところ。

 

拡張子は、「fut」。

使われる場所は、既存のアプリケーションを刷新してしまう、というものではなく、計算処理を高速化させたいといった小さな部分で活躍するようなイメージ。 例えば、僕の経験上、とある金融系会社で、基本はJavaで作られたソフトウェアのプロジェクトにいたが、計算処理で最も時間を求められてくる箇所はすべてC++で書いていた。そのため、JavaプログラマたちはJNIやJNAを利用してC++のプログラムを呼んでいた。もちろん、JavaプログラマがC++もメンテする必要がある。 このように、特定の処理をより高速に変えたい時は、適材適所の技術を用いると思う。

Pythonから呼ぶ

Pythonはパフォーマンスが良いとは胸を張って言えない言語。 ただし、計算処理のライブラリが豊富で僕もかなり利用してる。 では、Cでリライトすれば、高速化が狙えるのではないか?という話も聞く。

Cコードにコンパイルすることが可能だし、PyOpenCLを利用すればGPU上で実行するPythonモジュールにコンパイルすることもできる。なお、一般的なPythonモジュールと同様に扱えるというところがポイントである。

 

ベンチマークに関しては、以下のコードが役に立つ。 

https://github.com/diku-dk/futhark-benchmarks/blob/master/accelerate/mandelbrot/mandelbrot.fut#L11

https://github.com/diku-dk/futhark-benchmarks/blob/master/accelerate/mandelbrot/generic_mandelbrot.fut#L9

pythonからは、以下のように一般的なライブラリと同様に呼び出し可能。

import mandelbrot
m = mandelbrot.mandelbrot()

 

 

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 

 

開発元

HIPERFITセンターの一員として、コペンハーゲン大学のDIKUで開発されている

プロフィールと免責事項