3 ms·
I really want to see benchmarks for scientific / math-heavy workloads. AVX2 & FMA3 are supposed to give double the peak FP & integer vector performance. Unfor
by fiatmoney 13y ago
I really want to see benchmarks for scientific / math-heavy workloads. AVX2 & FMA3 are supposed to give double the peak FP & integer vector performance.
Unfortunately, it takes time to optimize code for each new architecture, and most benchmarks don't even bother with a recompile.
- xyzzy123 13y agoI don't even know the CPU flag to specify to go "I have the absolutely latest CPU". Generally all the scientific libraries have vectorised asm for the tight loop stuff. So what is a benchmark person gonna do?
- fiatmoney 13y ago-march=native at least. Something like re-tuning ATLAS at best. Not really griping that much; eventually people do do those kinds of benchmarks, but they do take time, and they're not really the target audience for someplace like Tom's. Understandable they would focus on gaming & general-use benchmarks.
- xyzzy123 13y agoThanks; I have to admit I didn't know -march=native. I sit a lot in the debugger (other people's programs) and I never see even SSE let alone all the other things that could happen. One day the output will change ;)
- sparky 13y agoIf you compile the code on said absolutely-latest-CPU, -mtune=native for GCC and Clang, -xHost for ICC. I don't use MSVC, but /arch:AVX will get you the AVX instructions found on Sandy Bridge and Ivy Bridge. AFAIK, there is no generic "tune generated code for host" flag for MSVC, and AVX2 is not supported at all yet. You'll probably need to pass optimization-level and vectorization flags to see more of an effect, but for the most part, the biggest gains will come when optimized libraries come out with new ASM- or intrinsic-based variants for the new ISA extension.
- bradleyjg 13y agoIntel generally updates it's Math Kernal Library (which includes a LAPACK implimentation) with each new architecture. If you only want to compare intel to intel and want to look at linear algebra or FFT heavy workloads, that's a great place to start. Also, I seem to remember reading that the x264 team got early access to Haswell and so were able to start optimizing their encoding routines for it. So if there's a benchmark based on that, that would be another good place to look.
- carterschonwald 13y agoSpeaking as someone writing a bunch of numerical code, while the fma and avx2 stuff is neat, that's not the part I find exciting. Those alone just naively give 2-4x boost The main exciting part of avx2 is that I can have more of a matrix in registers at a time. Depending on the details of the matrix multiply algs etc, this reduces the volume of loads and stores by some neat factor. Likewise the support for gathers is neat, and makes for better performance with some of the standard matrix layouts that fundamentally have bad strides access. What I'm really excited about is the parallel bit deposits / extract operations. They're meant for making it easy to write arbitrary bit permutation functions in a small number of rounds, but potentially could be used to support fast indexing into some nonstandard linear algebra layouts that have substantially better memory locality. I'm talking layouts that easily compete with blas / atlas etc with a lot less engineering work. I'm really excited to get my hands on some haswell hardware in the coming months to experiment thusly. Context for me being that I'm writing tools in Haskell to generate and run numerical codes and I think some of the things Haswell enabled are quite swell. There's also that htm concurrency machinery that'd be neat to mess around with too.