0

私は現在、Fortran で疎行列を構築し、単純な AX=b 線形システムを解くことを含むいくつかのコードを書いています。これを行うために、プロジェクトの監督者の要請により、Pardiso 疎行列ライブラリを使用しています。

コードは 2 つの部分に分かれています。前半は行列と右辺を構築し、後半はそのシステムを解くために Pardiso を呼び出します。Fortran の外部にそのデータをエクスポートし、Python でシステムを解くと、期待どおりの結果が得られたため、前半が機能することはわかっていますしかし、主に Pardiso が表示するエラー メッセージを誤解しているため、Pardiso を正しく動作させることができません。マニュアルはほとんど説明しておらず、インターネット フォーラムには Pardiso 関連の質問がまばらに (しゃれは意図されていません) あります。

私が Pardiso に使用している設定は次のとおりです。

iparm(1)=0
iparm(2)=2
iparm(6)=0
iparm(10)=13
iparm(11)=1
iparm(13)=1
iparm(19)=0
iparm(21)=1
iparm(26)=1
iparm(52)=1
mtype = 11
iparm(3) = 1
solver=0
mtype=11

私が得るエラーは次のとおりです。

error PARDISO (sequence_ido,parameters) error_num= 4 入力チェック:

matrix_number_new 22 ido 32675 は互換性がありません

マニュアルまたはインターネットは、これが何を意味するかについて何も示していません。pardiso_chkmatrixエラーをpardiso_printstats吐き出さないので、何が起こっているのかわかりません。

4

1 に答える 1

0

問題が何であるかを明確に言うのは難しいですが、ここに仮説があります。32675 の値は、2 バイトの変数 (C では "short int" 型の変数) に格納できる最大整数値 (32767 に等しい) に疑わしいほど近い値です。明らかに、Pardiso の一部の内部配列は、整数値を "shortメモリ節約のため、「int」(4 バイト) ではなく「int」(2 バイト)。私が言ったように、それは可能性にすぎません。

于 2016-06-05T12:18:29.773 に答える