2
スパース下三角線形システムの後方解決の最適化
主対角線上にゼロがあるnxn下三角行列Aの圧縮スパース列(csc)表現があり、bを (A + I)' * x = b これは私がこれを計算するために持っているルーチンです: void backsolve(const int*__restrict__ Lp, const int*__restrict__ Li, const double*__restrict__ Lx, const int n, double*__restrict__ x) { for (int i=n-1; i>=0; --i) { for (int j=Lp[i]; j<Lp[i+1]; ++j) { x[i] -= Lx[j] * x[Li[j]]; } } } したがって、bは引数を介して渡さxれ、ソリューションによって上書きされます。Lp、Li、Lxそれぞれスパース行列の標準CSC表現の行、インデックス、及びデータポインタです。この関数はプログラムの一番上のホットスポットで、次の行があります。 x[i] -= Lx[j] * …