Torna alle Notizie
Sviluppo

Accelerate

16 maggio 2026Fonte

Array paralleli ad alta prestazione per Haskell

Data.Array.Accelerate definisce un linguaggio embedded di calcoli di array per il calcolo ad alta prestazione in Haskell. I calcoli su array multi-dimensionali regolari sono espressi nella forma di operazioni collettive parametrizzate (come mappe, riduzioni e permutazioni). Questi calcoli sono compilati online e eseguiti su una gamma di architetture.

Per ulteriori informazioni, vedere i nostri 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)

Ci sono anche slides da alcune presentazioni su Accelerate:

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

(video)

(workshop)

Capitolo 6 del libro di Simon Marlow

Parallel and Concurrent Programming in Haskell contiene un'introduzione didattica a Accelerate.

La tesi di dottorato di Trevor

dettaglia il design e l'implementazione delle ottimizzazioni di frontend e del backend CUDA.

Tabella dei contenuti

Un linguaggio embedded per calcoli di array accelerati Un esempio semplice Disponibilità Componenti aggiuntivi Requisiti Documentazione Esempi Chi siamo? Elenco di posta e contatti Citarci Cosa manca? Un esempio semplice Consideriamo, ad esempio, il calcolo del prodotto scalare di due vettori di numeri a virgola mobile di precisione singola: dotp :: Acc (Vector Float) -> Acc (Vector Float) -> Acc (Scalar Float) dotp xs ys = fold (+) 0 (zipWith (*) xs ys) Eccezion fatta per il tipo, questo codice è quasi lo stesso del corrispondente codice Haskell su liste di float. I tipi indicano che il calcolo può essere compilato online per prestazioni; ad esempio, utilizzando Data.Array.Accelerate.LLVM.PTX.run può essere caricato direttamente su un GPU.

Disponibilità Package Accelerate è disponibile da:

Hackage: accelerate

  • aggiungilo semplicemente al tuo file cabal GitHub: AccelerateHS/accelerate
  • ottieni la fonte con

git clone https://github.com/AccelerateHS/accelerate.git Per installare la toolchain Haskell prova GHCup .

Componenti aggiuntivi I seguenti componenti aggiuntivi supportati sono disponibili come pacchetti separati: accelerate-llvm-native : Backend per CPU multicore accelerate-llvm-ptx : Backend per GPU NVIDIA con supporto CUDA. Richiede un GPU con capacità di calcolo 3.0 o superiore (vedi la

tabella su Wikipedia ) accelerate-examples : Kernel computazionali e applicazioni che mostrano l'utilizzo di Accelerate, nonché un set di test di regressione (supporta il testing di funzione e prestazioni) Conversione tra vari formati: accelerate-io : Per copiare dati direttamente tra puntatori raw accelerate-io-array : Array immutabili accelerate-io-bmp : File di immagine BMP non compressi accelerate-io-bytestring : Dati binari compatti e immutabili accelerate-io-cereal : Serializzazione binaria di array utilizzando

cereal accelerate-io-JuicyPixels : Immagini in vari formati di pixel accelerate-io-repa : Altra libreria Haskell per array paralleli ad alta prestazione accelerate-io-serialise : Serializzazione binaria di array utilizzando

cereal accelerate-io-vector : Array unidimensionali efficienti, sia boxed che unboxed accelerate-fft : Implementazione della trasformata di Fourier veloce, con legami FFI per implementazioni ottimizzate accelerate-blas : Operazioni BLAS e LAPACK, con legami FFI per implementazioni ottimizzate accelerate-bignum : Arithmetica di interi di larghezza fissa colour-accelerate : Rappresentazioni di colore in Accelerate (RGB, sRGB, HSV e HSL) containers-accelerate : Tipi di contenitori basati su hashing

gloss-accelerate : Genera immagini

gloss da Accelerate

gloss-raster-accelerate : Rendering parallelo di immagini e animazioni raster hashable-accelerate : Una classe per tipi che possono essere convertiti in un valore di hash lens-accelerate : Operatori Lens per tipi di Accelerate linear-accelerate : Spazi vettoriali lineari in Accelerate mwc-random-accelerate : Genera array Accelerate riempiti con numeri pseudorandom di alta qualità

Commenti (0)

Accedi o Registrati per candidarti