RokkoInterfaceSparseSolversMatfree - t-sakashita/rokko GitHub Wiki
Matfree
distributed_mfree
からmatrix market形式を生成
デバッグのため、- 任意のプロセス数で比較できる。
- CRSを経由
Fortran binding
行列・ベクトル積を行うルーチン
- ベクトルサイズの渡し方
- multiply関数の引数として渡す
- Fortanでは、moduleの変数を使って、入力配列のサイズを指定することはできないようだ。
subroutine multiply (n, x, y) bind(c)
implicit none
integer(c_int), intent(in), value :: n
double precision, intent(in) :: x(n)
double precision, intent(out) :: y(n)
-
計算に必要な変数
-
moduleのプライベート変数として、定義する。
-
ソルバには、multiply関数そのものを渡す。
-
Fortranには、moduleそのものを受け渡すことはできない。moduleは一つだけで、C++クラスのように、複数のインスタンスは作れない。
-
Fortranには、関数ポインタは存在しない。
-
Rokkoの中で、Fortranのprocedureを関数ポインタに変換している。