mit-emze / cimloop

MIT License
45 stars 12 forks source link

Could the repository support customized design in digital sram computing? #1

Closed tony-liu1996 closed 6 months ago

tony-liu1996 commented 7 months ago

Hello, I want to use my digital sram design (circuit,architecture,workloads and mapping) to get the performance, is the micro-architecture in cimloop paper fixed? whether it can be modifed arbitrarily?

tanner-andrulis commented 7 months ago

I am not sure I understand your question... Everything in CiMLoop is user-defined, so you can modify anything as you wish.

Can you be more specific on what you'd like to do with CiMLoop?

tony-liu1996 commented 7 months ago

The paper digital cim architecture is based on sram_colonnade_jssc_2021.cell.yaml ,which has special computation mode (systolic array),what I mean is whether cimloop support modified the digital cim 's computation mode ? and how to do with it?

tony-liu1996 commented 7 months ago

2024-04-29_10-38 this is systolic-like DCIM architecture, if I want to use other dcim architecture, is it still supported only to modify your yaml configuration files?

tanner-andrulis commented 7 months ago

Yes! I'd look at the Colonnade example to as a starting point for your design

tanner-andrulis commented 7 months ago

https://github.com/mit-emze/cimloop/tree/main/workspace/models/arch/1_macro/colonnade_jssc_2021

tony-liu1996 commented 7 months ago

Dose it support sparse mode like Sparseloop?

tanner-andrulis commented 7 months ago

Yes, Sparseloop features are compatible with CiMLoop architectures.

tony-liu1996 commented 7 months ago

So data distribution doesn't support actual data ,does it?

tanner-andrulis commented 7 months ago

See the section in the paper for data distributions. It supports distributions of data, but everything is scripted and customizable. If you'd like to integrate something (e.g., a component or architecture) that uses real data, that's something that you could do

tony-liu1996 commented 6 months ago

hello ,I cannot understand the variable "operand distribution" in the repository.i.e. The histograms represent the distribution of values that each operand can take on, and are used to calculate the energy of various components.For instance,

Set by CiM processor if these values are available in the workload.

Otherwise, use the defaults here.

INPUTS_HIST: [0, 0, 0, 3, 2, 1, 0] WEIGHTS_HIST: ([1] * 15) OUTPUTS_HIST: INPUTS_HIST I'm quite confused about the representations above even though you have explained this before in your code,thanks!

tanner-andrulis commented 6 months ago

Have you read the paper .PDF in this repository? It has an explanation on the distributions. Let me know if you read it and have specific questions

tony-liu1996 commented 6 months ago

Excuse me! I have read your previous work RAELLA, on which I have a simple understanding of your representation on data distribution. However ,I have no idea if it is suitable for digital sram computing macro?It seems that the hist is an average distribution of the operand?

tony-liu1996 commented 6 months ago

These histograms symmetric and zero-centered (the centermost bin is the probability of zero). Histograms are normalized to sum to 1.0 and they have 2^N-1 bins for some N. Encoding functions will upsample or downsample them as needed to match the bitwidth of the corresponding operands. What's the N in the above sentence? I can not understand the meaning

tony-liu1996 commented 6 months ago

The digital sram macro inputs use offset_encode_hist function, the question is still the same above

tanner-andrulis commented 6 months ago

N can be set to anything.

tony-liu1996 commented 6 months ago

how to get this hist?Should I use real data to get the distribution?

tanner-andrulis commented 6 months ago

Check out the CiMLoop paper! (In this repo)