Design and evaluation of associative processing kernels

  • Jonathas Silveira UNICAMP
  • Lucas Wanner UNICAMP

Resumo


Associative Processing is a way to do Processing in Memory. Through an associative memory (Content-addressable memory - CAM) with special registers and lookup-tables, and applying comparisons and writings, this approach is able to compute in parallel. The potential of associative computing is applied to accelerate several applications including Neural Networks, DNA alignment, and Image processing. However, there is a lack of programming models for real applications and ways to measure performance impacts in a system with associative processing, making it difficult to adopt the approach. In this work, we present associative processing implementations for application kernels along with evaluation models for latency and energy for associative operations. We highlight implementations for matrix multiplication, 2D convolution, and the ReLU activation function, explaining how we built them to extract parallelism in the associative environment. We use a functional simulator to evaluate applications and apply its output to models for performance evaluation. The results show that associative processing can greatly improve performance over traditional CPU processing for parallel applications. For matrix multiplication, the associative processing model achieved a relative gain of 5x in latency, 4x in energy, and 25x in the number of load/store operations when compared to a CPU-only model.
Palavras-chave: Adaptation models, Convolution, Computational modeling, Writing, Data models, Associative processing, Registers, Processing in Memory, Programming model
Publicado
26/10/2021
SILVEIRA, Jonathas; WANNER, Lucas. Design and evaluation of associative processing kernels. In: INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE AND HIGH PERFORMANCE COMPUTING (SBAC-PAD), 33. , 2021, Belo Horizonte. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2021 . p. 64-73.