Il nuovo compilatore RyuJIT genera mai istruzioni CPU vettoriali (SIMD) e quando?In quali condizioni il compilatore .NET JIT esegue la vettorizzazione automatica?
Nota a margine: lo spazio dei nomi System.Numerics contiene tipi che consentono l'uso esplicito delle operazioni Vector che possono o meno generare istruzioni SIMD a seconda della CPU, versione CLR, versione JITer, indipendentemente dal fatto che vengano compilati direttamente in codice nativo. Questa domanda riguarda specificamente quando il codice non vettoriale (ad esempio in C# o F #) produrrà istruzioni SIMD.
Per quanto riguarda l'allineamento della memoria, ho trovato questo commento da Intel ... "La maggior parte delle semantiche SIMD con codifica VEX ed elaborazione dati con semantica di memoria ha requisiti di allineamento della memoria rilassati rispetto alle istruzioni codificate con i prefissi SIMD" [Intel® 64 e IA -32 Architetture Software Developer's Manual] (http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1 -manual.pdf) – redcalx
"Può essere solo * efficiente *" è la frase chiave. Carichi e negozi non allineati sono molto costosi. –