Arreglos paralelos de alta prestación para Haskell
Data.Array.Accelerate define un lenguaje incorporado de cálculos de arreglos para el cálculo de alta prestación en Haskell. Los cálculos en arreglos multidimensionales regulares se expresan en la forma de operaciones colectivas parametrizadas (como mapas, reducciones y permutaciones). Estos cálculos se compilan en línea y se ejecutan en una gama de arquitecturas.
Para obtener más detalles, consulte nuestros 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)
Hay también slides de algunas presentaciones sobre Accelerate:
Embedded Languages for High-Performance Computing in Haskell GPGPU Programming in Haskell with Accelerate
(video)
(workshop)
Capítulo 6 del libro de Simon Marlow
Parallel and Concurrent Programming in Haskell contiene una introducción didáctica a Accelerate.
La tesis de doctorado de Trevor
detalla el diseño e implementación de las optimizaciones de frontend y el backend CUDA.
Tabla de contenido
Un lenguaje incorporado para cálculos de arreglos acelerados Un ejemplo simple Disponibilidad Componentes adicionales Requisitos Documentación Ejemplos ¿Quiénes somos? Lista de correo y contactos Citar a Accelerate ¿Qué falta? Un ejemplo simple Consideremos, por ejemplo, el cálculo del producto escalar de dos vectores de números de punto flotante de precisión simple: dotp :: Acc (Vector Float) -> Acc (Vector Float) -> Acc (Scalar Float) dotp xs ys = fold (+) 0 (zipWith (*) xs ys) Excepto por el tipo, este código es casi lo mismo que el correspondiente código de Haskell en listas de flotantes. Los tipos indican que el cálculo puede ser compilado en línea para prestaciones; por ejemplo, utilizando Data.Array.Accelerate.LLVM.PTX.run puede ser cargado directamente a un GPU.
Disponibilidad Paquete Accelerate está disponible desde:
Hackage: accelerate
- simplemente agregue esto a su archivo cabal GitHub: AccelerateHS/accelerate
- obtenga la fuente con
git clone https://github.com/AccelerateHS/accelerate.git Para instalar la herramienta de herramientas de Haskell prueba GHCup .
Componentes adicionales Los siguientes componentes adicionales soportados están disponibles como paquetes separados: accelerate-llvm-native : Backend para CPU multicore accelerate-llvm-ptx : Backend para GPU NVIDIA con soporte CUDA. Requiere un GPU con capacidad de cálculo 3.0 o superior (consulte la
tabla en Wikipedia ) accelerate-examples : Kernel computacionales y aplicaciones que muestran el uso de Accelerate, así como un conjunto de pruebas de regresión (soporta el testing de funciones y prestaciones) Conversión entre formatos variados: accelerate-io : Para copiar datos directamente entre punteros raw accelerate-io-array : Arreglos inmutables accelerate-io-bmp : Archivos de imagen BMP no comprimidos accelerate-io-bytestring : Datos binarios compactos e inmutables accelerate-io-cereal : Serialización binaria de arreglos utilizando
cereal accelerate-io-JuicyPixels : Imágenes en varios formatos de píxel accelerate-io-repa : Otra biblioteca de Haskell para arreglos paralelos de alta prestación accelerate-io-serialise : Serialización binaria de arreglos utilizando
cereal accelerate-io-vector : Arreglos unidimensionales eficientes, tanto boxed como unboxed accelerate-fft : Implementación de la transformada de Fourier rápida, con enlaces FFI para implementaciones optimizadas accelerate-blas : Operaciones BLAS y LAPACK, con enlaces FFI para implementaciones optimizadas accelerate-bignum : Aritmética de enteros de anchura fija colour-accelerate : Representaciones de color en Accelerate (RGB, sRGB, HSV y HSL) containers-accelerate : Tipos de contenedores basados en hashing
gloss-accelerate : Genera imágenes
gloss de Accelerate
gloss-raster-accelerate : Renderizado paralelo de imágenes y animaciones raster hashable-accelerate : Una clase para tipos que pueden ser convertidos en un valor de hash lens-accelerate : Operadores Lens para tipos de Accelerate linear-accelerate : Espacios vectoriales lineales en Accelerate mwc-random-accelerate : Genera arreglos de Accelerate llenos con números pseudorrandómicos de alta calidad
Comentarios (0)
Login or Register to apply