El lenguaje de programación Futhark
Programación de arrays paralelos de alto rendimiento, puramente funcional
Resumen
Ejemplos
Documentación
Publicaciones
¡Vamos a ir rápido!
Participa
Blog
Fork me en GitHub
Futhark by Example
El siguiente es un ejemplo práctico de Futhark a través de una colección de programas comentados, ordenados en orden de complejidad creciente. Puedes cargar los programas en el intérprete para experimentar con ellos. Para una introducción convencional al lenguaje, Parallel Programming in Futhark puede ser una mejor opción.
Para más ejemplos, puedes consultar nuestros benchmarks implementados. Además, mantenemos una lista de proyectos que utilizan Futhark.
Algunos de los programas de ejemplo utilizan directivas para la creación de gráficos o la renderización de imágenes.
Características del lenguaje de base
Uso de base con la función de factorial
Valores primordiales
Conversión de un valor a un tipo diferente
Funciones matemáticas
Funciones
Arreglos
Mínimo y máximo
Asignación de tipo
Paralelismo de base
Tuplas y registros
Coerciones de tamaño
Rango
Operadores backtick
Escaneos y reducciones
Polimorfismo paramétrico
Mínimo y máximo polimórficos
Recolección y dispersión
Escaneos exclusivos
Suma exclusiva
Operadores pipe
Rangos complejos
Tipos de suma y coincidencia de patrones
Ciclos
Flattening y unflattening de arreglos
Actualizaciones en lugar
Técnicas de programación
Benchmarking
Conteo de elementos que satisfacen una propiedad
Índice del elemento más pequeño (argmin)
Reducción del resultado de un filtro
Dispersión del resultado de un filtro
Parámetros de tamaño
Multiplicación de matrices
Distancias L₁ pares
Producto externo
Comparación de arreglos para igualdad
Buscar
Tipo de opción
Cálculo de histogramas
Media móvil
Medias
Intercambio de dos elementos de un arreglo
Logaritmo entero
Ordenamiento radice
Ordenamiento radice por clave
Ordenamiento de fusión
Eliminación de duplicados
Tipos de datos abstractos
Números complejos
Verificación de asociatividad
Reducción o escaneo sin un elemento neutro
Huecos
Suma de Kahan
Números aleatorios
Blur gaussiano (con integración de Python)
Vectores tridimensionales
Tipificación nominal finta
Matrices triangulares
Búsqueda binaria
AD con números duales
Varianza
Coincidencia de paréntesis
Evaluación de polinomios
Ajuste de línea
Decodificación de archivos de datos MNIST
Diferenciación automática
Diferenciación automática en modo directo
Diferenciación automática en modo inverso
Método de Newton
Futhark literario
Uso básico de Futhark literario
Generación de videos con Futhark literario
Lectura y escritura de archivos en Futhark literario
Dibujar
Futhark literario permite el uso directo de gnuplot. Estos ejemplos muestran casos simples y comunes.
Dibujar un histograma
Ejemplos de Dex
Los siguientes ejemplos han sido portados de Dex, un lenguaje de programación de tipo dependiente funcional para arreglos que utiliza un enfoque diferente para describir el procesamiento de bucles. Hemos intentado mantener el esquema de denominación original y el estilo de programación.
Prelude
Conjunto de Mandelbrot
Rayo de trazado a varios pasos
Estimaciones de Monte Carlo de pi
Moto browniano
Triángulo de Sierpinski
Ejemplos externos
Ejemplo de conteo de palabras OCaml-GPU llamando a Futhark.
Proyectos que utilizan Futhark
La mayoría del código Futhark escrito es probablemente todavía el conjunto de pruebas y benchmarks de Futhark mismo. Sin embargo, hay algunos programas que han sido escritos en Futhark porque era un buen herramienta para el trabajo y no solo para probar el compilador. Una lista posiblemente incompleta:
Diving Beet es un juego de arena que cae, que es un tipo de juego de simulador de partículas simple. Su propósito principal es producir efectos bonitos. Hay un post del blog con detalles y un video.
Futball es un juego para evitar ser golpeado por bolas. El motor de renderizado es un rayo de trazado escrito en Futhark.
Futcam es una aplicación que aplica pilas de filtros configurables interactivamente a un flujo de webcam. Futhark se utiliza para implementar los filtros.
Futracer es un rayo de trazado de fuerza bruta bastante lento escrito en Futhark.
Futswirl es un generador de fractales basado en sistemas de función iterada.
Neptune es una implementación de la función hash Poseidon optimizada para Filecoin, donde las partes GPU han sido implementadas en Futhark.
Palathark es una implementación de Futhark del método de Boltzmann de red.
Ray Tracing in One Weekend in Futhark y R
Comentarios (0)
Login or Register to apply