To ease the programmability of PIM architectures, we propose DaPPA(data-parallel processing-in-memory architecture), a framework that can, for a given application, automatically distribute input and gather output data, handle memory management, and parallelize work across the DPUs. The key idea behind DaPPA is to remove the responsibility of managing hardware resources from the programmer by providing an intuitive data-parallel pattern-based programming interface that abstracts the hardware components of the UPMEM system. Using this key idea, DaPPA transforms a data-parallel pattern-based application code into the appropriate UPMEM-target code, including the required APIs for data management and code partition, which can then be compiled into a UPMEM-based binary transparently from the programmer. While generating UPMEM-target code, DaPPA implements several code optimizations to improve end-to-end performance.
翻译:为简化存内计算(PIM)架构的可编程性,我们提出了DaPPA(数据并行存内计算架构),该框架能够对给定应用自动分配输入数据、收集输出数据、处理内存管理,并在DPU间并行化任务。DaPPA的核心思想是通过提供直观的基于数据并行模式的编程接口——该接口抽象了UPMEM系统的硬件组件——将管理硬件资源的责任从程序员处剥离。基于这一核心思想,DaPPA将基于数据并行模式的应用代码转化为适配UPMEM的目标代码,包括所需的数据管理与代码分区API,从而可透明地为程序员编译为基于UPMEM的二进制文件。在生成UPMEM目标代码过程中,DaPPA还实现了多项代码优化以提升端到端性能。