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.