Intel VML add è lento
-
12-10-2019 - |
Domanda
Ho scritto questo piccolo subroutine che mette a confronto semplici funzioni matematiche vettoriali, eseguita sia con un ciclo:
f(i) = a(i) + b(i)
o diretta:
f = a + b
o utilizzando Intel MKL VML:
vdAdd (n, a, b, f)
I risultati di temporizzazione per n = 50000000 sono:
VML 0,9 sec dirigere 0.4 cappio 0.4
E io non capisco, perché VML prende il doppio del tempo come gli altri metodi! (Loop è a volte più veloce di diretta)
sottoprogramma può essere trovato sotto http://paste.ideaslabs.com/show/L6dVLdAOIf e chiamata via
program test
use vmltests
implicit none
call vmlTest()
end program
Soluzione
Il codice di esempio hanno un potenziale problema di cache L2, si può superare con il blocco di ottimizzazione. Si veda la risposta Intel® Software Network Forum per i dettagli: http: // software .intel.com / en-us / forum / showthread.php? t = 80041
Intel® Ottimizzazione Avviso:
compilatori Intel®, le librerie associate e strumenti di sviluppo associati possono includere o opzioni utilizzare tale Ottimizza per set di istruzioni che sono disponibile sia in Intel® e non Intel microprocessori (per esempio SIMD set di istruzioni), ma non lo fanno optimize altrettanto per i microprocessori non Intel. Inoltre, alcune opzioni del compilatore per compilatori Intel, tra cui alcuni che non sono specifici per Intel micro-architettura, sono riservate microprocessori Intel. Per una dettagliata descrizione delle opzioni del compilatore Intel, compresi i set di istruzioni e microprocessori specifico che implicito, si prega di fare riferimento alla “Intel® Compiler utente e Guide di riferimento” sotto la voce “Opzioni del compilatore." Molti routine di libreria che fanno parte di prodotti Intel® compilatore sono più altamente ottimizzato per Intel microprocessori che per altri microprocessori. Mentre i compilatori e biblioteche in Intel® compilatore prodotti offrono ottimizzazioni per entrambi Compatibile Intel Intel e microprocessori, a seconda della opzioni selezionate, il codice e altri fattori, è probabile che otterrà una performance migliore su Intel microprocessori.
compilatori Intel®, le librerie associate e strumenti di sviluppo associati possono o non può ottimizzare allo stesso grado per i microprocessori non Intel per ottimizzazioni che non sono unici per microprocessori Intel. Questi ottimizzazioni includono Intel® Streaming SIMD Extensions 2 (Intel® SSE2), Intel® Streaming SIMD Extensions 3 (Intel® SSE3), e supplementare Streaming SIMD Extensions 3 (Intel® SSSE3) set di istruzioni e altri ottimizzazioni. Intel non lo fa garantire la disponibilità, funzionalità o efficacia di qualsiasi ottimizzazione on microprocessori non prodotto da Intel. ottimizzazioni microprocessore-dipendente in questo prodotto è destinato all'uso con microprocessori Intel.
Mentre Intel crede nostri compilatori e le biblioteche sono una ottima scelta per aiutare a ottenere il miglior prestazioni su Intel® e non Intel microprocessori, Intel consiglia a valutare altri compilatori e librerie per determinare quale meglio si incontrano le vostre esigenze. Speriamo di vincere il vostro business, cercando di offrire il migliori prestazioni di qualsiasi compilatore o biblioteca; fatecelo sapere se trovare noi non