-
Notifications
You must be signed in to change notification settings - Fork 38
[Integration Test] Fix cordic #544
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
base: main
Are you sure you want to change the base?
Conversation
Hi @murphe67 The second reason is the presence of a division operation on one of the lines x[i] = x[i] / A[i][i]; Interestingly, this is an issue only when the data type is int. I replaced all the |
Oh, nice catch, I'll fix that one also in this PR then! Yes, I don't think we have any open-source integer division implementations, so those kernels only work with the proprietary IP cores from Vitis. We do have open-source floating point division, so it is a huge choke point, but we would like to try fix this at some point. |
I just checked polybench, which is where we got trisolv from, and it uses double by default. @Jiahui17 @lana555 what do you think of switching all the integer division integration tests to be double? integer division is kind of a strange thing to be doing in most of these kernels, I'd say we got here by mistake. |
Oh I see.
if (abs(br) >= abs(bi)) {...} I made a custom absolute value replacement br = (br < 0) ? br*-1 : br;
bi = (bi < 0) ? bi*-1 : bi;
if ((br) >= (bi)) {...} Once this is fixed, compilation succeeds but simulation fails because of the division signs used on integers (once again). When replaced with
|
Thanks for the detailed notes! Will add the while loop 2 passes with the at least one of the better buffering algorithms, so it is possibly something to do with the on-merge buffer approach. |
I was using |
Variable names in cordic were incorrect for putting data in the BRAM.