During my Ph.D., study, I have made my

**core****developments****open source.**I believe open source development can bring in diverse perspectives beyond those of a single research group or company. My codes which has been downloaded over 100 times, enable other researchers to easily study and access the most recent developments in the area of brain-inspired and approximate computing. .## Brain-Inspired Computing

**Locality-based Encoding for Hyperdimensional Computing:**

**Description:**

Brain-inspired Hyperdimensional (HD) computing is a new computing paradigm emulating the neuron’s activity in high-dimensional space. The first step in HD computing is to map each data point into high-dimensional space (e.g., 10,000), which requires the computation of thousands of operations for each element of data in the original domain. BRIC introduces a novel encoding module based on random projection with a predictable memory access pattern which can be efficiently implemented in hardware.

**Relevant paper:**

**M. Imani,**J. Morris, J. Messerly, H. Shu, Y. Deng, T. Rosing, “BRIC: Locality-based Encoding for Energy-Efficient Brain-Inspired Hyperdimensional Computing”, IEEE/ACM Design Automation Conference (DAC), 2019 (

**Best paper candidate**) [PDF][

**Presentation**].

**Link to code:**

https://github.com/moimani/HD-Permutaion

**Projection-based Encoding for Hyperdimensional Computing:**

**Description:**

Brain-inspired Hyperdimensional (HD) computing is a new computing paradigm emulating the neuron’s activity in high-dimensional space. The first step in HD computing is to map each data point into high-dimensional space (e.g., 10,000), which requires the computation of thousands of operations for each element of data in the original domain. BRIC introduces a novel encoding module based on random projection with a predictable memory access pattern which can be efficiently implemented in hardware.

**Relevant paper:**

Brain-inspired Hyperdimensional (HD) computing is a new computing paradigm emulating the neuron’s activity in high-dimensional space. The first step in HD computing is to map each data point into high-dimensional space (e.g., 10,000), which requires the computation of thousands of operations for each element of data in the original domain. BRIC introduces a novel encoding module based on random projection with a predictable memory access pattern which can be efficiently implemented in hardware.

**Link to code:**

https://github.com/moimani/HD-IDHV

## Approximate Computing

**Computational Reuse for GPU Approximation:**

**Description:**

Today's computing systems are designed to deliver only exact solutions at a high energy cost, while many of the algorithms that are run on data are at their heart statistical, and thus do not require exact answers. The computing units are enhanced with a small associative memory places close to each stream core. This associative memory, in the form of a lookup table, is placed beside each computing unit to reduce the redundant computations. The main idea of the approximation is, instead of accurate computing on existing processing units, to return precomputed results from the associative memory, not only for perfect matches of operands but also for inexact matches. Such inexact matching is subject to a threshold which is set by the software layer.

**Relevant paper:**

**[1]**

**M. Imani,**A. Rahimi, T. Rosing, "Resistive Configurable Associative Memory for Approximate Computing" IEEE/ACM Design Automation and Test in Europe Conference (DATE), 2016 [

**[2] M. Imani,**Y. Kim, A. Rahimi, T. Rosing, "ACAM: Approximate Computing Based on Adaptive Associative Memory with Online Learning" IEEE International Symposium on Low Power Electronics and Design (ISLPED), 2016.

**Link to code:**

https://github.com/moimani/HD-IDHV