AVX (Advanced Vector Extensions) is een set instructies voor x86 CPU's die uitgebreide ondersteuning biedt voor vectorgeoriënteerde berekeningen. Vectorgeoriënteerde berekeningen houden in dat dezelfde rekenkundige bewerking op meerdere stukjes gegevens tegelijkertijd wordt uitgevoerd. AVX biedt dus een manier om deze bewerkingen parallel uit te voeren, wat berekeningen met grote hoeveelheden gegevens aanzienlijk kan versnellen.
AVX biedt 256-bits registers die acht 32-bits of vier 64-bits waarden tegelijkertijd kunnen opslaan. De instructies werken op deze registers, waardoor meerdere bewerkingen parallel kunnen worden uitgevoerd.
Naast basisrekenkundige bewerkingen zoals optellen, aftrekken, vermenigvuldigen en delen, biedt AVX ook instructies voor meer complexe bewerkingen zoals manipulatie van individuele bits (bitwise operators) en conversies tussen gegevenstypen. AVX omvat ook ondersteuning voor fused multiply-add (FMA)-operaties, die vermenigvuldiging en optelling combineren tot één bewerking om de prestaties en nauwkeurigheid te verbeteren.
Over het algemeen biedt AVX aanzienlijke prestatieverbeteringen voor toepassingen die vectorgeoriënteerde berekeningen uitvoeren, zoals beeldverwerking, wetenschappelijke simulaties en machine learning. Niet alle CPU's ondersteunen echter AVX en software moet specifiek worden ontworpen om hiervan te profiteren.
AVX (ik neem aan AVX2, aangezien hierboven gerept wordt over 256-bit registers) wordt al sinds de Haswell series (2013) ondersteund, dus eerlijk gezegd een beetje jammer dat dit soort geavanceerde instructies pas nu beschikbaar komt. Natuurlijk weet ik ook dat je in geclusterde hypervisors een CPU mask moet overlayen gebaseerd op de laagst gesupporteerde CPU cabailities in je cluster, zodat een VM niet ineens problemen gaat veroorzaken als die naar een CPU met minder capaciteiten wordt geplaatst, maar dan nog zou je toch mogen verwachten dat je CPU's wel iets recenter zijn dan 2013.