Executable Usage - 2023.2 English

Vitis Libraries

Release Date
2023-12-20
Version
2023.2 English
  • Work Directory(Step 1)

The steps for library download and environment setup can be found in Vitis Sparse Library. For getting the design,

cd L2/benchmarks/spmv_double
  • Build hw and host (Step 2)

Run the following make command to build your XCLBIN and host binary targeting a specific device. Please be noticed that this process will take a long time, maybe couple of hours.

make build TARGET=hw PLATFORM_REPO_PATHS=/opt/xilinx/platforms PLATFORM=xilinx_u280_xdma_291020_3
make host TARGET=hw PLATFORM_REPO_PATHS=/opt/xilinx/platforms PLATFORM=xilinx_u280_xdma_291020_3
  • Generate inputs(Step 3)
conda activate xf_blas
source ./gen_test.sh

The gen_test.sh triggers a set of python scripts to download the .mtx files listed in test.txt under current directory and partitions them evenly across 16 HBM channels. Each paritioned data set, including the value and indices of each NNZ entry, is stored in one HBM channel. Each row of the partitioned data set is padded to multiple of 32 to accommodate the double precision accumulation latency. The padding overhead for each matrix is summarized in the benchmark result as well. This overhead will be reduced with the improvement of floating point support on FPGA platforms.

  • Run benchmark(Step 4)

To get the benchmark results, please run the following command.

python ./run_test.py

The run_test.py launches the host executable with each partitioned data set and offloads the double precision SpMV operation to U280 card. The SpMV operation is run numerous time (2000 in this benchmark) to mask out the host code overhead. The total run time in the benchmark results includs the OpenCl function call time to trigger the CUs and the hardware run time. The run time [ms] / iteration field gives single SpMV run time on the U280 card.

  • Example output(Step 5)
All tests pass!
Please find the benchmark results in spmv_perf.csv.