In the 2021.2 release, GQE start to support asynchronous input/output feature, along with multi-card support.
- Asynchronous input/output: Use std::future<size_t> to notify GQE L3 readiness of each input sections, and its value is the effective row number of the input section. It will use std::promise<size_t> to notify the caller of GQE L3 the readiness of each section of the final result, and its value is the effective row number of output section. Asynchronous support will allow the FPGA start to process as soon as part of the input data is ready. In such way, the FPGA will not wait until all input data is ready and shrink the overhead to prepare data for FPGA.
- Multi-Cards support: Allows you to identify multiple Alveo cards that are suitable for working. It will load the same xclbins for these cards and called them when there is more task than one cards could handle at the same time. The data structure will also keep the pinned host buffer and device buffer alive before they are explicitly released. This will help save the time to load xclbins/create pinned buffer/create device buffer.