1

I would like to know when was the Linux kernel modified to incorporate full support for AVX2 instruction sets.

I have tested some software using AVX2 instruction set that someone else claims is 20% faster in their hands on a Linux computer, but my tests were done on a server with avx2 support according to /proc/cpuinfo using a kernel: 3.10.0-229.1.2.el7.x86_64

Is kernel 3.10.0 recent enough for full AVX2 support?

PS: rephrasing from a comment: what is the kernel that will support AVX2 fully for a binary compiled with the newest version of GCC, which presumably is the best for AVX2 support?

1
  • Please define 'full AVX2 support'. In general, if running compiled software, it would normally depend on the compiler, not the Linux kernel. OTOH, if you are looking at RAID6 benchmarks, you care about when support was added to the kernel. Nov 19, 2015 at 13:34

1 Answer 1

1

To run applications with avx2 code the kernel must properly handle storing/restoring the state of the cpu when switching between tasks, this was done in 2.6.30 ( https://kernelnewbies.org/Linux_2_6_30 ). The sw must also contain (it might be compile time decision to include it or not) avx2 code and utilise it (or it can contain both and decide on runtime but to do this it has to detect that your cpu supports avx2). How much benefit avx2 brings also depends on the cpu (some cpus support it but don't really benefit from it due to various reasons.. Intel cpus generally benefit more than AMD cpus and each newer generation benefits more).

The kernel itself can also contain avx2 optimised code for things like encryption, hashing, compression and anything else that benefits from it (not everything does and some things that do in theory are very hard to code using avx2 in a way that is both correct and faster than scalar code doing the same thing) depending on the settings used at compile time.

You can check this by doing things like dmesg | grep avx2 or reading the config file (the config used to compile the currently running kernel can sometimes be found at /proc/config.gz) and looking for avx2.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .