Retour aux Actualités
Développement

Accelerate

16 mai 2026Source

Tableaux parallèles de haute performance pour Haskell

Data.Array.Accelerate définit un langage incorporé de calculs de tableaux pour le calcul de haute performance en Haskell. Les calculs sur des tableaux multidimensionnels réguliers sont exprimés sous la forme d'opérations collectives paramétrées (comme des cartes, des réductions et des permutations). Ces calculs sont compilés en ligne et exécutés sur une gamme d'architectures.

Pour plus de détails, consultez nos papiers:

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)

Il y a aussi des diapositives de certaines présentations sur Accelerate:

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

(video)

(workshop)

Chapitre 6 du livre de Simon Marlow

Parallel and Concurrent Programming in Haskell contient une introduction didactique à Accelerate.

La thèse de doctorat de Trevor

détaille le design et l'implémentation des optimisations de frontend et du backend CUDA.

Table des matières

Un langage incorporé pour les calculs de tableaux acélérés Un exemple simple Disponibilité Composants supplémentaires Requis Documentation Exemples Qui sommes-nous? Liste de diffusion et contacts Citer Accelerate Qu'est-ce qui manque? Un exemple simple Considérons, par exemple, le calcul du produit scalaire de deux vecteurs de nombres à virgule flottante de précision simple: dotp :: Acc (Vector Float) -> Acc (Vector Float) -> Acc (Scalar Float) dotp xs ys = fold (+) 0 (zipWith (*) xs ys) Excepté pour le type, ce code est presque identique au code correspondant de Haskell sur des listes de flottants. Les types indiquent que le calcul peut être compilé en ligne pour améliorer les performances; par exemple, en utilisant Data.Array.Accelerate.LLVM.PTX.run il peut être chargé directement sur un GPU.

Disponibilité Package Accelerate est disponible depuis:

Hackage: accelerate

  • ajoutez simplement cela à votre fichier cabal GitHub: AccelerateHS/accelerate
  • obtenez la source avec

git clone https://github.com/AccelerateHS/accelerate.git Pour installer la chaîne d'outils Haskell, essayez GHCup .

Composants supplémentaires Les composants supplémentaires suivants sont disponibles comme paquets séparés: accelerate-llvm-native : Backend pour CPU multicore accelerate-llvm-ptx : Backend pour GPU NVIDIA avec support CUDA. Exige un GPU avec une capacité de calcul de 3.0 ou supérieure (voir la

tableau sur Wikipedia ) accelerate-examples : Kernels de calcul et applications qui montrent l'utilisation d'Accelerate, ainsi qu'un ensemble de tests de regression (supporte les tests de fonction et de performances) Conversion entre formats variés: accelerate-io : Pour copier les données directement entre les pointeurs raw accelerate-io-array : Tableaux immuables accelerate-io-bmp : Fichiers d'image BMP non compressés accelerate-io-bytestring : Données binaires compactes et immuables accelerate-io-cereal : Sérialisation binaire des tableaux en utilisant

cereal accelerate-io-JuicyPixels : Images en différents formats de pixels accelerate-io-repa : Une autre bibliothèque Haskell pour les tableaux parallèles de haute performance accelerate-io-serialise : Sérialisation binaire des tableaux en utilisant

cereal accelerate-io-vector : Tableaux unidimensionnels efficaces, à la fois boxés et non boxés accelerate-fft : Implémentation de la transformée de Fourier rapide, avec des liens FFI pour des implémentations optimisées accelerate-blas : Opérations BLAS et LAPACK, avec des liens FFI pour des implémentations optimisées accelerate-bignum : Arithmétique de nombres entiers à largeur fixe colour-accelerate : Représentations de couleur en Accelerate (RGB, sRGB, HSV et HSL) containers-accelerate : Types de conteneurs basés sur le hachage

gloss-accelerate : Génère des images

gloss de Accelerate

gloss-raster-accelerate : Rendu parallèle d'images et d'animations raster hashable-accelerate : Une classe pour les types qui peuvent être convertis en un valeur de hachage lens-accelerate : Opérateurs Lens pour les types d'Accelerate linear-accelerate : Espaces vectoriels linéaires en Accelerate mwc-random-accelerate : Génère des tableaux d'Accelerate remplis de nombres pseudorandoms de haute qualité

Commentaires (0)

Login or Register to apply