Class CudaLeapCalibrator

Inheritance Relationships

Base Type

Class Documentation

class CudaLeapCalibrator : public ska::ILeapCalibrator

LEAP calibration object implemented using CUDA.

Public Functions

CudaLeapCalibrator()
~CudaLeapCalibrator() override
virtual void Calibrate(std::function<void(const cpu::Calibration&)> outputCallback, const ska::LeapDataset &ds, const std::vector<SphericalDirection> &directions, const std::optional<std::vector<TecScreen>> &tecScreens, const Slice &solutionInterval, double minimumBaselineThreshold, bool computeCal1, std::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(HostLeapData &leapData, device_matrix<double> &deviceA, 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(HostLeapData &leapData, device_matrix<double> &deviceA1, 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

cpu::BeamCalibration BeamCalibrate(const HostLeapData &hostMetadata, DeviceLeapData &deviceLeapData, const SphericalDirection &direction, cuda::DeviceIntegration &input, bool computeCal1)

Performs only visibilities rotation on the GPU