Volver a Noticias
Desarrollo

Accelerate

16 de mayo de 2026Fuente

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