Class CudaLeapCalibrator

Inheritance Relationships

Base Type

Class Documentation

class icrar::cuda::CudaLeapCalibrator : public icrar::ILeapCalibrator

LEAP calibration object implemented using CUDA.

Public Functions

CudaLeapCalibrator()
~CudaLeapCalibrator() override
void Calibrate(std::function<void(const cpu::Calibration&)> outputCallback, const icrar::MeasurementSet &ms, const std::vector<SphericalDirection> &directions, const Slice &solutionInterval, double minimumBaselineThreshold, boost::optional<unsigned int> referenceAntenna, const ComputeOptionsDTO &computeOptions, ) override

Interface for Leap calibration implementations.

Calibrates by performing phase rotation for each direction in directions by splitting uvws and visibilities into integration batches per timestep.

void CalculateAd(const Eigen::MatrixXd &hostA, device_matrix<double> &deviceA, Eigen::MatrixXd &hostAd, device_matrix<double> &deviceAd, bool isFileSystemCacheEnabled, bool useCuda)

Calculates Ad into deviceAd, writes to cache if isFileSystemCacheEnabled is true.

Parameters
  • hostA: matrix to invert

  • deviceA: output device memory of A

  • hostAd: output host memory of Ad (optionally written to)

  • deviceAd: output device memory of Ad

  • isFileSystemCacheEnabled: whether to use file caching

  • useCuda: whether to use cuda solvers

void CalculateAd1(const Eigen::MatrixXd &hostA1, device_matrix<double> &deviceA1, Eigen::MatrixXd &hostAd1, device_matrix<double> &deviceAd1)

Calculates Ad1 into deviceAd1.

Parameters
  • hostA1: matrix to invert

  • deviceA1: output device memory of A1

  • hostAd1: output host memory of Ad1 (optionally written to)

  • deviceAd1: output device memory of Ad1

void PhaseRotate(const cpu::MetaData &hostMetadata, DeviceMetaData &deviceMetadata, const SphericalDirection &direction, cuda::DeviceIntegration &input, std::vector<cpu::BeamCalibration> &output_calibrations)

Performs only visibilities rotation on the GPU