問題タブ [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.
c++ - Ax=b 線形代数システムの C++ メモリ効率の高いソリューション
Boost UBlas の Numeric Library Bindings を使用して、単純な線形システムを解決しています。以下は、比較的小さい 'm' の行列 A(mxm) の処理に限定されていることを除いて、正常に機能します。
実際には、次元 m= 10^6 (最大 10^7) のはるかに大きな行列があります。
メモリを効率的に使用する Ax=b を解決するための既存の C++ アプローチはありますか。
c++ - スパース ユニタリ行列に最適な C++ 行列ライブラリ
優れた (最善の場合、積極的に維持されている) C++ マトリックス ライブラリを探しています。有理数の複合体を数値型として使用したいので、テンプレート化する必要があります。私が扱っている行列は、主にまばらでユニタリです。
ライブラリを提案し、それらを使用する理由を簡単に説明してください.
編集:
私が扱っている主な操作は、行列の乗算、ベクトルとクロネッカー積によるスカラー乗算です。行列のサイズは指数関数的であり、少なくとも 1024x1024 エントリまでの行列を処理できるようにしたいと考えています。
c++ - UMFPACKおよびBOOSTのuBLASスパース行列
私は数値コードでBoostのuBLASを使用しており、「重い」ソルバーを配置しています。
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?LU_Matrix_Inversion
コードはうまく機能しますが、非常に遅いです。いくつかの調査の結果、スパース行列ソルバーであるUMFPACKを見つけました(とりわけ)。私のコードは、非常に頻繁に反転する必要がある大きなスパース行列を生成します(より正確には、逆行列の値は関係ありません)。したがって、UMFPACkとBOOSTのSparse_Matrixクラスは幸せな組み合わせのようです。
UMFPACKは、エントリ数、行インデックス、およびエントリの3つのベクトルで指定されたスパース行列を要求します。(例を参照してください)。
私の質問は要約すると、BOOSTのスパース行列クラスからこれらの3つのベクトルを効率的に取得できますか?
c++ - ブーストでcompress_matrixを動的に変更する効率的な方法はありますか?
私は ublas::Compressed Matrix を使用して、スパース線形ソルバーである UMFPACK を操作しています。私はシミュレーションを行っているため、係数行列の拡大/縮小といくつかの疎行列の乗算が含まれる可能性がある線形システムがわずかに異なる方法で構築されるたびに。線形システムの規模は約 25k です。
Boost が UMFPACK で動作するためのバインディング パッチがあっても、マトリックスを時々変更する必要があります。行列を初期化するときのゼロ以外の値)。また、ublas::range を使用して列/行を動的に追加します。
私の質問は次のとおりです。これを行う効率的な方法はありますか? 今のところ、私には遅すぎます。15k のような次元の行列を転置すると、ほぼ 6 秒かかり、約 12k 行を追加するのは高速ですが (これは行優先の行列だと思います)、行列に同じ数の列を追加すると、最大 20 秒かかります (同じだと思います)。そのため、列優先の行列を使用しても、必要な合計時間は同じになります)。
ここでちょっと必死になっています。どんな提案でも大歓迎です。
乾杯。
c++ - UMFPACKの許容値を設定する方法
スパース行列を解くためにC++でumfpackを使用しています。[UMFPACK PIVOT TOLERANCE]
パラメータが設定されている場所を見つけるのに問題があります。この制御パラメータを設定する方法を知っている人はいますか?
私の現在のコードは
c++ - UMFPACK では、どのくらいの頻度で記号と数値の因数分解を行う必要がありますか?
私はシステム Ax = b を持っています。ここで、B は定数ですが、A は反復ごとに少しずつ変化し続けます。私は UMFPACK 5 を使用して、この線形システムを A が変化するたびに解いています。上記は次の 2 つの方法で実行できます。
- 最初に行列 Aのみのシンボリックおよび数値因数分解を計算し、各反復で Ax = b を解くためにこの数値オブジェクトを使用します (もちろん、スパース行列表現では、A が変化すると Ax も変化します。Ap と Ai は同じままです)。
- 行列 A IN EACHの反復 (つまり、A が変化するときの新しい数値オブジェクト)のシンボリックおよび数値因数分解を計算し、この新しい数値オブジェクトを使用して Ax = b を解きます。
上記の方法のうち、正しいものはどれですか?上記の2つの手順について、(予想どおり)まったく異なる回答が得られます。ヘルプやコメントをいただければ幸いです。ありがとう。
umfpack - x = (AtA)^-1 b である UMFPACK を使用してシステムを解く
疎行列 A があり、システム (AtA)X = B を解く必要があります。現在、At に A を掛けて、AtA を使用してシステムを解いています。より高速な代替手段はありますか (A を UMFPACK に渡して因数分解をより迅速に検出させるなど)?
ちなみにAは長方形です。
gcc - UMFPACKを使用してサンプルファイルをコンパイルする際のエラー
UMFPACKのデモから非常にumfpack_simple.cをコンパイルしたいのですが、次のエラーが発生します。
ご覧のとおり、ceilとsqrtを定義するライブラリがありません。GotoBLAS2をUMFPACKと一緒に使用しています。問題がどこにあるか教えてください。ありがとう
c++ - 拡張子のない c++ ファイル
コンパイル エラーをスローするプロジェクトがあります。「UmfPackSupport」という名前のファイルがあり、「PoissonBlender.hpp」という名前の別のファイルに次の行が含まれています。
次に、次の行にエラーがあります。
それは言う
拡張子のないそのファイルは何ですか??
linux - Linux でインテル® MKL を使用して SuiteSparse (UMFPACK) をコンパイルする
Intel MKL の BLAS および LAPACK を使用してSuiteSparseをコンパイルしようとしています。ただし、make はこれらのライブラリを見つけることができないようです。makefile で使用される BLAS と LAPACK を考慮した SuiteSparse_config.mk ファイルの部分は次のようになります。
Intelのlibmkl_blas_95ilp64.aとlibmkl_blas95_lp64.aをスパーススイートフォルダと設定にコピーしてみた
しかし、そのようなファイルが見つからないと表示されます。また、これらのライブラリへのパス全体を指定しようとしましたが、未解決のエラーがあるデモ以外はすべてコンパイルされます。これらのライブラリを設定して SuiteSparse を機能させるにはどうすればよいですか?