Publications
We have published a number of research papers on Futhark, and hopefully more will follow in the future. They are presented below in reverse chronological order.
Papers on language design and implementation
AUTOMAP: Inferring Rank-Polymorphic Function Applications with Integer Linear Programming. Robert Schenck, Nikolaj Hey Hinnerskov, Troels Henriksen, Magnus Madsen, Martin Elsman. OOPSLA 24 (pdf, blog).
Reverse-Mode AD of Multi-Reduce and Scan in Futhark. Lotte M. Bruun, Ulrik S. Larsen, Nikolaj H. Hinnerskov and Cosmin E. Oancea. IFL 23 (publication rights licensed to ACM, doi, author pdf copy, bib)
A Comparison of OpenCL, CUDA, and HIP as Compilation Targets for a Functional Array Language. Troels Henriksen. FProPer 2024 (pdf, blog).
Static and Dynamic Analyses for Efficient GPU Execution. Philip Munksgaard. PhD thesis, 2023. (pdf, bib).
Shape-Constrained Array Programming with Size-Dependent Types. Lubin Bailly, Troels Henriksen, Martin Elsman. FHPNC 23 (pdf, bib).
Compiling a Functional Array Language with Non-Semantic Memory Information. Philip Munksgaard, Cosmin Oancea, Troels Henriksen. IFL 22 (pdf, bib).
Memory Optimizations in an Array Language. Philip Munksgaard, Troels Henriksen, Ponnuswamy Sadayappan, Cosmin Oancea. SC 22 (pdf, bib, artifact, blog (1), blog (2))
AD for an Array Language with Nested Parallelism. Robert Schenck, Ola Rønning, Troels Henriksen, Cosmin Oancea. SC 22 (pdf, bib, artifact)
Dataset Sensitive Autotuning of Multi-Versioned Code based on Monotonic Properties. Philip Munksgaard, Svend Lund Breddam, Troels Henriksen, Fabian Cristian Gieseke, Cosmin Oancea. TFP ’21 (pdf, bib, best paper award).
Towards Size-Dependent Types for Array programming. Troels Henriksen, Martin Elsman. ARRAY ’21 (pdf, bib).
Compiling Generalized Histograms for GPU. Troels Henriksen, Sune Hellfritzsch, Ponnuswamy Sadayappan, Cosmin Oancea. SC ’20 (pdf, bib, artifact).
Bounds Checking on GPU. Troels Henriksen. HLPP ’20 (pdf, bib).
Compositional Deep Learning in Futhark. Duc Minh Tran, Troels Henriksen, Martin Elsman. FHPNC ’19 (pdf, bib, code).
Data-Parallel Flattening by Expansion. Martin Elsman, Troels Henriksen, Niels G. W. Serup. ARRAY ’19 (pdf, bib).
Incremental Flattening for Nested Data Parallelism. Troels Henriksen, Frederik Thorøe, Martin Elsman, Cosmin Oancea. PPOPP ’19 (pdf, bib, artifact, blog).
High-Performance Defunctionalisation in Futhark. Anders Kiel Hovgaard, Troels Henriksen, Martin Elsman. TFP ’18 (pdf, bib)
Static Interpretation of Higher-Order Modules in Futhark. Martin Elsman, Troels Henriksen, Danil Annenkov, Cosmin Oancea. ICFP ’18 (pdf, bib)
Modular Acceleration: Tricky Cases of Functional High-Performance Computing. Troels Henriksen, Martin Elsman, Cosmin Oancea. FHPC ’18 (pdf, bib).
Design and Implementation of the Futhark Programming Language. Troels Henriksen. PhD thesis (pdf, bib).
Strategies for Regular Segmented Reductions on GPU. Rasmus Wriedt Larsen, Troels Henriksen. FHPC ’17 (pdf, bib).
Futhark: Purely Functional GPU-Programming with Nested Parallelism and In-Place Array Updates. Troels Henriksen, Niels G. W Serup, Martin Elsman, Fritz Henglein, Cosmin Oancea. PLDI ’17 (pdf, bib, artifact).
APL on GPUs - A TAIL from the Past, Scribbled in Futhark. Troels Henriksen, Martin Dybdal, Henrik Urms, Anna Sofie Kiehn, Danil Gavin, Hjalte Abelskov, Martin Elsman, Cosmin Oancea. FHPC ’16 (pdf, bib, artifact).
Design and GPGPU Performance of Futhark’s Redomap Construct. Troels Henriksen, Ken Friis Larsen, Cosmin Oancea. ARRAY ’16 (pdf, bib, artifact)
Size Slicing - A Hybrid Approach to Size Inference in Futhark. Troels Henriksen, Martin Elsman, Cosmin Oancea. FHPC ’14 (pdf, bib).
Bounds Checking: An Instance of Hybrid Analysis. Troels Henriksen, Cosmin Oancea. ARRAY ’14 (pdf, bib)
A T2 Graph-Reduction Approach To Fusion. Troels Henriksen, Cosmin Oancea. FHPC ’13 (pdf, bib)
Application Papers
These papers are not about Futhark as a language or compiler, but use it to build or show something.
- Gusten Isfeldt, Fredrik Lundell, Jakob Wohlert: Interaction of complex particles: A framework for the rapid and accurate approximation of pair potentials using neural networks. Physical Review E 110, 2024. (pdf, bib)
- Wojciech Michal Pawlak: Accelerated Financial Algorithms Derivative Pricing and Risk Management Applications. PhD thesis. May 2021 (pdf, bib).
- Cosmin Oancea, Ties Robroek, Fabian Gieseke: Approximate Nearest-Neighbour Fields via Massively-Parallel Propagation-Assisted K-D Trees. MLDB’20. (pdf, bib).
- Fabian Geseke, Sabina Rosca, Troels Henriksen, Jan Verbesselt, Cosmin Oancea: Massively-Parallel Change Detection for Satellite Time Series Data with Missing Values. ICDE’20. (pdf, bib)
- Wojciech Michal Pawlak, Martin Elsman, Cosmin Eugen Oancea: A Functional Approach to Accelerating Monte Carlo based American Option Pricing. IFL’19. (pdf, bib)
Selected Student Projects
Kristoffer August Kortbæk and Rune Ejnar Bang Lejbølle: Utilizing Tensor Cores in Futhark, MSc thesis, DIKU, January 2025. (pdf)
Therese Lyngby, William Henrich Due: The Worlds Best Futhark Formatter, MSc project, DIKU, November 2024. (pdf)
Marcus Jensen: Not-Quite-Supersonic AD: Implementing forward and reverse mode automatic differentiation in the Futhark interpreter, BSc thesis, DIKU, August 2024 (pdf)
Anders L. Holst: Optimizing Tensor Contractions for GPU Execution in Futhark, MSc thesis, DIKU, June 2024 (pdf)
Thorbjørn Bülow Bringgaard: Efficient Big Integer Arithmetic Using GPGPU, MSc thesis, DIKU, June 2024 (pdf)
Sebastian Paarmann: A WebGPU backend for Futhark, MSc thesis, DIKU, June 2024 (pdf)
Victor Alexander Schmidt: Data-parallel Construction of Interval Trees and Range Trees, BSc thesis, DIKU, June 2024 (pdf)
Christian Påbøl and Anders Holst: Two optimizations to GPU code generation in the Futhark compiler, MSc project, DIKU, February 2024 (pdf)
Christian Marslev and Jonas Grønborg: Efficient Sequentialization of Parallelism, MSc thesis, DIKU, February 2024 (pdf)
Bjarke Pedersen, Oscar Nelin: General Array Locality Optimization by Permutation (GALOP), MSc thesis, DIKU, January 2024 (pdf)
Nina Andrup Pedersen, Jakob Schneider Villumsen: ZKBoo on the GPU: Better soundness errors for a little extra, BSc thesis, AU, July 2023 (pdf).
Lars Jensen, Chris Oliver Paulsen, Julian Jørgensen Teule: Translating Concepts of the Futhark Programming Language into an Extended π-Calculus, MSc thesis, AAU, June 2023. (pdf)
William Henrich Due: Parallel Parsing using Futhark, BSc thesis, DIKU, June 2023 (pdf)
Rune Nielsen: Implementation of Graph Algorithms in Futhark, BSc thesis, DIKU, June 2023 (pdf)
Cornelius Sevald-Krause: Flattening Irregular Nested Parallelism in Futhark, BSc thesis, DIKU, June 2023 (pdf)
Kasper Unn Weihe: Convex Optimization and Parallel Computing for Portfolio Optimization, MSc thesis, DIKU, June 2023. (pdf)
Tjørn Lynghus: Data-parallel Implementation of Randomized Approximate Nearest Neighbours, BSc thesis, DIKU, June 2023. (pdf)
Jóhann Utne and Henriette Naledi Winther Hansen: Solving TSP on the GPU based on heuristic algorithms, BSc thesis, DIKU, June 2023. (pdf)
Peter Kanstrup Larsen: Application of Probabilistic Machine Learning Methods for Protein Generation, MSc thesis, DIKU, June 2023. (pdf)
Emil Vilandt Rasmussen: Sparse Approximate Inverse - A Massively Parallel Implementation, BSc thesis, DIKU, June 2023. (pdf)
Caroline Amalie Kierkegaard and Mikkel Willen: Parallel Implementation of the SPAI algorithm, BSc thesis, DIKU, June 2023. (pdf)
Peter Kanstrup Larsen: Benchmarking Futhark-AD using MINPACK-2, 7.5 ECTS Project, DIKU, University of Copenhagen, January 2023. (pdf)
Søren Brix: Reverse mode automatic differentiation of histograms in Futhark, MSc thesis, DIKU, University of Copenhagen, July 2022. (pdf)
Gilli Reynstind Fjallstein: Extending automatic differentiation for an array language with nested parallelism, Msc thesis, DIKU, University of Copenhagen, July 2022. (pdf)
Lotte Bruun and Ulrik Larsen: Reverse Automatic Differentiation in Futhark, MSc thesis, DIKU, University of Copenhagen, July 2022. (pdf)
Philip Jon Børgesen: Reducing Synchronous GPU Memory Transfers. MSc thesis. Department of Computer Science, University of Copenhagen. July 2022. (pdf)
W. Pema N. H. Malling, Louis Marott Normann, Oliver B. K. Petersen, Kristoffer A. Kortbæk: Extending Futhark’s multicore C backend to utilize SIMD using ISPC. BSc thesis. Department of Computer Science, University of Copenhagen. June 2022. (pdf)
Aleksander Junge: Reactive Benchmarking. BSc thesis. Department of Computer Science, University of Copenhagen. June 2022. (pdf)
Amar Topalovic, Walter Restelli-Nielsen, Kristian Olesen: Multiple-precision Integer Arithmetic. DPP final project. January 2022. (pdf)
Andreas Nicolaisen: Using Automatic Differentiation to Find Gradients for Recurrent Neural Networks in Futhark. MSc thesis. Department of Computer Science, University of Copenhagen. January 2022. (pdf)
Kristian Knudsen Olesen: Extracting Certified Futhark Code from Coq. BSc thesis. Department of Computer Science, University of Copenhagen. November 2021. (pdf)
Till Severin Grenzdörffer: Unsupervised Clustering of Sparse Data in Futhark. MSc thesis. Department of Computer Science, University of Copenhagen. September 2021. (pdf)
Baptiste Coudray: MPI-Futhark: Distributed High-Performance Computing For People. BSc thesis. HEPIA. August 2021. (pdf)
Philip Rajani Lassen: WebAssembly Backends for Futhark. MSc thesis. Department of Computer Science, University of Copenhagen. July 2021. (pdf)
Nikolaj Hey Hinnerskov: Massively Parallel Selection of Stable History Period in Change Detection for Time Series Data with Missing Values. BSc thesis. Department of Computer Science, University of Copenhagen. June 2021. (pdf)
Kristian Bøjer Andreasen: Data-Parallel Coherency Sensitive Hashing for Approximate Nearest Neighbour Fields. MSc thesis. Department of Computer Science, University of Copenhagen. June 2021. (pdf)
Christian Charlie Virt, Jonathan Wraa-Hansen: Optimisation and GPU code generation of Stencils for Futhark. June 2021. (pdf).
Maya Saietz: Code Generation for Stencils in Futhark. June 2021. (pdf).
Morten Tychsen Clausen: Regular Segmented Single-pass Scan in Futhark. June 2021. (pdf)
Kasper Unn Weihe, Kristian Quirin Hansen, Peter Kanstrup Larsen: Linear Algebra in Futhark. Department of Computer Science, University of Copenhagen. February 2021. (pdf)
Till Severin Grenzdörffer: Accelerating Ocean Modelling: Adressing performance bottlenecks of the ocean modelling framework Veros. MSc project, Department of Computer Science, University of Copenhagen. January 2021. (pdf)
Kristian Høi: Parallel implementations of machine learning algorithms: Gradient boosted decision trees. MSc Thesis, Department of Computer Science, University of Copenhagen. January 2021. (pdf)
Andreas Nicolaisen, Marco Aslak Persson: Implementing Single-Pass Scan in the Futhark Compiler. MSc project. Department of Computer Science, University of Copenhagen. November 2020. (pdf)
Duc Minh Tran: Multicore backend for Futhark. MSc Thesis. Department of Computer Science, University of Copenhagen. September 2020. (pdf)
Emil Un Weihe: Support Vector Machines in Futhark. MSc thesis. Computer Science, University of Copenhagen. September 2020. (pdf)
Michaël El Kharroubi: Highly parallel algorithms on GPU with Futhark: Practical case with block ciphers. BSc thesis. HEPIA. August 2020. (pdf)
Johan Johansson, Ari von Nordenskjöld: Ray Tracing for Sensor Simulation using Parallel Functional Programming. MSc thesis. Chalmers University of Technology. June 2020. (pdf)
Ulrik Elmelund Petersen: Optimizing the kNN algorithm for GPGPUs in Futhark. BSc thesis. Computer Science, University of Copenhagen. June 2020. (pdf)
Mathias Friis Rasmussen, Jonas Kristensen, Jens Nissen-Juul Sørensen, Christian Dybdahl Troelsen: FutSpace - A Parallelizable Implementation of the Voxel Space Rendering Algorithm. BSc thesis. Computer Science, University of Copenhagen. June 2020. (pdf)
Ulrik Stuhr Larsen, Lotte Maria Bruun: A Language for Parallel Generation of L-Systems. BSc thesis. Computer Science, University of Copenhagen. June 2020. (pdf)
Æmilie Cholewa-Madsen, Anders Lietzen Holst: Teaching the Futhark compiler block and register tiled matrix multiplication. BSc thesis. Computer Science, University of Copenhagen. June
- (pdf)
Robert Schenck: Sum types in Futhark. MSc thesis. Computer Science, University of Copenhagen. December 2019. (pdf)
Henrik Urms, Anna Sofie Kiehn: Refinement types in Futhark. MSc thesis. Computer Science, University of Copenhagen. September 2019. (pdf)
Steffen Holst Larsen: Multi-GPU Futhark Using Parallel Streams. MSc thesis. Department of Computer Science, University of Copenhagen. September 2019. (pdf)
Svend Lund Breddam: Futhark Autotuners for Incremental Flattening. MSc thesis. Department of Computer Science, University of Copenhagen. September 2019. (pdf)
Steffen Holst Larsen: Futhark Vulkan Backend. MSc project. Department of Computer Science, University of Copenhagen. January 2019. (pdf)
Jakob Stokholm Bertelsen: Implementing a CUDA Backend for Futhark. BSc thesis. Department of Computer Science, University of Copenhagen. January 2019. (pdf)
Sune Hellfritzsch: Efficient Histogram Computation on GPGPUs. MSc thesis. Department of Computer Science, University of Copenhagen. October 2018. (pdf)
Duc Minh Tran: Implementation of a deep learning library in Futhark. BSc Thesis. Department of Computer Science, University of Copenhagen. August 2018. (pdf)
Mikkel Storgaard Knudsen: FShark: Futhark programming in FSharp. MSc thesis. Department of Computer Science, University of Copenhagen. August 2018. (pdf)
Marek Hlava and Martin Metaksov: Accelerated Interest Rate Option Pricing using Trinomial Trees. MSc thesis. Department of Computer Science, University of Copenhagen. August 2018. (pdf)
Kasper Abildtrup Hansen: FFT Generator in Futhark: A prototype Futhark library using FFTW technniques. MSc project. Department of Computer Science, University of Copenhagen. June 2018. (pdf)
Frederik Thorøe: Auto-tuning of threshold-parameters in Futhark. BSc thesis. Department of Computer Science, University of Copenhagen. June 2018. (pdf)
Mette Marie Kowalski: Designing and Accelerating a Generic FFT Library in Futhark. BSc thesis. Department of Computer Science, University of Copenhagen. June 2018. (pdf)
Anders Kiel Hovgaard: Higher-order functions for a high-performance programming language for GPUs. MSc project. Department of Computer Science, University of Copenhagen. May 2018. (pdf)
Niels G. W. Serup: Memory Block Merging in Futhark. MSc thesis. Department of Computer Science, University of Copenhagen. November 2017. (pdf)
Rasmus Wriedt Larsen: Generating Efficient Code for Futhark’s Segmented Redomap. MSc thesis. Department of Computer Science, University of Copenhagen. March 2017. (pdf)
Niels G. W. Serup: Extending Futhark with a write construct. MSc project. Department of Computer Science, University of Copenhagen. June 2016. (pdf).