  Heterogeneous computing environments combining CPU and GPU resources provide
a great boost to large-scale scientific computing applications. Code generation
utilities that partition the work into CPU and GPU tasks while considering data
movement costs allow researchers to more quickly and easily develop
high-performance solutions, and make these resources accessible to a larger
user base.
  We present developments for a domain-specific language (DSL) and code
generation framework for solving partial differential equations (PDEs). These
enhancements facilitate GPU-accelerated solution of the Boltzmann transport
equation (BTE) for phonons, which is the governing equation for simulating
thermal transport in semiconductor materials at sub-micron scales. The solution
of the BTE involves thousands of coupled PDEs as well as complicated boundary
conditions and nonlinear processing at each time step. These developments
enable the DSL to generate configurable hybrid GPU/CPU code that couples
accelerated kernels with user-defined code. We observed performance
improvements of around 18X compared to a CPU-only version produced by this same
DSL with minimal additional programming effort.
