Führt Haskell SIMD-Optimierungen automatisch durch?

8

Es ist möglich, eine SIMD-basierte Vektorbibliothek in Haskell unter Verwendung von Ссылка Aber wird es einen Sinn ergeben? Ich bin auf einige Artikel gestoßen, die der automatischen SIMD-Optimierung in Haskell gewidmet sind, aber was ist der aktuelle Stand (2014)? Z.B. Wird Ссылка SIMD verwenden oder ist es besser, die optimierte Bibliothek manuell zu schreiben, indem Low-Level-SIMD-Primitive verwendet werden?

    
schernichkin 03.06.2015, 15:25
quelle

2 Antworten

6

es gibt im Moment absolut keine automatische Vektorisierung mit SIMD in Ghc. keine

Die aktuellen simd-Primops lösen eine GHC-Panik aus, wenn sie mit dem nativen Code-Gen verwendet werden, obwohl sie mit dem Back-End -fllvm arbeiten.

diesen simd-Primopern fehlt es entscheidend an einem guten Datenmodell für das Datenmischen, das aktuelle Datenmodell wird eine ziemlich umfangreiche Überarbeitung benötigen, um simd shuffles richtig zu unterstützen.

Das llvm-Backend KÖNNEN bestimmte Auto-Vektorisierungsoptimierungen am Code vornehmen, aber ich würde im Allgemeinen die Auto-Vektorisierung als einen Bonus und nicht als eine Kernannahme dafür betrachten, wie Code optimiert wird, erfordert ein sorgfältiges Auditing validieren!

    
Carter Tazio Schonwald 04.06.2015, 03:12
quelle
8

Erstens: Ich hatte keine Ahnung, dass GHC Primus für SIMD hatte. Netter Fund!

Übrigens, das ist mein Verständnis:

  • Das GHC-native Codegen-Backend gibt niemals selbst SIMD-Anweisungen aus.
  • Das optionale LLVM-Backend darf SIMD erzeugen, weiß ich nicht. Aber das ist nicht die Standard-Kompilierungsroute. Mein Verständnis ist, dass es immer noch eher experimentell ist.
  • In Anbetracht der Existenz der Primops, die Sie erwähnen, könnte die Vector-Bibliothek möglicherweise SIMD-Code generieren. Ich vermute, dass es nicht so ist, aber der einzige Weg, um wirklich sicher zu sein, ist, den Autor (die Autoren) zu fragen oder einfach den Quelltext zu grepsen ...
  • Wenn Sie etwas Bestimmtes wollen, scheint es völlig in Ordnung zu sein, es selbst zu programmieren. Ich habe keine Ahnung, wie viel Arbeit es wäre ...
MathematicalOrchid 03.06.2015 15:47
quelle

Tags und Links