Workshop Program:

Abstract:&nbsp
As the computing world "goes multicore," high performance library
development finally becomes a nightmare. Optimal programs, and their
underlying algorithms, have to be adapted to take full advantage of
the platform¢s parallelism, memory hierarchy, and available
instruction set. To make things worse, the best implementations are
often platform-dependent and platforms are constantly evolving, which
quickly renders libraries obsolete. As a consequence, developers are
forced to permanently re-implement and re-optimize the same
functionality and often even revert to assembly coding just as 50
years ago.

A number of research efforts have started to address this problem in a
new area called Automatic Performance Tuning with the common goal to
rethink the way libraries are created. In this talk we present Spiral
(www.spiral.net), a program generation system for linear
transforms. Spiral generates highly optimized, platform-tuned
implementations of transforms directly from a problem
specification. For a user-specified transform, Spiral generates
alternative algorithms, optimizes them, compiles them into programs,
and "intelligently" searches for the best match to the computing
platform. The main idea behind Spiral is a mathematical, declarative
framework to represent algorithms and the use of rewriting systems to
generate and optimize algorithms at a high level of
abstraction. Optimization includes parallelization for vector
architectures, shared and distributed memory platforms, GPUs, and even
FPGAs. Experimental results show that the code generated by Spiral
competes with, and sometimes outperforms, the best available
human-written library code. Further, recent research shows that it may
be possible to extend Spiral into other domains such as coding or
linear algebra. As for the question in the title: Spiral shows that,
at least for well-understood problem domains, a positive answer may be
in reach.