OPIMA: Optical Processing-In-Memory for Convolutional Neural Network Acceleration
<|reference_start|>OPIMA: Optical Processing-In-Memory for Convolutional Neural Network Acceleration: Recent advances in machine learning (ML) have spotlighted the pressing need for computing architectures that bridge the gap between memory bandwidth and processing power. The advent of deep neural networks has pushed traditional Von Neumann architectures to their limits due to the high latency and energy consumption costs associated with data movement between the processor and memory for these workloads. One of the solutions to overcome this bottleneck is to perform computation within the main memory through processing-in-memory (PIM), thereby limiting data movement and the costs associated with it. However, DRAM-based PIM struggles to achieve high throughput and energy efficiency due to internal data movement bottlenecks and the need for frequent refresh operations. In this work, we introduce OPIMA, a PIM-based ML accelerator, architected within an optical main memory. OPIMA has been designed to leverage the inherent massive parallelism within main memory while performing high-speed, low-energy optical computation to accelerate ML models based on convolutional neural networks. We present a comprehensive analysis of OPIMA to guide design choices and operational mechanisms. Additionally, we evaluate the performance and energy consumption of OPIMA, comparing it with conventional electronic computing systems and emerging photonic PIM architectures. The experimental results show that OPIMA can achieve 2.98x higher throughput and 137x better energy efficiency than the best-known prior work.<|reference_end|>
@article{sunny2024opima:,
    title={OPIMA: Optical Processing-In-Memory for Convolutional Neural Network
  Acceleration},
    author={Febin Sunny, Amin Shafiee, Abhishek Balasubramaniam, Mahdi Nikdast,
  Sudeep Pasricha},
    journal={arXiv preprint arXiv:2407.08205},
    year={2024},
    archivePrefix={arXiv},
    eprint={2407.08205},
    primaryClass={cs.AR cs.ET cs.LG}
}