Differenze di prestazione tra ATLAS e MKL?


31

ATLAS è un sostituto BLAS / LAPACK gratuito che si sintonizza sulla macchina durante la compilazione. MKL è la libreria commerciale fornita da Intel. Queste due librerie sono comparabili quando si tratta di prestazioni o MKL ha il sopravvento per alcune attività? Se sì, quali?


Risposte:


18

MKL (di Intel) è ottimizzato per i processori Intel e probabilmente ha il "sopravvento" in molti casi. Ma è anche "famoso" per aver scelto i "peggiori" percorsi di codice per i processori AMD, come descritto qui .


13

BLAS non è monolitico. BLAS1 e BLAS2 sono limitati dalla larghezza di banda della memoria e non c'è molto che puoi fare per accelerarli oltre l'ovvio (srotolamento del loop, blocco della cache per il livello 2). BLAS3 è più interessante e il benchmark prototipo qui è la moltiplicazione matrice-matrice. Per quanto ne so, GOTOBlas è sempre stato il chiaro vincitore qui, vedi ad esempio questo confronto o questo e questa giustificazione .

Sono passati anni e abbiamo il progetto BLIS . È la migliore alternativa gratuita a MKL.


4
Matt ha ragione, ma GotoBLAS non è più in fase di sviluppo. Funziona ancora abbastanza bene per alcuni processori moderni, ma MKL lo supererà sicuramente per DGEMM sui futuri processori se non lo fa già. Non l'abbiamo testato su Westmere, ad esempio, ma non sarei sorpreso se GotoBLAS ha già perso.
Bill Barth,

2
Il Dr. Goto è stato acquistato da M $. Tristezza . .
meawoppl

2
OpenBLAS è il progetto opensource biforcuto da GotoBLAS. github.com/xianyi/OpenBLAS
ShadowWarrior il

Goto ora funziona su MKL. Niente più tristezza :-)
Jeff,

6

Profilo, non speculare! (funziona anche come "Benchmark, non speculare!" )

Non c'è nulla di generico che si possa dire, dipende fortemente dalle attività che si desidera eseguire (BLAS 1/2/3, ad esempio) e dall'hardware in uso (ovviamente, Intel MKL non funziona su processori ARM, per esempio; ma anche tra i processori Intel, puoi aspettarti differenze di prestazioni).


Un'altra cosa che ritengo degno di nota è che AMD offre anche librerie matematiche ottimizzate per i loro processori, la AMD Core Math Library . Non è ricco di funzionalità come MKL di Intel, ma include BLAS.


Vero. Ci sono molte prove aneddotiche (e profilazione effettiva) per eseguire il backup delle altre risposte qui (come evidenziato dai collegamenti). Tuttavia, il tuo chilometraggio può variare e aiuta sempre a profilarsi per sapere che hai ragione.
Geoff Oxberry,

1
Tuttavia, è fastidioso profilare, poiché l'MKL è di $ 499. Tuttavia offrono una prova di 1 mese
Lyndon White il

@LyndonWhite è ancora così? La pagina di download sembra mostrare che è gratuito
Luciano

Sì, credo che ora sia gratuito, vedo molte persone che lo usano ora.
Lyndon White,

6

Le risposte precedenti a questa domanda hanno riguardato la maggior parte dei punti salienti, ma voglio aggiungere un commento rispetto a questo:

MKL ha il sopravvento per alcune attività?

Il team MKL è in una posizione unica per conoscere i futuri set di istruzioni Intel e le loro implementazioni in processori specifici. Inoltre, hanno accesso a simulatori di processori proprietari e hardware di pre-produzione che nessuno al di fuori di Intel può utilizzare. Pertanto, MKL ha la meglio rispetto al grado di conoscenza dei prodotti futuri e quando ottengono questa conoscenza. Pertanto, non dovrebbe essere troppo sorprendente se producono implementazioni migliori del BLAS rispetto a chiunque altro, almeno all'inizio della vita di un prodotto con nuove funzionalità.

D'altra parte, Intel è stata piuttosto aperta sul set di istruzioni di AVX-512 e ha fornito Intel® Software Development Emulator (SDE) che consente agli sviluppatori di emulare le istruzioni di AVX-512 su processori che non le supportano in modo nativo. Per questo motivo, non sarà troppo sorprendente se sono disponibili implementazioni open source di alta qualità di BLAS per processori Intel che supportano AVX-512 all'inizio della vita di questi prodotti.

Naturalmente, quanta differenza fa avere informazioni dettagliate su un particolare processore rispetto ai fondamenti degli algoritmi di algebra lineare densa non è completamente risolta. La seguente citazione affronta questo problema meglio di me:

In teoria, non c'è differenza tra teoria e pratica. Ma, in pratica, c'è.

Divulgazione completa: lavoro per Intel.


C'è qualche possibilità che MKL sia di provenienza aperta?
Royi,

Per quale scopo? MKL è già gratuito come nella birra. C'è un valore educativo molto maggiore nella lettura del codice sorgente di BLIS. Se vuoi leggere assembly, prova OpenBLAS.
Jeff,

1

Penso che la differenza principale tra le librerie BLAS del fornitore e le librerie BLAS open source sia il tempo impiegato dall'open source per supportare le funzionalità hardware più recenti.

Poiché BLAS è ampiamente utilizzato, è di interesse del fornitore supportare le funzionalità hardware più recenti. Ad esempio, considera le estensioni vettoriali AVX di Intel che sono state introdotte con il processore "sandy-bridge" nel gennaio 2011. MKL aveva il supporto AVX anche prima che fosse disponibile la CPU, ma solo di recente ATLAS (fine 2011) ha iniziato a implementare il supporto per AVX .

Inoltre, se la tua applicazione ha davvero bisogno di prestazioni e prima di iniziare il benchmarking di diverse librerie BLAS o iniziare a fare hacking per ottimizzare qualsiasi cosa: profila la tua applicazione. È comune che l'intuizione umana non sia un predittore di profiler molto efficace, almeno so che il mio non lo è! Quindi, invece di perdere tempo a ottimizzare in modo casuale, profila la tua applicazione e affronta sistematicamente ogni collo di bottiglia.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.