pim core
A Tensor Compiler for Processing-In-Memory Architectures
Yang, Peiming, Durvasula, Sankeerth, Fernandez, Ivan, Sadrosadati, Mohammad, Mutlu, Onur, Pekhimenko, Gennady, Giannoula, Christina
Processing-In-Memory (PIM) devices integrated with high-performance Host processors (e.g., GPUs) can accelerate memory-intensive kernels in Machine Learning (ML) models, including Large Language Models (LLMs), by leveraging high memory bandwidth at PIM cores. However, Host processors and PIM cores require different data layouts: Hosts need consecutive elements distributed across DRAM banks, while PIM cores need them within local banks. This necessitates data rearrangements in ML kernel execution that pose significant performance and programmability challenges, further exacerbated by the need to support diverse PIM backends. Current compilation approaches lack systematic optimization for diverse ML kernels across multiple PIM backends and may largely ignore data rearrangements during compute code optimization. We demonstrate that data rearrangements and compute code optimization are interdependent, and need to be jointly optimized during the tuning process. To address this, we design DCC, the first data-centric ML compiler for PIM systems that jointly co-optimizes data rearrangements and compute code in a unified tuning process. DCC integrates a multi-layer PIM abstraction that enables various data distribution and processing strategies on different PIM backends. DCC enables effective co-optimization by mapping data partitioning strategies to compute loop partitions, applying PIM-specific code optimizations and leveraging a fast and accurate performance prediction model to select optimal configurations. Our evaluations in various individual ML kernels demonstrate that DCC achieves up to 7.68x speedup (2.7x average) on HBM-PIM and up to 13.17x speedup (5.75x average) on AttAcc PIM backend over GPU-only execution. In end-to-end LLM inference, DCC on AttAcc accelerates GPT-3 and LLaMA-2 by up to 7.71x (4.88x average) over GPU.
SwiftRL: Towards Efficient Reinforcement Learning on Real Processing-In-Memory Systems
Gogineni, Kailash, Dayapule, Sai Santosh, Gómez-Luna, Juan, Gogineni, Karthikeya, Wei, Peng, Lan, Tian, Sadrosadati, Mohammad, Mutlu, Onur, Venkataramani, Guru
All of these applications involve active interactions with the environment, from which observations are made in Reinforcement Learning (RL) is the process by which an agent learns order to train the RL agent. Extending RL to real-world applications optimal behavior through interactions with experience datasets, all presents challenges, particularly in scenarios such as self-driving of which aim to maximize the reward signal. RL algorithms often cars, where exploration and training in the field can be impractical face performance challenges in real-world applications, especially and may even raise safety concerns while piloting a car due to when training with extensive and diverse datasets. For instance, delayed decisions stemming from the performance bottlenecks of applications like autonomous vehicles include sensory data, dynamic underlying RL-based decision-making modules [6, 7].
Accelerating Graph Neural Networks on Real Processing-In-Memory Systems
Giannoula, Christina, Yang, Peiming, Vega, Ivan Fernandez, Yang, Jiacheng, Li, Yu Xin, Luna, Juan Gomez, Sadrosadati, Mohammad, Mutlu, Onur, Pekhimenko, Gennady
Graph Neural Networks (GNNs) are emerging ML models to analyze graph-structure data. Graph Neural Network (GNN) execution involves both compute-intensive and memory-intensive kernels, the latter dominates the total time, being significantly bottlenecked by data movement between memory and processors. Processing-In-Memory (PIM) systems can alleviate this data movement bottleneck by placing simple processors near or inside to memory arrays. In this work, we introduce PyGim, an efficient ML framework that accelerates GNNs on real PIM systems. We propose intelligent parallelization techniques for memory-intensive kernels of GNNs tailored for real PIM systems, and develop handy Python API for them. We provide hybrid GNN execution, in which the compute-intensive and memory-intensive kernels are executed in processor-centric and memory-centric computing systems, respectively, to match their algorithmic nature. We extensively evaluate PyGim on a real-world PIM system with 1992 PIM cores using emerging GNN models, and demonstrate that it outperforms its state-of-the-art CPU counterpart on Intel Xeon by on average 3.04x, and achieves higher resource utilization than CPU and GPU systems. Our work provides useful recommendations for software, system and hardware designers. PyGim will be open-sourced to enable the widespread use of PIM systems in GNNs.