The ECE 4/599 Course Blog

SimplePIM: A Software Framework for Productive and Efficient Processing-in-Memory

by Nanda Velugoti (leader, blogger), Benjamin Knutson (scribe), David Luo, Rabecka Moffit, Eugene Cohen

Introduction

PIM stands for Processing-In-Memory and as the name suggests the idea here is that, instead of doing compute in CPU, it can be done in the DRAM by embedding a processing unit within it, this is usually referred to as DPU (DRAM Processing Unit) [1]. The obvious benefit of having such a mechanism is that, memory bound workloads avoid the DRAM-to-CPU (and vice versa) communication overhead. This is shown in many common workloads where offloading such memory bound compute to DPUs results in better throughput and overall performance [2].

Design and Implementation

SimplePIM is a software framework that provides a convenient userspace API that allows programmers to easily implement PIM features into their applications. SimplePIM does this by providing a set of PIM programming primitives for managing, communicating and processing data structures between host (CPU) and DPU.

SimplePIM API

Optimizations

Results

SimplePIM results in, up to 83% reduction in lines of code and improves productivity up to 5.93x. Along with these improvements, SimplePIM speeds up workloads by 1.10x - 1.43x when compared to their hand-optimized implementations.

Discussion

References

  1. A Modern Primer on Processing-In-Memory
  2. Benchmarking a New Paradigm: An Experimental Analysis of a Real Processing-in-Memory Architecture
  3. Paper: https://people.inf.ethz.ch/omutlu/pub/SimplePIM_pact23.pdf
  4. Slides: https://events.safari.ethz.ch/micro-pim-tutorial/lib/exe/fetch.php?media=realpimtutorial-micro23-simplepim-juan-slides.pdf