  Efficient parallelization of algorithms on general-purpose GPUs is essential
in many areas today. However, it is a non-trivial task for software engineers
to utilize GPUs to improve the performance of high-level programs in general.
Although many domain-specific approaches are available for GPU acceleration, it
is difficult to accelerate existing high-level programs without rewriting parts
of the programs using low-level GPU code. We present a compiler implementation
using an alternative approach called expression acceleration. This approach
marks expressions for acceleration, and the compiler automatically infers which
dependent code needs to be accelerated. We design and implement a compiler
supporting expression acceleration for a statically typed functional language
and evaluate its applicability and performance.
