Squashed commit of the following:
commit 03291ba72c61e66e02c7a315e401210f96f9f20c
Author: Marcus Cuda <marcus@cuda.org>
Date: Thu Apr 18 11:18:03 2013 +0300
Tweaked managed EVD to be native compatible (use 1D arrays) and added naive EvD
commit d7bd0e7c93ba0284a7e8bee22f7d0c56f451febc
Author: Marcus Cuda <marcus@cuda.org>
Date: Wed Feb 6 12:46:53 2013 +0200
beginnings go an ATLAS provider
commit c4470fb99d5217a75526fc99e12c9119c12c3ec7
Author: Marcus Cuda <marcus@cuda.org>
Date: Tue Feb 5 08:13:25 2013 -0800
tested 32bit version
commit ea58e3bd936a6886130954e7ade63f066d6197cb
Author: Marcus Cuda <marcus@cuda.org>
Date: Tue Feb 5 05:26:20 2013 -0800
tweaked code and file name to compile with GCC and to run with mono on linux
I empirically noticed that matrix multiplication was extremely slow for
the matrices I was using i.e. multiplications were taking minutes rather
than seconds. After tracking down the root of the problem, I found it
was in the CacheObliviousMatrixMultiply() implementation, specifically,
where the sum of the column/row dimensions were compared with the
Control.ParallelizeOrder variable.
For significantly skewed matrix multiplication (wide * tall), the
parallelised redistribution greatly reduces performance. By removing the
'k' parameter from the comparison (where k is the number of columns in
the left matrix and the number of rows in the right) the performance is
improved drastically.
For perfectly square matrices, this change reduces performance slightly.
mathnet-numerics-native a6e5c948049bda46cb3b5625fa41accebaa4bdb3:
1. Updated the native provider to MKL V11 update 2, which fixes the lange bug.
2. Re-enabled native matrix norms.
3. Fixed complex Frobenius norm bug in managed code (we weren't taking the conjugative transpose).
4. Fixed the return type on the double matix norm in the managed side of the native provider.
api: removed the LU solve methods with the transpose option from LA provider interface for consistency with other solvers
added SecuritySafeCritical and SecurityCritical attributes native provider and p/invoke methods