Affiliation:
1. ETTI department, Politehnica University of Bucharest, Romania
Abstract
Compiling sequential C programs for Connex-S, a competitive, scalable and customizable, wide vector accelerator for intensive embedded applications with 32 to 4,096 16-bit integer lanes and a limited capacity local scratchpad memory, is challenging.
Our compiler toolchain uses the LLVM framework and targets OPINCAA, a JIT vector assembler and coordination C++ library for Connex-S accelerating computations for an arbitrary CPU. Therefore, we address in the compiler middle end aspects of efficient vectorization, communication, and synchronization. We perform quantitative static analysis of the program useful, among others, for the symbolic-size compiler memory allocator and the coordination mechanism of OPINCAA. We also discuss the LLVM back end for the Connex-S processor and the methodology to automatically generate instruction selection code for emulating efficiently arithmetic and logical operations for non-native types such as 32-bit integer and 16-bit floating-point.
By using JIT vector assembling and by encoding the vector length of Connex-S as a parameter in the generated OPINCAA program, we achieve vector-length agnosticism to support execution on distinct embedded devices, such as several digital cameras with different resolutions, each equipped with custom-width Connex-S accelerators meant to save energy for the image processing kernels.
Since Connex-S has a limited capacity local scratchpad memory of 256 KB normally, we present how we also use the PPCG C-to-C code generator to perform data tiling to minimize the total kernel execution time, subject to fitting larger program data in the local memory. We devise an accurate cost model for the Connex-S accelerator to choose optimal performance tile sizes at compile time.
We successfully compile several simple benchmarks frequently used, for example, in high-performance and computer vision embedded applications. We report speedup factors of up to 11.33 when running them on a Connex-S accelerator with 128 16-bit integer lanes w.r.t. the dual-core ARM Cortex A9 host clocked at a frequency 6.67 times higher, with a total of two 128-bit Neon SIMD units.
Publisher
Association for Computing Machinery (ACM)
Subject
Hardware and Architecture,Software
Reference98 articles.
1. 2020. LLVM Documentation: TableGen. Retrieved from http://llvm.org/docs/TableGen/. 2020. LLVM Documentation: TableGen. Retrieved from http://llvm.org/docs/TableGen/.
2. 2020. The Polyhedral Model. Retrieved from http://polyhedral.info. 2020. The Polyhedral Model. Retrieved from http://polyhedral.info.
3. 2017. Connex-S Accelerator Controller Specification. 2017. Connex-S Accelerator Controller Specification.
4. 2020. The Connex-S OPINCAA LLVM compiler. Retrieved from http://gitlab.dcae.pub.ro/research/ConnexRelated/OpincaaLLVM. 2020. The Connex-S OPINCAA LLVM compiler. Retrieved from http://gitlab.dcae.pub.ro/research/ConnexRelated/OpincaaLLVM.
5. 2020. The Connex OPINCAA library. Retrieved from http://gitlab.dcae.pub.ro/research/opincaa. 2020. The Connex OPINCAA library. Retrieved from http://gitlab.dcae.pub.ro/research/opincaa.
Cited by
4 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献