Vitis BLAS L2 pre-defined kernels are the C++ implementation of BLAS functions. These implementations are intended to demonstrate how FPGA kernels are defined and how L1 primitive functions can be used by any Vitis users to build their kernels for theri applications.

1. Introduction

L2 kernel implementations include memory datamovers and computation components composed by L1 primitive functions. The kernels always have memoy (DDR/HBM) interfaces. The data mover modules move data between vectors’ and matrices’ off-chip storage and the computation modules. The L1 primitive functions with stream interfaces can be quickly chained with the data mover modules together to form a computation kernel. The organization of Vitis BLAS L2 files and directories, as described below, reflects this design strategy.

  • L2/include/hw/xf_blas/: the directory that contains the kernel modules
  • L2/include/sw/: the directory that contains the host modules
  • L2/test/hw: the directory that contains the Makefiles used for testing each implemented kernel

More information about computation and data mover modules can be found in L2 GEMM kernel.

2. L2 kernel usage

Vitis BLAS L2 pre-defined kernels can be used in users’ applications based on BLAS functions. These kernels are also examples to present how to use the L1 primitive funtions and datamovers to build a kernel.