HipaccVX:OpenVX与基于DSL的代码生成的联姻
HipaccVX: Wedding of OpenVX and DSL-based Code Generation
摘要:
为异构平台编写高性能优化的程序是很困难的,因为这需要在低级别上对代码进行调优,而这些调优大多数时候都是基于根本不同的编程范式和语言。OpenVX承诺通过基于图形执行模型的免版税行业标准为计算机视觉应用解决这个问题。然而,OpenVX的算法空间被限制在一小组视觉功能。这阻碍了标准中未包含的加速计算。在本文中,我们分析OpenVX的视觉功能,找到一个正交的计算抽象集。基于这些抽象,我们耦合现有的领域特定语言(DSL)后端的OpenVX环境,并提供语言结构的程序员定义的用户定义的节点。通过这种方式,我们可以实现使用标准计算机视觉函数的OpenVX图形实现无法检测到的优化。这些优化可以使Nvidia GTX GPU的吞吐量增加一倍,并将Xilinx Zynq FPGA的资源使用量减少50%。最后,我们表明,我们提出的编译器框架,称为HipaccVX,可以实现更好的结果比最先进的方法Nvidia VisionWorks和Halide-HLS。
英文摘要:
Writing programs for heterogeneous platforms optimized for high performance is hard since this requires the code to be tuned at a low level with architecture-specific optimizations that are most times based on fundamentally differing programming paradigms and languages. OpenVX promises to solve this issue for computer vision applications with a royalty-free industry standard that is based on a graph-execution model. Yet, the OpenVX' algorithm space is constrained to a small set of vision functions. This hinders accelerating computations that are not included in the standard. In this paper, we analyze OpenVX vision functions to find an orthogonal set of computational abstractions. Based on these abstractions, we couple an existing Domain-Specific Language (DSL) back end to the OpenVX environment and provide language constructs to the programmer for the definition of user-defined nodes. In this way, we enable optimizations that are not possible to detect with OpenVX graph implementations using the standard computer vision functions. These optimizations can double the throughput on an Nvidia GTX GPU and decrease the resource usage of a Xilinx Zynq FPGA by 50% for our benchmarks. Finally, we show that our proposed compiler framework, called HipaccVX, can achieve better results than the state-of-the-art approaches Nvidia VisionWorks and Halide-HLS.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。