CSR形式 — CAE用語解説
CSR形式
先生、CSR形式(Compressed Sparse Row)ってFEMのソルバーで使われると聞いたんですが、何ですか?
FEMの剛性行列のような「大きいけどほとんどがゼロ」という疎行列(Sparse Matrix)を効率的にメモリに格納するデータ構造だ。100万節点のFEMモデルでは剛性行列は1000億要素あるが、実際に非ゼロなのはせいぜい0.001%程度——ほとんどゼロの行列を全部格納するのは無駄だ。CSR形式は非ゼロ要素の値、列番号、行ポインタの3つの配列だけで疎行列を表現する。1000億要素の行列が100万要素×平均20非ゼロ(2000万個)の格納で済む、という効率化だ。
定義
CSR形式って具体的にどんなデータ構造なんですか?
3つの配列で構成される。①values[]:行を上から順に走査したときの非ゼロ値の列。②col_indices[]:各非ゼロ値の列番号。③row_ptr[]:各行がvaluesの何番目から始まるかのポインタ(行数+1のサイズ)。例えば3x3行列で(0,0)=5、(0,2)=3、(1,1)=7、(2,0)=2、(2,2)=9 というとき、values=[5,3,7,2,9]、col_indices=[0,2,1,0,2]、row_ptr=[0,2,3,5]となる。SpMV(疎行列×ベクトル積)という演算がCG法や反復解法の内積で頻発するが、CSRならキャッシュ効率よく計算できる。
関連用語
疎行列の格納効率化がFEM大規模計算の基盤なんですね。GPU向けの変形まであるとは知りませんでした!
CAE用語の正確な理解は、チーム内のコミュニケーションの基盤です。 — Project NovaSolverは実務者の学習支援も視野に入れています。
Project NovaSolver — CAE実務の課題に向き合う研究開発
「CSR形式をもっと効率的に解析できないか?」——私たちは実務者の声に耳を傾け、既存ワークフローの改善を目指す次世代CAEプロジェクトに取り組んでいます。具体的な機能はまだ公開前ですが、開発の進捗をお届けします。
進捗通知を受け取る →関連トピック
なった
詳しく
報告