SFU-HiAccel / SQL2FPGA

[FCCM'23] SQL2FPGA: Automatic Acceleration of SQL Query Processing on Modern CPU-FPGA Platforms
BSD 2-Clause "Simplified" License
8 stars 2 forks source link

FPGA Overlay Build Issues with different Vitis version #1

Closed jaeyoun98 closed 3 months ago

jaeyoun98 commented 4 months ago

Hi, I'm trying to follow your work, but I've got some issues building the Vitis Database Library GQE Kernels on Alveo U280 card. My current environment settings are:

[1] I've tried to work with Vitis 2020.1, but there was an issue with accelerator card's platform file. I currently have following platform file: xilinx_u280_gen3x16_xdma_1_202211_1

However, Vitis 2020.1 does not match with the above platform file, and it gives me below compile error. ERROR: [v++ 74-9] Failed to parse /opt/xilinx/platforms/xilinx_u280_gen3x16_xdma_1_202211_1/xilinx_u280_gen3x16_xdma_1_202211_1.xpfmn I think it's because of the version mismatch, but there was no way to get previous version of the platform file. Official Alveo U280 site doesn't support platform files older than 2022.1. Below are the related issues with platform files:

[2] Thus I tried to keep up with Vitis 2023.1 and the above platform file, but Vitis 2023.1 had an issue with "dynamic_eval.hpp" source code from 2020.1 Vitis database library. The code basically uses both PIPELINE and INLINE HLS pragmas, but Vitis version after 2020.1 seems to invoke a compile error if INLINE pragma is used with any other pragmas. Below is the error message I got:

ERROR: [v++ 214-272] In function 'void xf::database::details::alu_cell1<ap_uint<32>, ap_uint<32>, ap_uint<32> >(ap_uint<32>, ap_uint<32>, ap_uint<4>, xf::database::details::cell_data<ap_uint<32> >&)', Pragma confli ct happens on 'INLINE' and 'PIPELINE' pragmas: same function (/home/{user}/Vitis_Libraries/database/L1/include/hw/xf_database/dynamic_eval.hpp:216:0)

[3] So I deleted the PIPELINE pragma with all the other settings not changed, but I've got a timing error. WNS was about -0.2ns. When I deleted INLINE pragma instead, I've got a routing verification error. The error message says there are partially confilcted nets.

I wonder how can I deal with these problems. Matching the database library version seems not a good idea, since their kernel designs look quite different from the ones in 2020.1. I'm trying to deal with timing issues (changing kernel frequency, implemenation strategy, or both), but it's not working well.

I deeply appreciate for your great works and hope I can get some helps.

slacker151 commented 4 months ago

@jaeyoun98 I have uploaded the U280 platform files for 2021.x, which are no longer available from their official website.

jaeyoun98 commented 4 months ago

Thanks, I tried with experiments setup so far and finally nearly made it. Below are two biggest check points during the way here: