Table of Contents
pLUTo is a Processing-using-Memory architecture that enables the execution of complex operations in-memory. To achieve this, the key idea of pLUTo is to replace complex operations with low-cost, massively parallel table lookups that produce the same result.
The pLUTo LUT Query operation is at the core of pLUTo's functionality: this operation enables every element in an input memory row to be used to query a LUT that may contain up to as many entries as the number of rows in a DRAM subarray.
Please cite our full MICRO 2022 paper if you find this repository useful.
João Dinis Ferreira, Gabriel Falcao, Juan Gómez-Luna, Mohammed Alser, Lois Orosa, Mohammad Sadrosadati, Jeremie S. Kim, Geraldo F. Oliveira, Taha Shahroodi, Anant Nori, and Onur Mutlu. "pLUTo: Enabling Massively Parallel Computation in DRAM via Lookup Tables". In Proceedings of the 55th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO), 2022. https://doi.org/10.1109/MICRO56248.2022.00067.
You can also use the following BibTeX entry for this purpose:
@inproceedings{ferreira2022pluto,
author = {Ferreira, João Dinis and Falcao, Gabriel and Gómez-Luna, Juan and Alser, Mohammed and Orosa, Lois and Sadrosadati, Mohammad and Kim, Jeremie S. and Oliveira, Geraldo F. and Shahroodi, Taha and Nori, Anant and Mutlu, Onur},
title = {{pLUTo: Enabling Massively Parallel Computation in DRAM via Lookup Tables}},
doi = {10.1109/MICRO56248.2022.00067},
booktitle = {Proceedings of the 55th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO)},
year = {2022}
}
This repository contains the artifact evaluation materials associated with pLUTo: Enabling Massively Parallel Computation In DRAM via Lookup Tables, published at MICRO 2022.
We provide source code and helper files to reproduce:
- SPICE simulations (shown in Figure 6 in the paper)
- The simulation of pLUTo's operation (shown in Figures 7-13 in the paper)
We provide in-depth instructions on how to reproduce each of the artifacts in the README.md
files in the pluto_sim
and spice
directories.
The following is a high-level overview of the structure of this repository. We highlight select folders and files of note.
.
+-- LICENSE
+-- README.md
+-- pluto_sim/
| +-- baselines --> baseline results for the evaluated workloads
| +-- pysim --> output folder (empty when the repository is first cloned)
| +-- pysim_reference --> reference results for the pLUTo-based execution of the evaluated workloads
| +-- LUT_Loading_Times.xlsx --> used to produce the results shown in Figure 11 in the paper
| +-- README.md --> START HERE: step-by-step instructions on how to reproduce our results
| +-- requirements.txt --> Python requirements to be installed prior to execution
| +-- sim_walkthrough.ipynb --> interactive Python Jupyter Notebook with step-by-step instructions on how to reproduce our results
| +-- ...
+-- resources/
| +-- ... --> media rendered in this README
+-- spice/
| +-- media/ --> media rendered in the README
| +-- out/ --> output folder
| +-- runs/ --> output folder
| +-- README.md --> START HERE: step-by-step instructions on how to reproduce our results
| +-- pluto-a.asc --> cell design file
| +-- pluto-b.asc --> cell design file
| +-- pluto-c.asc --> cell design file
| +-- reference.asc --> cell design file
| +-- transistor_model.pm --> transistor model
For step-by-step instructions on how to reproduce our results, please see the README in the spice
folder and the README in the pluto_sim
folder.
Distributed under the MIT License. See LICENSE for more information.
João Dinis Ferreira - hello@joaof.eu
We acknowledge support from SAFARI Research Group's industrial partners.