NVlabs / timeloop

Timeloop performs modeling, mapping and code-generation for tensor algebra workloads on various accelerator architectures.
https://timeloop.csail.mit.edu/
BSD 3-Clause "New" or "Revised" License
325 stars 101 forks source link

Memorry access read write energy #199

Closed Omar-Abdul-Aziz closed 1 year ago

Omar-Abdul-Aziz commented 1 year ago

Hello, It's posiible to modify the time and energy of the memory access in Timeloop for the memories between the Main Memory and the PE? For example, I can test the influence of using a memory two or three faster in the reading?

Thank you

angshuman-parashar commented 1 year ago

For energy you can do it by altering the Accelergy tables, or you can also override the Accelergy data by specifying vector-access-energy for each memory level in arch.yaml.

For performance, what do you mean by "faster"? Initial access latency, or throughput? If it's throughput you'll want to change the bandwidth attribute (specified in words-per-cycle that the memory can deliver). If it's latency then Timeloop doesn't model that today. And for large enough workloads it shouldn't be a huge factor.

Omar-Abdul-Aziz commented 1 year ago

In my case, I do have an adder and multiplier table with some modifications from the one in the TimeLoop installation. In this files I have a specified latency, energy and areas ( for example, latency x : energy = ... , area = ...) and modifying the aladdin_table.py correspondingly. Then, in the arch.yaml file we precise that MAC latency is x. However, I find out that accelergy doesn't take the energy and area corresponding to the latency x but always it takes the values of the default latency (5 ns). I tried to change the whole values in the adder and multiplier table, but I have the same values that correspond to latency 5. Even I tried to delete the adder and multiplier table but timeloop still use the values that correspond to latency 5. Do you have an idea from where timeloop take these energy and areas values?

Thank you

nellie-wu commented 1 year ago

There are two places that you might want to check:

  1. Did you reinstall the Aladdin plug-in after changing the code? If not, you need to reinstall it to reflect the change.
  2. Is your MAC a compound component class? If so, you need to make sure that the latency attribute of MAC is correctly propagated to the subcomponents' latency attribute in the compound component definition.

FYI, you can add your table-based plug-in for your own energy numbers. We have a template for doing that here: https://github.com/Accelergy-Project/accelergy-table-based-plug-ins

Omar-Abdul-Aziz commented 1 year ago

Thank you for your quick responce! It works