Throughput and Latency reports from RTL sim
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 45/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- python
- Domain
- compilers, performance
Research direction
Start in src/builder/build_dataflow_steps.py at step_measure_rtlsim_performance and inspect throughput_test_rtlsim. Reproduce the report with rtlsim_batch_size greater than one, then verify that latency_cycles represents a single input while cycles represents throughput for a filled batch. Update or add coverage for both reported values.
Written by the indexing model from the issue text.
Description
Hello, everyone!
It may not be a real issue, but I would like to call attention to this anyways.
Currently, the performance report is generated with a single call to throughput_test_rtlsim. However, for batch sizes greater than one, the latency_cycles will be wrong, as I understand (because latency_cycles gets assigned from cycles).
In step_measure_rtlsim_performance inside src/builder/build_dataflow_steps.py, we have:
rtlsim_bs = int(cfg.rtlsim_batch_size) # which defaults to 1
rtlsim_perf_dict = throughput_test_rtlsim(rtlsim_model, rtlsim_bs)
rtlsim_latency = rtlsim_perf_dict["cycles"]
rtlsim_perf_dict["latency_cycles"] = rtlsim_latency
where, I believe, it should be something like:
rtlsim_bs = len(rtlsim_model.graph.node)
rtl_single_run = throughput_test_rtlsim(rtlsim_model,1)
rtlsim_perf_dict = throughput_test_rtlsim(rtlsim_model, rtlsim_bs) # or even, just saving the cycle in which the first output is produced - not requiring calling throughput_test_rtlsim twice
rtlsim_perf_dict["latency_cycles"] = rtl_single_run["cycles"]
So, in the end, we have "latency_cycles" giving the number of cycles for a single input (i.e., latency) and "cycles" giving the number of cycles for processing a batch large enough to assess the throughput with the pipeline filled.
Thanks,
- Dominant language
- Python
- Stars
- 1.1k
- Forks
- 308
- Avg merge
- 3d 9h
- Merged PRs (30d)
- 14
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Xilinx/finn
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 68/100
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 52/100
-
bug
Difficulty 5/5 Over a week Newbie friendliness 30/100
-
RTL MVU: no check that operand widths fit the DSP datapaths (silent truncation / synthesis failure) Openbug
Difficulty 4/5 3-5 days Newbie friendliness 55/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
bancolombia/sentinel#23 ·
-
test md OpenCI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100