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