Leap Accelerate API
A generic library containing core functionality for leap calibration.
Getting Started
import the leap-accelerate cmake target and add the following include:
#include <icrar/leap-accelerate/algorithm/LeapCalibratorFactory.h>
#include <icrar/leap-accelerate/algorithm/ILeapCalibrator.h>
create a calibrator object using the factory method and an output callback:
ArgumentsValidated args;
std::vector<cpu::Calibration> calibrations;
auto outputCallback = [&](const cpu::Calibration& calibration)
{
calibrations.push_back(calibration);
};
LeapCalibratorFactory::Create(args.GetComputeImplementation())->Calibrate(
outputCallback,
args.GetMeasurementSet(),
args.GetDirections(),
args.GetSolutionInterval(),
args.GetMinimumBaselineThreshold(),
args.GetReferenceAntenna(),
args.IsFileSystemCacheEnabled());
Compute Implementations
Compute functionality is split into two independant namespaces/implementations:
cpu
cuda
cpu
Provides computation using Eigen3 math libraries and layout that provides trivial data layouts compatible with raw buffer copying to acceleration libraries and compatible with kernel compilers. See Eigen for more details.
cuda
Provides Cuda classes and functions for nvidia hardware using cuda 9.x-11.x and cublas.
opencl
TBA - Provides OpenCL classes and functions for OpenCL supported hardware.
Modules
- core
contains common classes and functions required by other modules
- common
contains leap specific files used by other components
- model
contains data structures for leap calibration
- algorithm
contains utility classes and functions for performing leap calibration
- math
contains generic math extensions
- ms
contains abstraction layers for measurement set objects
- cuda
contains cuda specific classes and helpers