The original approach was to implement the libraries and then integrate as part of the xb-engine pipeline. However, to faster approach completion of the pipeline we have started integrating all of the functionality needed for the xb-engine operational modes. There are various architecture compromises to integrate the PFB and correlator. See earlier commit history that discusses some of these compromises, such as the way the post beamform pointers are setup.
These commits also develop out more of the build process. Previous approaches were most likely
not very common, or good practice. The library now produces a config file that can be included
and subprojects are expected to pass in configuration parameters as part of the default_options
configuration to the library as a subproject.
The "demo" benchmark codes are also still part of the rtbf
library for all the operational modes.
In future changes, it has been thought as an improvement to design a more abstract context framework
that better better handles the integration of arbitrary functions from a set of libraries. Right now,
rtbf
contains much of that abstraction and has been done in such a way that if it were to continue
to grow may be untenable. A design of such abstraction has not been defined but it has been thought
to be at a layer higher than the rtbf and just provide a way to move data onto the device then off with
a way to chain the computations of the operation together (such as a linked list of function pointers).
This abstraction would treat functions such as any data reordering in a way similar to other compute
operations, because right now those reorders are part of rtbf
and is a crutch when trying to make
clear separation of functionality. An implementation would also consider using cuda streams where
appropriate to be efficient.