Whew, that’s a lot of background! Let’s quickly recap the important points before we jump into the guided software example:
Acceleration is generally done on some intersection of two axes: trying to do the same task faster (Amdahl’s Law), or trying to do more tasks in the same time (Gustafson’s Law). Each axis has different implications on how to optimize, and how impactful that optimization will be.
Acceleration inherently comes with an acceleration tax. To achieve acceleration in a real system, the benefits achieved by acceleration must dominate the extra latency of the data transfers. You should pick your battles; focus on the biggest bang for the buck pieces of your algorithms.
Interaction with the Alveo cards is done through XRT and higher-level API abstractions like OpenCL or the XRT Native API. Software-side optimization is done via the library, independent of the optimization of the hardware kernels.
Memory allocation and management can have a significant effect on your overall application performance.
We will explore all of these topics in detail in the examples.
Read Next Section: Guided Software Examples
Copyright© 2019-2021 Xilinx