Le paradigme de programmation Futhark
Programmation parallèle d'arrays de haute performance, purement fonctionnelle
Résumé
Exemples
Documentation
Publications
Allons-y!
Participez
Blog
Fork moi sur GitHub
Futhark by Example
Le suivant est un exemple pratique de Futhark à travers une collection de programmes commentés, classés par ordre de complexité croissante. Vous pouvez charger les programmes dans l'interpréteur pour les exécuter. Pour une introduction conventionnelle au paradigme de programmation, choisissez Parallel Programming in Futhark.
Pour plus d'exemples, consultez nos benchmarks implementés. Nous maintenons également une liste de projets qui utilisent Futhark.
Certains des exemples utilisent des directives pour la création de graphiques ou la rendu d'images.
Caractéristiques du paradigme de programmation de base
Utilisation de base avec la fonction de factorial
Valeurs premières
Conversion d'un valeur à un type différent
Fonctions mathématiques
Fonctions
Tableaux
Minimum et maximum
Attribution de type
Parallélisme de base
Tuplets et registres
Coercions de taille
Rang
Opérateurs backtick
Scans et réductions
Polymorphisme paramétrique
Minimum et maximum polymorphes
Récupération et diffusion
Scans exclusifs
Somme exclusive
Opérateurs pipe
Rangs complexes
Types de somme et correspondance de motifs
Boucles
Flattening et unflattening de tableaux
Mises à jour en place
Méthodes de programmation
Benchmarking
Comptage des éléments qui satisfont une propriété
Index de l'élément le plus petit (argmin)
Réduction du résultat d'un filtre
Diffusion du résultat d'un filtre
Paramètres de taille
Multiplication de matrices
Distances L₁ paire
Produit externe
Comparaison de tableaux pour égalité
Recherche
Type optionnel
Calcul de histogrammes
Moyenne mobile
Moyennes
Échange de deux éléments d'un tableau
Logarithme entier
Tri de radix
Tri de radix par clé
Tri de fusion
Suppression de doubles éléments
Types de données abstraites
Nombres complexes
Vérification d'associativité
Réduction ou scan sans élément neutre
Hauts
Somme de Kahan
Nombres aléatoires
Filtre gaussien (avec intégration de Python)
Vecteurs tridimensionnels
Typification nominale fictive
Matrices triangulaires
Recherche binaire
AD avec nombres duaux
Varianza
Correspondance de parenthèses
Évaluation de polynômes
Adaptation de ligne
Décodage de fichiers de données MNIST
Dérivation automatique
Dérivation automatique en mode direct
Dérivation automatique en mode inverse
Méthode de Newton
Futhark littéraire
Utilisation de base de Futhark littéraire
Création de vidéos avec Futhark littéraire
Lecture et écriture de fichiers en Futhark littéraire
Dessin
Futhark littéraire permet l'utilisation directe de gnuplot. Ces exemples montrent des cas simples et courants.
Dessin d'un histogramme
Exemples de Dex
Les exemples suivants ont été portés de Dex, un langage de programmation de type dépendant fonctionnel pour tableaux qui utilise un autre approche pour décrire le processus de traitement de boucles. Nous avons essayé de maintenir le schéma de nommage original et le style de programmation.
Prelude
Ensemble de Mandelbrot
Ray-tracing multi-pas
Estimations de Monte-Carlo de pi
Mouvement brownien
Triangle de Sierpinski
Exemples externes
Exemple de comptage de mots OCaml-GPU appelant Futhark.
Projets utilisant Futhark
La plupart du code Futhark écrit est probablement toujours la suite de tests et de benchmarks de Futhark. Cependant, il existe quelques programmes qui ont été écrits en Futhark parce qu'il était un bon outil pour le travail et non seulement pour tester le compilateur. Une liste peut-être incomplète:
Diving Beet est un jeu de sable qui tombe, qui est un type de jeu de simulateur de particules simple. Son but principal est de produire des effets beaux. Il y a un article de blog avec des détails et un vidéo.
Futball est un jeu pour éviter d'être frappé par des bâtons. Le moteur de rendu est un ray-tracer écrit en Futhark.
Futcam est une application qui applique des piles de filtres configurables interactivement à un flux de webcam. Futhark est utilisé pour implémenter les filtres.
Futracer est un ray-tracer de force brute assez lent écrit en Futhark.
Futswirl est un générateur de fractales basé sur des systèmes de fonction itérée.
Neptune est une implémentation de la fonction de hachage Poseidon optimisée pour Filecoin, où les parties GPU ont été implémentées en Futhark.
Palathark est une implémentation de Futhark du méthode de Boltzmann de réseau.
Ray Tracing in One Weekend in Futhark et R
Commentaires (0)
Login or Register to apply