私はCUDAで非正方行列のMoore-Penrose擬似逆行列を見つけようとしています。CUDAの非正方行列のコンピュータ逆行列
今日、私はMoore-Penrose pseudoinverseの実装として次のコードを使用しています。
問題は、私は擬似を見つけようとしています非正方行列のサイズはので、私はGPUのパワーを活用するためにCUDAを使用して、それを解決したいのではなく大きさであることです。私は基本的にこのコードのCUDAバージョン
public static Matrix PseudoInverse(this Matrix M)
{
Svd<double> D = M.Svd(true);
Matrix W = (Matrix)D.W;
Vector s = (Vector)D.S;
// The first element of W has the maximum value.
double tolerance = Precision.EpsilonOf(2) * Math.Max(M.RowCount, M.ColumnCount) * W[0, 0];
for (int i = 0; i < s.Count; i++)
{
if (s[i] < tolerance)
s[i] = 0;
else
s[i] = 1/s[i];
}
W.SetDiagonal(s);
// (U * W * VT)T is equivalent with V * WT * UT
return (Matrix)(D.U * W * D.VT).Transpose();
}
- を探しています
は、誰もがCUDAでのムーア・ペンローズの擬似実装上の任意のポインタを持ってい。
ご協力いただきますようお願い申し上げます。
P.S.私は展開可能なGPUを使って非正方行列のMoore-Penrose擬似逆行列を解くために他にどのような方法があるのかを知りたい。私はCUDA
http://docs.nvidia.com/cuda/cusolver/#svd-example1
のSVD機能を使って、ムーア・ペンローズpseudoinveseを実施しなかった
そのコードは逆行列を計算しません。ムーア・ペンローズの擬似逆行列を計算します。非正方行列の逆行列などはありません。定義上、それらは存在しません。しかし、この質問は[SO]のトピック外であり、私はそれを閉じようと投票したので何と言っても – talonmies
http://docs.nvidia.com/cuda/cusolver/index.html#cuds-lt-t-gt-gesvd – tera
この質問は[SO]の話題ではないので、決して再開してはいけません。 – talonmies