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