2013-05-14 13 views
9

Ho letto here che Intel ha introdotto SSE 4.2 instructions per accelerare l'elaborazione delle stringhe.gcc utilizza le istruzioni Intel SSE 4.2 per l'elaborazione del testo, se disponibile?

Citazione dall'articolo:

il set di istruzioni SSE 4.2, prima implementato in Core i7 di Intel, fornisce archi e le istruzioni di elaborazione testo (STTNI) che utilizzano operazioni SIMD per i dati di carattere elaborazione. Sebbene originariamente fosse il concepito per accelerare l'elaborazione di stringhe, testi e XML, le nuove potenti funzionalità di queste istruzioni sono utili al di fuori di questi domini e vale la pena rivisitare le fasi di ricerca e riconoscimento di numerose applicazioni per utilizzare STTNI per migliorare prestazioni

  • Fa fare uso gcc di queste istruzioni se sono disponibili?
  • Se sì, quale versione?
  • In caso contrario, esistono librerie open source che offrono questo?
+2

dubito che GCC sarà in grado di riconoscere un compito specifico come test-processing e usarli automaticamente. Ma non sarei sorpreso se funzioni come 'strcpy()' sono state fatte usando SSE4.2 dal compilatore. – Mysticial

+0

@Mysticial Suppongo che mi stavo riferendo a 'strcpy' et al; ma, soprattutto, 'atoi' ecc., e i loro equivalenti C++ 11' std :: stoi' etc –

+1

vedere http://stackoverflow.com/questions/7919304/gcc-sse-code-optimization Devi dirlo a gcc. Le librerie sono già compilate, quindi solo il tuo codice sarà interessato, a meno che tu non ricompili anche le librerie. – imel96

risposta

4

Per quanto riguarda le librerie di software, vorrei vedere la versione di Agner Fog. Ha una collezione di molte routine, incluse molte manipolazioni di stringhe che usano SSE4.2, ottimizzato in assembly. Alcune altre utili funzioni che fornisce quali informazioni di ritorno sulla CPU come la dimensione della cache per ogni livello e quali estensioni (ad esempio SSE4.2) sono supportate.

http://www.agner.org/optimize/asmlib.zip

Per abilitare SSE4.2 in GCC compilato con -msse4.2 o se si dispone di un processore con l'utilizzo AVX -mavx

1

non sono sicuro sul fatto che gcc usa, ma non dovrebbe avere importanza poiché l'elaborazione del testo viene generalmente eseguita tramite glibc. Se usi le funzioni di stringa standard da string.h (probabilmente il cstring farà lo stesso) e hai un ragionevole glibc dovresti usarle automaticamente.

Ho cercato per esso e sembra glibc 2.15 (eventualmente anche quelli più vecchi hanno) ha già SSE4.2 strcasecmp ottimizzazioni:

http://upstream.rosalinux.ru/changelogs/glibc/2.15/changelog.html

Problemi correlati