RokkoDeveloperEigen3 - t-sakashita/rokko GitHub Wiki
Eigen3の備忘録
Storage-orderについて
Storage order(row-major, col-major)について http://eigen.tuxfamily.org/dox/group__TopicStorageOrders.html
leading dimensionの導入の是非
行列次元とleading dimensionが一致しない場合も扱えるようにしたい。
- Mapクラス(C++のポインタに行列型を被せる)では、Strideがそれに当たる。 http://eigen.tuxfamily.org/dox/classEigen_1_1Stride.html
- Matrixクラスでは、strideを指定できない。MaxRows_はまた別物。 http://eigen.tuxfamily.org/dox/classEigen_1_1Matrix.html
localized_matrixクラス
- 今の実装では、Matrixクラスを使っているので、leading dimensionを指定できるようになっていない。
- LAPACKのソルバには、leading dimensionを指定できる。
- Eigen3では、StrideパラメータがあるMapクラスを使う必要あり。
distribured_matrixクラス
- 今の実装はただの配列であって、Eigen3のMatrix型を使っていない。
- Eigen3を使うようにする?
- Eigen3の行列を使えば、各プロセスごとの行列成分の表示にEigen::Matrixのストリームを援用できる。表示フォーマットの整形に便利。
- MapクラスのStrideを使って、EigenExaのように、ldimと異なるldaを実現する?
Ref
- Eigen3のMatrixクラスやVectorから、新たな行列型を作るためのクラス。
- Strideも設定できる。
- http://eigen.tuxfamily.org/dox/classEigen_1_1Ref.html
課題
- MatrixとMapとRefを共通に扱えるようにする。diagonalize関数を引数の型によってオーバーロードするしかない?