Seeing the Futures: Profiling Shared-Memory Parallel Racket
James Swaine, Burke Fetscher, Vincent St-Amour, Robert Bruce Findler, and Matthew Flatt
This paper presents the latest chapter in our adventures coping with a large, sequentially-tuned,
legacy runtime system in today's parallel world. Specifically, this paper introduces our new graphical
visualizer that helps programmers understand how to program in parallel with Racket's futures and, to some
extent, what performs well in sequential Racket.
Overall, our experience with parallelism in Racket is that we can achieve reasonable parallel performance in
Racket without sacrificing the most important property of functional programming language implementations,
namely safety. That is, Racket programmers are guaranteed that every Racket primitive (and thus
all functions built using Racket primitives) will either behave properly, or will signal an error
explaining what went wrong.
That said, however, it is challenging to understand how to best use futures to achieve interesting speedups,
and the visualizer is our attempt to more widely disseminate key performance details of
the runtime system in order to help Racket programmers maximize performance.
The paper's code examples and timing scripts are available here:
FFT's and timing experiments