infoMore than 5 years have passed since last update.
Rustで数値計算してみた話
Last updated at Posted at 2017-03-17
1 / 8
修士・博士課程時代
- 流体の直接数値計算
- C++でシミュレーションを実装
- Pythonで可視化+統計量の解析(on Jupyter)
- データはmsgpackで保存
データ同化の研究を始める
- 既存のコードベースを廃棄
- Pythonで実装を始める
Python遅い(´・ω・`)
- Pythonでは関数の呼び出しがインライン展開できない
- 汎用性高く実装できない
- でも、もうC++は書きたくない
何で書く?
- Haskellで書いてみた
- ものすごく遅いコードが出来上がった(涙)
- 配列を部分的に書き換えていくコードが書きづらい
- コンパイル遅い
- GoかRustか
Rustを覚える
- C++の不満点が解消されている
- ビルドシステム(cargo)
- moveが自然に導入
- template -> traits (concepts)
- iterator周りの機能が豊富
- 所有権はC++より簡単
Rustで実装開始
- 線形代数ライブラリの選択(参考:Linear Algebra in Rust)
- rusty-machine (rulinalg): Machine Learning library for Rust
- ndarray : Arrays inspired by numpy.
- nalgebra : Low dimensional linear algebra.
- servo/euclid : Basic linear algebra used by Servo.
- cgmath : Linear algebra for game development.
- 一番単純そうなndarrayを選択
- 純粋な線形演算ライブラリで、低次元に特化していない
- もともとC++で実装してい自作ライブラリに似てた(Eigenは使っていなかった)
LAPACK相当の機能がndarrayにない
FFTできない
現状の課題
- データの管理
- 現状msgpackに保存しているがMongoDBに保存したい
-
dieselで簡単にSQLサーバーに保存できるかも?
- 並列化・大規模化
- 数値計算はデータ並列なのでRayonが有効
- MPI並列の例がない(?)
- PythonからRustの関数を呼べるようにしたい
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
What you can do with signing up