C / C ++ Matlab-Compiler vs MKL

8

Gibt es einen signifikanten Leistungsunterschied zwischen Matlab-numerischen Routinen, die als C / C ++ - DLL durch Matlab mcc gegenüber äquivalenten Routinen in der Math Kernel Library verfügbar gemacht werden?

Ich bin besonders interessiert an der Leistung von linearen Least-Square-Lösern wie "Gele" und Fourier-Transformations-Routinen.

    
dave 09.04.2011, 20:22
quelle

2 Antworten

2

Matlab fügt jedem Aufruf eine Ebene hinzu, fftw, lapack, mkl.

Wenn Sie eine spezielle Version, egal welchen Codes, kompilieren, läuft sie immer schneller ohne den Matlab-Overhead.

Wenn Sie nicht wissen, was Sie tun, verwenden Sie integrierte Bibliotheken, wenn Sie ein alter F77-Hacker wie ich sind, schreibe ich meine eigenen Routinen und benutze nur die eingebauten Bibliotheken, wenn ich mich fühle faul oder Prototyping eines Algorithmus.

    
painter_landscapes 09.11.2011 23:07
quelle
0

Für die Fourier-Transformationsroutinen würde ich FFTW empfehlen, abhängig vom Verwendungsszenario. FFTW ist für ein Szenario mit einmaliger Vorbereitung und Wiederverwendung optimiert. Wenn Sie also die gleiche Art von Transformation berechnen müssen, sagen wir eine 1024x2000 (Nicht-Power-of-2) Transformation innerhalb einer Schleife, wird FFTW schneller sein. Wenn Sie einen anderen Transformationstyp berechnen müssen (Dimensionen werden jedes Mal geändert), ist MKL schneller.

Wie FFTW funktioniert, ist, dass Ihre Software zuerst die Vorbereitungsroutine aufruft, die von einigen ms bis zu einigen Sekunden dauern kann (Sie können dies konfigurieren), um Ihre spezielle Plattform zu überprüfen und die am besten optimierte Routine zu wählen. Dann können Sie wiederholt die Transformationsroutine mit optimierten Parametern aufrufen.

Alle anderen bekannten Bibliotheken haben Fix-Ed-Optimierung, die für Ihre Plattform optimal sein kann oder nicht.

    
Francois 18.10.2011 15:25
quelle

Tags und Links