0
我正在嘗試在CUDA中找到Moore-Penrose矩陣中的非矩形矩陣。CUDA中非矩形矩陣的計算機逆矩陣
今天,我使用下面的代碼作爲Moore-Penrose僞逆的實現。
的問題是,我想找到僞逆非方陣的大小是相當大的,所以我想解決它使用CUDA來利用GPU的強大功能。
我基本上找這個代碼
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穆爾 - 彭羅斯僞逆執行任何指針的CUDA版本。
任何幫助將不勝感激。
P.S.我想知道使用可部署的GPU來解決Moore-Penrose僞非矩陣矩陣的其他方法。
該代碼不計算矩陣逆。它計算一個Moore-Penrose僞逆。沒有這樣的東西作爲非矩陣的逆矩陣。根據定義,它們不存在。但是,無論因爲這個問題是否是[SO]的話題,我已經投票決定關閉它 – talonmies
http://docs.nvidia.com/cuda/cusolver/index.html#cuds-lt-t-gt-gesvd – tera
這個問題是[SO]的話題,不應該重新開放。 – talonmies