MKL? I don't think so, it takes the worst codepath if the chip isn't GenuineIntel.
OpenBLAS? Doesn't have Ryzen support. Doesn't even recognize some AMD cores.
ACML? Wasn't updated since 2013 or so.
This is a serious question. What are you supposed to do if you need a GEMM kernel for Ryzen? I sure hope AMD puts out updated ACML libraries real soon.
I'd like to see benchmarks with OpenBLAS. Unlike ACML it's under active development, unlike MKL it won't deliberately screw AMD performance, and it offers "pretty good" performance across every environment I've tried it in. Good enough that it's not worth paying for MKL, not worth going through ATLAS's self-tuning routine, not worth changing my build scripts to use vecLib under OS X. If OpenBLAS currently runs poorly on Ryzen I hope Ryzen will get some development love, because I kind of hate using ATLAS and at this point it would take a major advantage to tempt me back away from open source components.
Word!
I think AMD should focus on OpenBLAS and add support for their new CPUs there.
OpenBLAS is part of the foss toolchain for the easybuild easyconfig. So for the HPC field adding support to OpenBLAS would be great.
OpenBLAS performance is atrocious in 32 bit mode because it doesn't properly support AVX with the halved register file. Not the most common configuration, but MKL handles it fine (on Intel chips, obviously).
That said I agree it makes more sense for AMD to contribute to OpenBLAS than anything else.
Interesting -- what are the use cases for single precision BLAS on CPU? All the scientific software I use requires double precision and for tasks that do well with single precision, I would have thought that GPGPU would now be the go-to solution.
It's not so much reduced math performance (it's twice faster than Bulldozer!), it's that Intel chips as of Haswell have dual 256-bit FPUs per core.
If you use them, the Intel chips downclock (sometimes severely) in order not to violate their TDP, but the dual FPUs are still there, and it's still a win for GEMM. I can see why AMD didn't follow along here, but it could be a factor in some small spaces - when you need GEMM but can't use a GPU.
Note that Ryzen can split its 256-bit FPU into two 128-bit units, so on code that's not using AVX, it's completely on par with Intel.
MKL? I don't think so, it takes the worst codepath if the chip isn't GenuineIntel. OpenBLAS? Doesn't have Ryzen support. Doesn't even recognize some AMD cores. ACML? Wasn't updated since 2013 or so.
This is a serious question. What are you supposed to do if you need a GEMM kernel for Ryzen? I sure hope AMD puts out updated ACML libraries real soon.