Zurück zu Nachrichten
Entwicklung

Accelerate

16. Mai 2026Quelle

Parallele Hochleistungsarrays für Haskell

Data.Array.Accelerate definiert ein eingebettetes Sprachsystem für Arrayberechnungen für Hochleistungsrechnen in Haskell. Berechnungen auf regulären, mehrdimensionalen Arrays werden in der Form von parametrisierten Kollektivoperationen (wie Maps, Reduzierungen und Permutationen) ausgedrückt. Diese Berechnungen werden online kompiliert und auf einer Vielzahl von Architekturen ausgeführt.

Für weitere Details siehe unsere Papers:

Accelerating Haskell Array Codes with Multicore GPUs Optimising Purely Functional GPU Programs

(slides)

Embedding Foreign Code Type-safe Runtime Code Generation: Accelerate to LLVM

(slides)

(video)

Streaming Irregular Arrays

(video)

Es gibt auch Slides von einigen Präsentationen über Accelerate:

Embedded Languages for High-Performance Computing in Haskell GPGPU Programming in Haskell with Accelerate

(video)

(workshop)

Kapitel 6 des Buches von Simon Marlow

Parallel and Concurrent Programming in Haskell enthält eine didaktische Einführung in Accelerate.

Die Dissertation von Trevor

detailiert den Entwurf und die Implementierung von Vordergrundoptimierungen und CUDA-Backend.

Inhaltsverzeichnis

Ein eingebettetes Sprachsystem für acelerierte Arrayberechnungen Ein einfaches Beispiel Verfügbarkeit Zusätzliche Komponenten Anforderungen Dokumentation Beispiele Wer sind wir? Post- und Kontaktliste Zitieren Sie Accelerate Was fehlt? Ein einfaches Beispiel Lassen Sie uns ein einfaches Beispiel betrachten, wie zum Beispiel das Skalarprodukt zweier Vektoren von Single-Precision-Float-Nummern: dotp :: Acc (Vector Float) -> Acc (Vector Float) -> Acc (Scalar Float) dotp xs ys = fold (+) 0 (zipWith (*) xs ys) Abgesehen vom Typ ist dieser Code fast gleich dem entsprechenden Haskell-Code auf Listen von Floats. Die Typen zeigen an, dass die Berechnung online kompiliert werden kann, um Leistung zu verbessern; zum Beispiel, indem man Data.Array.Accelerate.LLVM.PTX.run auf der Fließkompilierung ausführt, kann man sie direkt auf einem GPU laden.

Verfügbarkeit Paket Accelerate ist verfügbar von:

Hackage: accelerate

  • fügen Sie einfach diesen in Ihren cabal-Datei ein GitHub: AccelerateHS/accelerate
  • laden Sie die Quelle mit

git clone https://github.com/AccelerateHS/accelerate.git Um die Haskell-Toolkette zu installieren, probieren Sie GHCup .

Zusätzliche Komponenten Die folgenden unterstützten Zusatzkomponenten sind als separate Pakete verfügbar: accelerate-llvm-native : Backend für Multicore-CPUs accelerate-llvm-ptx : Backend für NVIDIA-GPUs mit CUDA-Unterstützung. Erfordert einen GPU mit einer Leistungsfähigkeit von 3.0 oder mehr (siehe die

tabelle auf Wikipedia ) accelerate-examples : Computations-Kerne und -Anwendungen, die den Einsatz von Accelerate zeigen, sowie ein Test-Suite für Regressionsprüfungen (unterstützt Funktionstests und Leistungstests) Umwandlung zwischen verschiedenen Formaten: accelerate-io : Für die direkte Kopie von Daten zwischen raw-Punktern accelerate-io-array : Unveränderliche Arrays accelerate-io-bmp : Unkomprimierte BMP-Bilddateien accelerate-io-bytestring : Kompakte, unveränderliche Binärdaten accelerate-io-cereal : Binäre Serialisierung von Arrays mit

cereal accelerate-io-JuicyPixels : Bilder in verschiedenen Pixelformaten accelerate-io-repa : Eine andere Haskell-Bibliothek für parallele Hochleistungsarrays accelerate-io-serialise : Binäre Serialisierung von Arrays mit

cereal accelerate-io-vector : Effiziente, ein- oder mehrdimensionale Arrays accelerate-fft : Implementierung der schnellen Fourier-Transformation, mit FFI-Verbindungen zu optimierten Implementierungen accelerate-blas : BLAS- und LAPACK-Operationen, mit FFI-Verbindungen zu optimierten Implementierungen accelerate-bignum : Feste Breite-Großzahlenarithmetik colour-accelerate : Farbrepräsentationen in Accelerate (RGB, sRGB, HSV und HSL) containers-accelerate : Hashing-basierte Container-Typen

gloss-accelerate : Generiert

gloss Bilder von Accelerate

gloss-raster-accelerate : Paralleler Raster- und Animationen-Render hashable-accelerate : Eine Klasse für Typen, die in einen Hash-Wert umgewandelt werden können lens-accelerate : Lens-Operatoren für Accelerate-Typen linear-accelerate : Lineare Vektorräume in Accelerate mwc-random-accelerate : Generiert Accelerate-Arrays mit hochwertigen Pseudorandomzahlen

Kommentare (0)

Login or Register to apply