小さな(通常は60x60よりも小さい)非対称行列のすべての正(固有値は正)の固有ペアを見つける必要があるという問題があります。固有値が特定のしきい値より小さい場合、計算を停止できます。私は固有値が実在することを知っています。最高のパフォーマンスを絞り出すために使用できるアルゴリズムに関する提案はありますか?私はこれらの分解を数千回行わなければならないので、速度が重要です。
前もって感謝します。
編集:これをGPUの共有メモリで行う必要があります。行列も必ずしも同じサイズではありません。現在、これを行うライブラリーについては知りません。問題に適しているアルゴリズムの提案をいただければ幸いです。
1
私が正しく理解していれば、共有メモリ内の数千の小さな行列を計算するCUDAカーネルがあり、それらをグローバルメモリにコピーするつもりはありません。答えを出す前に、明確にすべきいくつかのポイントがあります。CUDAでは、共有メモリの存続期間はブロックの存続期間にバインドされています。分解する各マトリックスにスレッドがいくつありますか?極端なパフォーマンスは本当に重要ですか?(予測される固有値抽出時間は行列生成時間とどのように比較されますか?)どの固有引数に基づいて、固有システムが実数であると知っていますか?固有システムに欠陥がありますか?
—
ステファノM
こんにちはステファノ、コメントありがとうございます。とりあえず、分解したい行列の次元に最も近いワープサイズの倍数を取得します。行列の生成時間は大きく異なり、行列の生成時間はより高価になる場合がありますが、行列の生成時間が分解よりも短い状況が多くあります。行列の生成方法が原因で、固有値が実数であることを知っています。元の質問を損なうので、ここでは詳しく説明しません。最後に、はい、システムに欠陥がある可能性があります。
—
カントク2012