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