Non riesco a trovarli nella Intel Intrinsic Guide v2.7. Sai se i set di istruzioni AVX o AVX2 li supportano?Elementi intrinseci di dispersione in AVX
risposta
Non ci sono istruzioni di dispersione o raccolta nel set di istruzioni AVX originale.
AVX2 aggiunge istruzioni, ma non dispersione.
AVX512F include sia le istruzioni scatter che quelle di raccolta.
AVX512PF fornisce inoltre varianti di prefetch delle istruzioni gather e scatter.
AVX512CD fornisce istruzioni per rilevare i conflitti negli indirizzi di dispersione.
Intel MIC (noto anche come Xeon Phi, Knights Corner) include istruzioni di raccolta e dispersione, ma è un coprocessore separato e non può eseguire il normale codice x86-64.
Quale codice x86_64 non funziona su KNC? – Jeff
@Jeff No, non è così! KNC ha anche un tipo di macchina ELF separato –
@Jeff: KNL (Knight's Landing) dovrebbe eseguire il codice macchina x86_64, però, giusto? Sarà anche disponibile come CPU host, anziché solo coprocessore. –
Come l'altra risposta indicato, non è possibile implementare dispersione per ora, anche su AVX2. Tuttavia, il manuale di ottimizzazione di Intel ci fornisce una versione scritta a mano dell'operazione di dispersione. È a pagina 11-17 della versione 2013 del manuale di ottimizzazione Intel. Fondamentalmente quello che fanno è che leggono l'indice ogni volta e lo memorizzano in un registro generale, ad esempio, rax e quindi spostano il numero corretto che si desidera su un registro xmm usando cose come vpalignr. Quindi memorizziamo il risultato nella posizione di memoria con vmovss --- sposta il singolo scalare in memoria. Immagino che questo sarà di bassa efficienza ma immagino che questo sia l'unico modo per realizzare la dispersione dei dati sull'architettura della CPU X86 per ora. Su Xeon Phi le cose sono belle, forniscono supporto nativo per operazioni di dispersione e il primo op, ovviamente, è una locazione di memoria. Quindi credo che se il tuo codice coinvolge un sacco di gather e scatter, il passaggio a Xeon Phi sarà una buona scelta. Per favore, rispondi per dirmi se c'è qualcosa di sbagliato nella mia risposta.
Buona fortuna!
xiangpisaiMM
Grazie per la tua opinione, la mia speranza è più in AVX3 (perché probabilmente porterà spargimento nativo con l'unificazione delle istruzioni simd core e MIC). – Stringer
cambia e quindi memorizza i suoni più lentamente rispetto all'utilizzo di 'extractps', poiché l'elemento da estrarre è una costante in fase di compilazione. O forse la stessa velocità, ma una minore dimensione del codice, dal momento che deve ancora usare la porta shuffle. –
@ xian, c'è un modo per contattarti? – Royi
- 1. Prodotto a punti veloci usando intrinseci SSE/AVX
- 2. Aggiunta di elementi intrinseci utilizzando un pass LLVM
- 3. AVX2 in AVX
- 4. API di matematica CUDA: differenza tra funzioni e elementi intrinseci
- 5. AVX 256 bit equivalente per _mm_load1_ps
- 6. Confronto con NaN utilizzando AVX
- 7. Come utilizzare la moltiplicazione e l'accumulo di elementi intrinseci in ARM Cortex-a8?
- 8. Elementi intrinseci SSE: Converti i float a 32 bit in interi a 8 bit UNSIGNED
- 9. differenza tra l'istruzioni vxorpd AVX e vpxor
- 10. Ottieni le coordinate 3D dal pixel dell'immagine 2D se sono noti i parametri intrinseci e intrinseci
- 11. SSE funziona lentamente dopo l'utilizzo di AVX
- 12. Utilizzo di AVX con GCC - avxintrin.h mancante
- 13. Grafico del tipo di dispersione in Dygraphs?
- 14. atmosferica dispersione OpenGL 3,3
- 15. linea + grafico a dispersione in nvd3
- 16. Librerie matematiche SIMD per SSE e AVX
- 17. .NET Framework 4.5 fornisce supporto SSE4/AVX?
- 18. Esempi ed esercitazioni Intel SSE e AVX
- 19. d3.js zoom/trascina diagramma di dispersione
- 20. Come scegliere le varianti del predicato di confronto di AVX
- 21. Utilizzando colormap con bokeh dispersione
- 22. Legenda diagramma a dispersione Matlotlib
- 23. Istogrammi di dispersione 2D e 3D da array in Python
- 24. Visualizzazione di grafici a dispersione con punti sovrapposti in matplotlib
- 25. dispersione di `overflow: genitore hidden` con bordo arrotondato in Chrome
- 26. Il kernel di Linux ha il proprio contesto SSE/AVX?
- 27. Quali assemblatori attualmente supportano il set di istruzioni AVX?
- 28. I tipi intrinseci NEON funzionano in C ma generano errori di argomenti non validi in C++
- 29. Blocchi di matrici di dispersione di dimensioni diverse usando MPI
- 30. 6 elemento precisione doppia matrice vettore vettore moltiplichino AVX
carichi raccolti: http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011Update/compiler_c/intref_cls/common/intref_bk_avx2_masked_gather.htm - I don' Per vedere le istruzioni del negozio sparse però –
Dalla RWT: _ [AVX2 non include le istruzioni scatter (cioè i negozi con indirizzamento vettoriale), a causa delle complicazioni con il modello di ordinamento della memoria x86 e dei buffer di caricamento/archivio.] (http: // www .realworldtech.com/haswell-cpu/2 /) _ – Stringer