Я пытаюсь найти псевдоверсию Мура-Пенроуза не квадратной матрицы в CUDA.Компьютерная обратная матрица неквадратичной матрицы в CUDA
Сегодня я использую следующий код в качестве реализации псевдореверса Мура-Пенроуза.
Проблема заключается в том, что неквадрат размер матрицы Я пытаюсь найти Псевдообращение довольно большой, поэтому я хотел бы решить при помощи CUDA, чтобы использовать мощь GPU.
Я в основном ищет 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, который можно использовать.
Этот код не вычисляет обратную матрицу. Он вычисляет псевдоверсию Мура-Пенроуза. Нет такой вещи, как обратная матрица для неквадратной матрицы. По определению они не существуют. Но, независимо от того, потому что этот вопрос вне темы для [SO], и я проголосовал за его закрытие – talonmies
http://docs.nvidia.com/cuda/cusolver/index.html#cuds-lt-t-gt-gesvd – tera
Этот вопрос вне темы для [SO] и никогда не должен был быть вновь открыт. – talonmies