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