Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question about how to obtain evaluation indicators for tasks #11

Open
1bing2 opened this issue Jul 4, 2023 · 3 comments
Open

Question about how to obtain evaluation indicators for tasks #11

1bing2 opened this issue Jul 4, 2023 · 3 comments

Comments

@1bing2
Copy link

1bing2 commented Jul 4, 2023

Hi,Cheng,
Recently, I was working on the topic of Microarchitecture space exploration based on the OpenCGRA framework, but I encountered some problems. For a. cpp file, we use CGRA Mapper to map it to a specific architecture and generate related files. , but how can we obtain the execution time of the tasks described in the. cpp file in a specific architecture.
Have a nice Day!
Thanks!

@tancheng
Copy link
Contributor

tancheng commented Jul 4, 2023

Hi, the throughput of a kernel can be obtained by mapping. You can see II once the mapping is done, which indicates the initiation interval (execution cycle of each iteration) of the kernel. Roughly, multiply the II with the loop bound should be the execution cycles of the entire kernel.

@1bing2
Copy link
Author

1bing2 commented Jul 4, 2023

Hi, the throughput of a kernel can be obtained by mapping. You can see II once the mapping is done, which indicates the initiation interval (execution cycle of each iteration) of the kernel. Roughly, multiply the II with the loop bound should be the execution cycles of the entire kernel.

Thank you for your quick reply! This means that if my map II is 4, the entire loop will be 32. So my performance time is 128 cycles? By the way, if I want to use hardware simulation, can I manually write a testbench to simulate the generated verilog using data packets?
Thank you!
Have a nice Day!

@tancheng
Copy link
Contributor

tancheng commented Jul 4, 2023

Yes, the total execution time is 128 + some pipeline draining cycles (wait for the final valid output storing in the memory).
Yes, writing up your own testbench for the generated verilog sounds a good idea. We are also working on updating the PyMTL3 version to make it possible to automatically generate testbench from the python test. We are also working on refining the PyMTL RTL for the CGRA. Will update you once we have progress.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants