Generating performance portable code using rewrite rules: from high-level functional expressions to high-performance OpenCL code
A domain-specific approach to heterogeneous parallelism