Sind BLAS-Level-1-Prozeduren immer noch relevant für moderne Fortran-Compiler?

8

Die meisten BLAS-Level-1-API können einfach mit Fortran 9x + vektorisierten Zuweisungen und intrinsischen Prozeduren direkt geschrieben werden / p>

Angenommen, Sie verwenden einen modernen optimierenden Compiler wie Intel Fortran und korrigieren den zielspezifischen Compiler Optimierungsoptionen, gibt es irgendwelche Leistungsvorteile durch die Verwendung von BLAS-Level-1-Verfahren, beispielsweise von Intel MKL oder anderen schnelle BLAS-Implementierungen?

Gibt es eine typische Vektorgröße, wenn diese Vorteile auftreten?

    
abbot 16.10.2012, 22:41
quelle

1 Antwort

9

Es kommt darauf an. Wir haben dies zuvor mit dem Intel-Compiler getestet und dabei überraschende Ergebnisse erzielt. Zum Beispiel ergab DOT_PRODUCT von Fortran gegenüber der BLAS-Implementierung unterschiedliche Trends basierend auf der Problemgröße. Als die Anzahl der Elemente in den Arrays größer wurde, wurde BLAS besser als das intrinsische. Aber für kleine Problemgrößen war das intrinsische viel schneller.

Wir haben für unsere Anwendungsfälle tatsächlich die Cut-Off-Größe gemessen, die erforderlich ist, um einen besser als den anderen zu machen und tatsächlich if-Anweisungen zu verwenden, um zu entscheiden, welche Calls aufgerufen werden sollen. Ich kann diese Ergebnisse nicht teilen, aber ich ermutige Sie, es selbst zu testen. Die Verwendung von BLAS bietet noch immer Vorteile.

    
tpg2114 16.10.2012, 22:51
quelle

Tags und Links