Futhark: A High-Performance Purely Functional Array Language
summary
Futhark is a purely functional array language that supports regular nested data-parallelism. The talk presents using Futhark to implement two nontrivial applications—computing cluster means and generating Sobol sequences—showing how the language expresses both fine-grained parallelism and efficient sequential structure to let the compiler choose code organization. It also reports performance results from running Futhark-compiled benchmarks on two different GPUs.
AI-written summary · about
chapters (17)
- 0:00Intro
- 0:13Why GPUs?
- 1:52Futhark at a Glance Small eagerly evaluated pure functional language with data paralel looping constructs Syntax is a combination of
- 3:42Uniqueness Types
- 5:47Uniqueness Type Annotations
- 6:54The Problem
- 7:32The Solution (from Wikipedia)
- 8:07Computing Cluster Means: the Ugly
- 9:35Computing Cluster Sizes: the Bad Use a parallel nap to compute increments, and then a reduce of these increments
- 10:29One Futhark Design Principle
- 11:07Validity of Chunking
- 11:53Computing cluster sizes: the Good
- 12:55GPU Code Generation for streamRed
- 13:59After IRWIM
- 15:28Performance of cluster means computation
- 16:39Speedup Over Hand-Written Rodinia OpenCL Code on NVIDIA and AMD GPUs
- 17:50Conclusions
related talks
32m"Making Elm Talk to Your Personal Supercomputer"
02h 50mFunctional Array Funhouse Intensive - Part 3 of 5
30mData-Parallel Flattening by Expansion
14mAchieving High-Performance the Functional Way - A Functional Pearl on Expressing High...
58mFunctional Array Funhouse Intensive - Part 2 of 5
38mA Ray of Hope: Array Programming for the 21st Century
38mCuneiform: A Functional Workflow Language Implementation in Erlang
34mBuilding private and secure applications easily.
