Abstract
The processing platforms of contemporary mobile devices are commonly built around System-on-Chip (SoC) solutions that contain general purpose processor cores (GPPs), digital signal processors, accelerator circuits, and possibly a graphics processing unit (GPU) as processing resources. Software design for such SoCs can be very time-consuming, as the various processing resource types (e.g. GPPs and GPUs) conventionally require different languages to be programmed. For example, GPUs are programmed via CUDA or OpenCL, whereas GPPs are commonly programmed in C++. As a consequence, code that has originally been written for one processing resource, cannot necessarily be executed on a different processing resource type. This paper presents a novel design flow that addresses this code portability challenge. On a high level the application is described using a dataflow graph, whereas the detailed functionality of application components is written in Halide, a performance portable language that provides code generation for OpenCL, CUDA, HVX DSP, ARM and x86 targets. The proposed design flow is built around PRUNE, a recent dataflow programming framework. The functionality of the design flow is presented with three case study applications, and the measurements show an average speedup of $9.3\times$ over single-core $\mathbf{C}$ code when the proposed design flow is used.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have