Gauche:行列演算モジュール
行列演算モジュール
- Gauche で、行列 (2次元の f64array) を扱うためのモジュールを作成してみました。
- f2arrmat が上位 の I/F で、eigenmat と blasmat が下位のライブラリという位置付けです。
f2arrmat
https://github.com/Hamayama/f2arrmat
- Gauche で、行列 (2次元の f64array) を扱うためのモジュールです。
2次元に特化することで、効率化を目指しました。
- eigenmat モジュール、および、blasmat モジュール が存在すれば、
内部で使用します (一部の演算が高速化されます)。
eigenmat
https://github.com/Hamayama/eigenmat
- Gauche で、Eigen ライブラリ を使って行列の高速演算を行うためのモジュールです。
Eigen は、C++ で書かれた線形代数用のライブラリです ( http://eigen.tuxfamily.org )。
このライブラリは、必要なものがそろっていて使いやすい印象です。
blasmat
https://github.com/Hamayama/blasmat
- Gauche で、OpenBLAS ライブラリ を使って行列の高速演算を行うためのモジュールです。
OpenBLAS は、C/Fortran で書かれた線形代数用のライブラリです ( https://www.openblas.net )。
- このライブラリは、C = alpha A B + beta C のような複合演算の I/F になっています。
(f2arrmat では、f2-array-ra+b!, f2-array-ab+c! が対応します)
数式がうまくはまれば、効果がありそうです。
また、ある程度大きなサイズの行列は、マルチスレッドで計算されるようです。
hamayama(2019/03/22 20:08:54 UTC)