@simonbyrne I had a chance to try it, and the results are not good:
julia> @btime svdvals($B);
1.371 ms (11 allocations: 138.20 KiB)
julia> versioninfo()
Julia Version 0.6.2
Commit d386e40c17* (2017-12-13 18:08 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Prescott)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM-3.9.1 (ORCJIT, broadwell)
This is the same machine where Julia on a Linux VirtualBox takes 673us.
One more thing, on Linux I build Julia from source, while on Windows I’m using the precompiled binary. I don’t expect this to cause much difference (but you never know).
Some people buy Intel to take advantage of their software.
So the downside is that if MKL becomes open source, nothing would stop it from having incredible performance on AMD hardware – just like it does on Intel.
Well, I believe that Intel CPU’s are faster than AMD CPU’s not only because of the CPU’s but because of the Software Eco System.
Year of discriminating optimizations (Well, at some point AMD wasn’t in the game so it is logical).
Intel MKL, Intl IPP Intel SVML and Intel Compiler have a lot to do with it.
You can see above, I think that for SVD there is no reason for Ryzen, CPU Wise, not to be faster than Intel’s price comparable CPU.
Yet It is (Far?) behind, just because of MKL not optimized (When I say not optimized it means it will chose SSE2 Code path instead of AVX 2) for Ryzen.
Having libraries as fast as those of Intel yet without a CPU discrimination will be a revolution.
Quite possibly. Actually I would have thought that branching BLAS would be a more generally useful thing to do than branching libm, not that I know what I’m talking about. I’m surprised that the GNU version of libm is not sufficient. Does Julia compile with OpenLibm by default?