Das Futhark-Programmierparadigma
Hochleistungs-reine funktionale parallele Array-Verarbeitung
Übersicht
Beispiele
Dokumentation
Veröffentlichungen
Los geht's!
Beteilige dich
Blog
Fork mich auf GitHub
Futhark by Example
Das folgende ist ein praktisches Beispiel für Futhark durch eine Sammlung von kommentierten Programmen, die in etwa zunehmender Komplexität angeordnet sind. Du kannst die Programme in den Interpreter laden, um sie auszuführen. Für eine konventionelle Einführung in das Programmierparadigma solltest du Parallel Programming in Futhark wählen.
Für weitere Beispiele kannst du unsere implementierten Benchmark-Tests ansehen. Wir halten auch eine Liste von Projekten, die Futhark verwenden.
Einige der Beispiele verwenden Direktiven für die Erstellung von Grafiken oder die Bildbearbeitung.
Grundlegende Programmierparadigmen
Grundlegende Verwendung mit der Fakultätsfunktion
Primäre Werte
Umwandlung eines Wertes in einen anderen Typ
Mathematische Funktionen
Funktionen
Arrays
Mindest- und Maximalwerte
Typzuweisung
Grundlegender Paralleismus
Tupel und Register
Größenkoerzisionen
Range
Backtick-Operatoren
Scans und Reduzierungen
Parametrischer Polymorphismus
Polymorphe Mindest- und Maximalwerte
Gather und Scatter
Exklusive Scans
Exklusive Präfixsumme
Pipe-Operatoren
Komplexe Ränge
Summengruppen und Musterzusammenpassung
Schleifen
Flattening und Unflattening von Arrays
In-Place-Updates
Programmiermethoden
Benchmarking
Zählung der Elemente, die eine Eigenschaft erfüllen
Index des kleinsten Elements (argmin)
Reduzierung des Ergebnisses eines Filters
Scattering des Ergebnisses eines Filters
Größenparameter
Matrixmultiplikation
Paarweise L₁-Distanzen
Äußeres Produkt
Vergleich von Arrays für Gleichheit
Suchen
Optionstyp
Histogrammrechnung
Mittelwert
Mediane
Umschlag von zwei Arrayelementen
Ganzzahllogarithmus
Radixsort
Radixsort nach Schlüssel
Mergesort
Doppelte Elemente entfernen
Abstrakte Datentypen
Komplexe Zahlen
Assoziativitätsprüfung
Reduzierung oder Scanning ohne neutrales Element
Hohlräume
Kahansche Summierung
Zufallszahlen
Gaußscher Blur (mit Python-Integration)
Dreidimensionale Vektoren
Fiktive Nomen-Typisierung
Dreiecksmatrizen
Binäre Suche
AD mit Dualzahlen
Varianz
Paranthesenübereinstimmung
Polynomauswertung
Linienpassung
Decodierung von MNIST-Datendateien
Automatische Differenzierung
Automatische Differenzierung in direkter Form
Automatische Differenzierung in umgekehrter Form
Newtons Methode
Futhark Literarisch
Grundlegende Verwendung von Futhark Literarisch
Videoerstellung mit Futhark Literarisch
Datei-Lese- und -Schreibeoperationen in Futhark Literarisch
Zeichnen
Futhark Literarisch ermöglicht den direkten Einsatz von gnuplot. Diese Beispiele zeigen einfache und gängige Fälle.
Zeichnen eines Histogramms
Beispiele von Dex
Die folgenden Beispiele wurden von Dex, einem funktionalen Array-Langage mit abhängiger Typisierung, übernommen, das einen anderen Ansatz für die Beschreibung des Loop-Verarbeitungsprozesses verwendet. Wir haben versucht, den ursprünglichen Namensschema und Programmierstil beizubehalten.
Prelude
Mandelbrot-Menge
Multi-Schritt-Ray-Tracing
Monte-Carlo-Schätzungen von Pi
Brownian-Motion
Sierpinski-Triangel
Außenbeispiele
OCaml-GPU-Wortzähle-Beispiel, das Futhark aufruft.
Projekte, die Futhark verwenden
Die meisten Futhark-Code, der geschrieben wurde, ist wahrscheinlich immer noch der Futhark-Test- und Benchmark-Suite. Es gibt jedoch einige Programme, die in Futhark geschrieben wurden, weil es ein gutes Werkzeug für das Projekt war und nicht nur, um den Compiler zu testen. Eine möglicherweise unvollständige Liste:
Diving Beet ist ein Sandspiel, das fällt, das ein einfacher Partikelsimulator ist. Sein Hauptzweck ist es, schöne Effekte zu erzeugen. Es gibt einen Blogbeitrag mit Details und einem Video.
Futball ist ein Spiel, in dem man Bälle vermeiden muss. Das Render-Engine ist ein Ray-Tracer, der in Futhark geschrieben wurde.
Futcam ist eine Anwendung, die interaktive Filter auf einen Webcam-Stream anwendet. Futhark wird verwendet, um die Filter zu implementieren.
Futracer ist ein Ray-Tracer, der mit einer Brute-Force-Methode geschrieben wurde und in Futhark implementiert ist.
Futswirl ist ein Fraktalgenerator, der auf iterierten Funktionssystemen basiert.
Neptune ist eine Implementierung der Poseidon-Hash-Funktion, die für Filecoin optimiert wurde, wobei die GPU-Teile in Futhark implementiert wurden.
Palathark ist eine Implementierung von Futhark des Lattice-Boltzmann-Verfahrens.
Ray Tracing in One Weekend in Futhark und R
Kommentare (0)
Login or Register to apply