Implementation of the SVD Algorithm

Does anyone know a good scalable implementation of SVD in C # for a very large matrix?

+4
source share
2 answers

ILNumerics.net seems to have SVD, by the way.

Feature List:

Framework

.NET 1.1, .NET 2.0, Coming Soon: mono 1.2.3

Languages

all CLIs match: C # (recommended), managed C ++, Visual Basic ...

Array objects

* Full OO class design * Generic typed container classes * single object for arbitrary array dimensions: scalar, vector, matrices, n-dim arrays * full support for flexible array modification: subarray-/ creation, concatenation, dimension removal, serialization * automated reference management: copy memory only if really needed * support for cells and logical arrays 

Numeric

 * Supports all numeric types as array elements: double, float, complex, fcomplex, int16, int32, 

int64, uint16, uint32, uint64, char, bytes, bool * operator overloads (A + B, ...) * static operator functions (for example, Add (a, b)) * support for special numerical states (NaN, +/- Inf)

Optimization for a specific processor

 * BLAS, LAPACK * AMD: ACML, Intel: MKL, general: netlib * Automated detection 

Algebraic Functions

 * abs * acos * add * all * any * asin * (more...) 

Linear algebra

 * matrix multiply, -inverse, -pseudo inverse * linear equation solver * decompositions: LU,QR,SVD,Cholesky * eigenvalues, eigenvectors 

Fourier Transforms

 * 1,2,3...n dimensional * transforms forward & backwards * supported libraries: Intel MKL, AMD ACML, FFTW3 * 100% octave/Matlab/Scilab compatible interface 

Sorting

 * Sorting of strings (lexicographical, bucket sort) * Sorting of numeric data (quick sort) * generic sorting of arbitrary user defined types by definable keymapper (bucket sort) 

Error processing

 * typed exceptions 

The base classes of the algorithm

 * synchronous / asynchronous * easily extendable for user defined derived algorithms * full Windows.Forms.Control compatible multiple thread eventing 

support

Visual

 * Plot panels, derived from Windows.Forms.Control * Plot dialog forms * 1D, 2D, 3D data plots * Based on OpenGL. (DirectX: deprecated) * Highly configurable graphs/figure properties * Automatic user interaction: rotation, zoom, auto axis scaling 

Miscellaneous

 * Visual Studio 2005(R) AddIn: extends watch tool window * import from / export to Matlab(R) *.mat files * syntax vastly compatible to Matlab(R) (function naming, parameter) * determination of extended machine properties, numerical constants * Memory pool: automated recycling of large objects 
+1
source

We used the NAG library quite successfully with large matrices (4000x4000).

This is not managed code, but using P / Invoke we had no problems.

There is a version for 32-bit and 64-bit Windows (also several UNIX variants). And there are special libraries MKL (Intel Math Kernel Library) and AMCL (AMD Math Core Library), which should better use multiple processors in x64 systems.

This is also not free if this is a problem.

0
source

Source: https://habr.com/ru/post/1305658/


All Articles