Hyperdimensional Computing (HDC), a technique inspired by cognitive models of computation, has garnered significant interest in recent years. For example, HDC has been proposed as a more efficient and robust alternative basis for machine learning. The highly parallel nature of HDC algorithms makes them well-suited for execution on several hardware architectures, including CPUs, GPUs, FPGAs, ASIC-based and Resistive RAM-based accelerators. Traditionally, these diverse architectures are programmed using different languages and programming models, making heterogeneous programming for HDC prohibitively difficult. To make matters worse, currently no compiler framework that enables heterogeneous compilation of HDC programs and generates efficient code for a wide variety of hardware targets exists. We propose an end-to-end heterogeneous programming system for HDC: a novel programming language, HDC++, that enables programmers to write programs using a unified programming model, including a set of high-level, HDC-specific, abstractions to ease programmability; and a heterogeneous compilation framework, HPVM-HDC, that provides an intermediate representation that reflects the parallel character of HDC algorithms and enables compilation of HDC++ programs to a wide array of hardware targets, including a custom HD Digital ASIC and an HD Resistive RAM accelerator. HPVM-HDC can perform HD specific optimizations, which we demonstrate by implementing two domain specific optimizations. Our evaluation shows that HPVM-HDC generates performance competitive code, compared with baseline HD applications. Additionally, HPVM-HDC efficiently targets an HD Digital ASIC and an HD ReRAM accelerator simulator, achieving a geomean 1.28x and 2.15x speed-up over our compiled GPU implementations, respectively.
翻译:超维计算(HDC)是一种受计算认知模型启发的技术,近年来引起了广泛关注。例如,HDC已被提出作为机器学习的一种更高效、更鲁棒的替代基础。HDC算法的高度并行特性使其非常适合在多种硬件架构上执行,包括CPU、GPU、FPGA、基于ASIC的加速器以及基于阻变存储器(ReRAM)的加速器。传统上,这些不同的架构使用不同的语言和编程模型进行编程,这使得HDC的异构编程极其困难。更糟糕的是,目前尚不存在能够实现HDC程序异构编译并为多种硬件目标生成高效代码的编译器框架。我们提出了一种端到端的HDC异构编程系统:一种新颖的编程语言HDC++,它使程序员能够使用统一的编程模型编写程序,其中包括一组高级的、HDC特有的抽象以简化可编程性;以及一个异构编译框架HPVM-HDC,它提供了一种反映HDC算法并行特性的中间表示,并支持将HDC++程序编译到广泛的硬件目标,包括定制的HD数字ASIC和HD阻变存储器加速器。HPVM-HDC能够执行HD特有的优化,我们通过实现两种领域特定优化来展示这一点。我们的评估表明,与基线HD应用相比,HPVM-HDC生成的代码性能具有竞争力。此外,HPVM-HDC能够高效地针对HD数字ASIC和HD ReRAM加速器模拟器,分别实现了相对于我们编译的GPU实现1.28倍和2.15倍的几何平均加速比。