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
È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top