Torna alle Notizie
Sviluppo

Futhark by Example

16 maggio 2026Fonte

Il linguaggio di programmazione Futhark

Elaborazione di array paralleli di alto livello, puramente funzionale

Panoramica

Esempi

Documentazione

Pubblicazioni

Devi andare veloce!

Partecipa

Blog

Fork me su GitHub

Futhark by Example

Il seguente è un'introduzione pratica a Futhark attraverso una raccolta di programmi commentati, elencati in ordine di complessità crescente. Puoi caricare i programmi nell'interprete per eseguirli. Per un'introduzione convenzionale al linguaggio, Parallel Programming in Futhark potrebbe essere una scelta migliore.

Per ulteriori esempi, puoi consultare i nostri benchmark implementati. Inoltre, manteniamo una lista di progetti che utilizzano Futhark.

Alcuni dei programmi di esempio utilizzano direttive per la creazione di grafici o la rendering di immagini.

Caratteristiche del linguaggio di base

Uso di base con la funzione di fattoriale

Valori primordiali

Conversione di un valore in un tipo diverso

Funzioni matematiche

Funzioni

Array

Minimo e massimo

Assegnazione di tipo

Parallelo di base

Tupli e registri

Coercizioni di dimensione

Range

Operatori backtick

Scansioni e riduzioni

Polimorfismo parametrico

Minimo e massimo polimorfici

Raccolta e diffusione

Scansioni esclusive

Somma esclusiva

Operatori pipe

Range complessi

Tipi di somma e matching di pattern

Cicli

Flattening e unflattening di array

Aggiornamenti in loco

Tecniche di programmazione

Benchmarking

Conteggio degli elementi che soddisfano una proprietà

Indice dell'elemento più piccolo (argmin)

Riduzione del risultato di un filtro

Diffusione del risultato di un filtro

Parametri di dimensione

Moltiplicazione di matrici

Distanze L₁ pairwise

Prodotto esterno

Confronto di array per uguaglianza

Cerca

Tipo opzionale

Calcolo di histogrammi

Media mobile

Medie

Scambio di due elementi di un array

Logaritmo intero

Ordinamento radice

Ordinamento radice per chiave

Ordinamento merge

Rimozione di duplicati

Tipi di dati astratti

Numeri complessi

Verifica dell'associatività

Riduzione o scansioni senza un elemento neutro

Buchi

Somma di Kahan

Numeri casuali

Blur gaussiano (con integrazione di Python)

Vettori tridimensionali

Finta tipizzazione nominale

Matrici triangolari

Cerca binario

AD con numeri duali

Variance

Matching di parentesi

Evaluazione di polinomi

Adattamento di linea

Decodifica di file dati MNIST

Differenziazione automatica

Differenziazione automatica in modo diretto

Differenziazione automatica in modo inverso

Metodo di Newton

Futhark letterato

Uso di base di Futhark letterato

Generazione di video con Futhark letterato

Lettura e scrittura di file in Futhark letterato

Plotting

Futhark letterato consente l'uso diretto di gnuplot. Questi esempi mostrano casi semplici e comuni.

Plotting di un histogramma

Esempi da Dex

I seguenti esempi sono stati portati da Dex, un linguaggio di programmazione di tipo dipendente funzionale per array che utilizza un approccio diverso per descrivere il processamento dei loop. Abbiamo cercato di mantenere lo schema di denominazione originale e lo stile di programmazione.

Prelude

Set di Mandelbrot

Ray tracer a più passaggi

Stime di Monte Carlo di pi

Moto browniano

Triangolo di Sierpinski

Esempi esterni

Parola di conteggio OCaml-GPU esempio chiamando Futhark.

Progetti che utilizzano Futhark

La maggior parte del codice Futhark scritto è probabilmente ancora il test e il set di benchmark Futhark stesso. Tuttavia, ci sono alcuni programmi che sono stati scritti in Futhark perché era un buon strumento per il lavoro e non solo per testare il compilatore. Una lista forse incompleta:

Diving Beet è un gioco di sabbia che cade, che è un tipo di giocatore di simulatore di particelle semplice. Il suo scopo principale è produrre effetti belli. Ci sono un post del blog con dettagli e un video.

Futball è un gioco per evitare di essere colpito da palle. L'engine di rendering è un ray tracer scritto in Futhark.

Futcam è un'applicazione che applica pile di filtri configurabili interattivamente a un flusso di webcam. Futhark è utilizzato per implementare i filtri.

Futracer è un ray tracer di forza bruta abbastanza lento scritto in Futhark.

Futswirl è un generatore di frattali basato su sistemi di funzione iterata.

Neptune è un'implementazione della funzione hash Poseidon ottimizzata per Filecoin, dove le parti GPU sono state implementate in Futhark.

Palathark è un'implementazione di Futhark del metodo di Boltzmann a rete.

Ray Tracing in One Weekend in Futhark e R

Commenti (0)

Accedi o Registrati per candidarti