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:
ArgumentValidated 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 files required by other components
- log
contains configuration and functions for logging info and warnings
- 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