-
Notifications
You must be signed in to change notification settings - Fork 42
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
Help debugging dot product #44
Comments
Thanks for reporting this and for the detailed analysis! The The encoding is as follows: The value in When one of the execution units processes a part of a vector register, a I initially selected that (rather unintuitive) encoding because it allowed for some optimizations, although I am not sure if that still applies. Maybe it might be better to switch to a simpler encoding for VL. I ran your code and the reason why Apologies for that, I fixed it now and hopefully your code should work now. |
Thanks, looks good on my end. Is there an easy way to add a test case for this? How do you generate your test code and data? I'm happy to create PRs for new tests for all these little bugs as I find them. |
That would be awesome! New test cases can be added by creating a new assembly (*.S) file in one of the sub-directories of The The way the test cases work is by executing the main function in the assembly file, which usually reads data from the memory section between A way to implement a test case for the special vsetvl variant would be to first set the VL to some value using a regular vsetvl, then use the special variant and then verify that subsequent vector instructions still process the expected number of vector elements. For instance, the following instructions should overwrite the first 11 bytes after
Therefore, in order to verify that this code has executed correctly, the memory content between |
Can you help me debug a dot product issue? I am taking two vectors, 9 16-bit elements each, and performing a dot product on them. I am using a 16-bit to 32-bit multiply, followed by a regular reduction sum (not width widening). Below is the relevant assembly.
I see it loading the vectors correctly, then multiplying them correctly. However, when it gets to the reduction sum, the
pipe_in_ctrl_i.vl_part_0
signal is high. This means the following line of RTL never actually adds the elements into the result. I see the elements appearing one-by-one in theelem_q
signal, but the result stays 0.vicuna/rtl/vproc_elem.sv
Line 229 in 06f1d2c
What is the next step in debugging this? What sets the
vl_part_0
signal high? Thanks!The text was updated successfully, but these errors were encountered: