Vitis HPC Library

Vitis HPC Library provides an acceleration libray for applications with high computation workload, e.g. seismic imaging and inversion, high-precision simulations, genomics and etc. Three types of components are provided in this library, namely L1 primitives, L2 kernels and L3 software APIs. These implementations are organized in their corresponding directories L1, L2 and L3. The L1 primitives’ implementations can be leveraged by FPGA hardware developers. The L2 kernels’ implementations provide examples for Vitis kernel developers. The L3 APIs provide C/C++ functions for software developers to offload HPC workloads. This library depends on the Xilinx BLAS and SPARSE library to implement some components.

Because HPC applications normally have high precision requirements, the current supported data type is mainly single precsion floating point type (FP32 type). Although most components can be configured to support other data types, some of the architectures are specifically optimized to address FP32 operations, e.g. accumulations.

In the current release, two types of applications have been addressed by this library, namely RTM (Reverse Time Migration) and MLP-based high precesion seismic inversion. RTM is an important seismic imaging technique used for producing an accurate representation of the subsurface. The basic computation unit of an RTM application is a stencil module, which is the essential step for explicit FDTD (Finite Difference Time Domain) solutions. Seismic inversion is a procedure used to reconstruct subsurface properties via the seismic reflection data. Modern technology uses high precision MLP (Multilayer perceptron) based neural network to speed up this process. The basic unit of a MLP application normally includes a fully connected neural (FCN) network and an activation function, e.g. sigmoid function. In this library, you will find the implementations of stencil module, 2D and 3D RTM forward propogation path, 2D RTM application, high-precision fully connected neural network and sigmoid activation function.

Since all the kernel code is developed with the permissive Apache 2.0 license, advanced users can easily tailor, optimize or combine them for their own need. Demos and usage examples of different implementation level are also provided for reference.