問題タブ [umfpack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scipy - scipyのスパース正定線形システムに推奨される直接ソルバー?
これが scipy.sparse ドキュメントで明確に説明されている場合は申し訳ありません。
scipy を使用する場合、まばらな正定線形連立方程式を解くためにどの関数を使用することをお勧めしますか? 直接法を使用したいのですが、係数行列のコレスキー分解で可能な限りスパース性を維持するために、列を並べ替えたいと考えています。並べ替えのさまざまなオプションを試すことができれば理想的です。
scipy.sparse にスパース正定値システムの直接ソルバーはありますか? scikit.sparse は進むべき道ですか?
c++ - スパース線形システムのソリューションの改善
次の 2 つのアプローチを使用して、線形システム を解く Linux システム上の C++ でコードを作成しましたA x = b
。ここA
で、 は疎対称行列です。
UMFPACK
順次因数分解して後方前方置換を行うために使用します。- を使用して順次因数分解し、ライブラリ
UMFPACK
を使用して後方前方置換を行います。cuSPARSE
私が持っているシステム構成は次のとおりです: CUDA バージョン 5.0、UMFPACK
バージョン 5.6.2、Linux カーネル バージョン Debian 3.2.46-1、使用グラフィックス カード: GeForce GTX Titan。
理論的には、2 番目のアプローチは最初のアプローチよりも優れたパフォーマンスを発揮し、エラーは最小限またはゼロになります。ただし、次の問題を観察しています。
UMFPACK
関数umfpack_di_solveを使用した後方/前方置換2x
は、CUDA バリアントよりもほぼ高速です。- 行列によっては、CUDA と CUDA を使用して得られた結果の間の誤差
UMFPACK
が非常に大きく、最大誤差が3.2537
であるのに対し、他の行列では のオーダーです1e-16
。
添付されているのは、次のコンポーネントを含む私の tar ファイルです。
- 線形システムを解くために使用しているメイン ファイルfc.cuを含むフォルダー factorize_copy。同じディレクトリにあるgrid_*_CSC.mファイルから疎行列を読み取ります。便宜上、提供された 3 つの疎行列の結果もテキスト ファイルで提供されます。
- コンパイルと実行のためのすべての依存関係を含むフォルダー
UMFPACK
(計算にも使用しています)。
tar ファイルへのリンクは https://www.dropbox.com/s/9qfs5awclshyk3b/code.tar.gzです。
コードを実行したい場合は、私のシステムで使用しているMAKEFILEを factorize_copy ディレクトリに用意しました。UMFPACK
ライブラリを再コンパイルする必要がある場合があります。
疎行列のプログラムからのサンプル出力586 x 586
も以下に示します (この場合のエラーは、チェックした他の疎行列と比較して非常に高いことに注意してください)。
この場合、考えられるエラーを誰かが指摘していただければ幸いです。私が見逃している CUDA を使用してスパース線形システムを解くためのより良い方法がある場合は、お知らせください。
編集:エラーが発生する場合とそうでない場合がある理由がわかりました。コードでカーネル関数を呼び出すときに、ブロックあたりのスレッド数に誤りがありました。ただし、スピードアップの問題はまだあります。
macos - 「umfpack.h」が見つかりませんが、/opt/local/include/ にあります
OSX 10.8でhiQlabというプログラムをコンパイルしようとしています
しかし、umfpackを含むmacportsを介してSuiteSparseをインストールしたところumfpack.h
、実際にはデフォルトディレクトリに存在します/opt/local/include/
パスなどを追加する必要がありますか?
さらに検索した後、答えが見つかりました-検索パスにmacportsパスを追加しませんでした
どのように愚かな = p と私は自分の質問に 8 時間答えることができないので、ここで編集します
matlab - Dynare インストールの問題: umfpack
matlab R2013a の rosa linux r3 (64 ビット) で dynare 4.4.2 をコンパイルしようとしています。設定手順は
しかし、私はエラーが発生しています
私はそれを試してきました
、しかし、エラーはまだ残っています。Umfpack がインストールされているため (lib64umfpack-devel、lib64umfpack5.6.1 パッケージ)、どうすればよいかわかりません。何か案は?前もって感謝します!
python-2.7 - scipy.linalg.dsolve.umfpack という名前のモジュールはありません
を使用して Dioptas をインストールしようとしていましpython setup_win_32.py install
た。
インストール中に、次のエラーが発生しました。
scipy.linalg.dsolve.umfpack という名前のモジュールはありません
この問題を解決する方法を知っている人はいますか?
Windows 7 (32 ビット) を実行しており、次の必要なライブラリをすべてインストールしています。
- パイソン2.7
- PyQt4
- でこぼこ
- スパイ
- pyFAI
- ファビオ
- pyqtgraph
- scikit-イメージ
- pyopencl
- ftw3
c++ - LinuxでOpenblasを使用してSuitesparse 4.4.4をコンパイルする
Openblas をダウンロードしてコンパイルしました。今、openblas をコンパイルして Suitesparse 4.4.4 にリンクしようとしています。すべての lib ファイルをコンパイルした後、コンパイラがumfpack_di_demo.cをコンパイルしようとすると、次のエラーが発生します。
これは、リンクが適切ではないことを意味します。しかし、SuiteSparse_config.mk で指示されているように、システム上の libopenblas.a の絶対位置を指定しました。また、シンボル dtrsv_ が libopenblas.a で定義されているかどうかを確認するために gcc-nm も実行し、シンボルがライブラリで定義されていることを示す次の出力を得ました。
ここで何がうまくいかないのかわかりません。suitesparse_config.mk ファイルに openblas を含む lapack を含める必要がありますか? どんな助けでも大歓迎です。ありがとう。
注:それが役立つ場合、すべてのコンパイルにgcc 4.4.7を使用しました。システムの詳細は次のとおりです。
==編集1:私が従った手順==
Openblas の場合:
- http://github.com/xianyi/OpenBLAS/zipball/v0.2.14 から openblas をダウンロードしました。
- gcc-4.4.7 と次のコマンド make FC=/usr/bin/lgfortran-4.4 を使用して自分のシステムで解凍してコンパイルしました/。
- コンパイルが完了したら、make install と入力して、ホーム フォルダーのカスタム ディレクトリにインストールします。
スイートパースの場合:
- http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.4.4.tar.gz から suitesparse をダウンロード
- それを解凍し、suitparse_config.mk ファイルを編集して次の変更を行いました: A) CHOLMOD と SPQR の GPU 構成を有効にしました。B) metis を使用していないため、"METIS_PATH = ../../metis-4.0" と "METIS = ../../metis-4.0/libmetis.a". また、コミットされていない「CHOLMOD_CONFIG = -DNPARTITION」。C) openblas のカスタム インストールへのパスを指定: BLAS = -L//OpenBLAS/local/lib/libopenblas.a -lpthread -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/libgfortran.so
- srcdir に make と入力します。