isce3 0.25.0
Loading...
Searching...
No Matches
InterpolatorHandle.h
1#pragma once
2
3#include <thrust/device_vector.h>
4
5#include <isce3/cuda/core/gpuInterpolator.h>
6
7namespace isce3::cuda::core {
8
9// XXX A virtual base class for `InterpolatorHandle` that does not depend on
10// the template parameter `T`. This hack is needed by the CUDA `Geocode` class
11// in order to pass `InterpolatorHandle` objects (via pointer to the base
12// class) across interfaces where the template parameter is not known at
13// compile time.
15public:
16 virtual ~InterpolatorHandleVirtual() = default;
17};
18
25template<class T>
26class InterpolatorHandle : public InterpolatorHandleVirtual{
27private:
28 // double pointer to gpuInterpolator on device
29 // 1st pointer is the gpuInterpolator location on device
30 // 2nd pointer is the gpuInterpolator object on device
31 isce3::cuda::core::gpuInterpolator<T>** _interp = nullptr;
32
33public:
37 InterpolatorHandle(isce3::core::dataInterpMethod interp_method);
38
40 ~InterpolatorHandle() override;
41
44 InterpolatorHandle& operator=(const InterpolatorHandle&) = delete;
45
47 {
48 return _interp;
49 };
50
51 // Member specifically for sinc interpolator filter. Allows filter on
52 // device memory to persist when the sinc interpolator constructor is
53 // called on device.
54 thrust::device_vector<double> d_sinc_filter;
55};
56} // namespace isce3::cuda::core
InterpolatorHandle(isce3::core::dataInterpMethod interp_method)
Class constructor.
Definition InterpolatorHandle.cu:65
Definition InterpolatorHandle.h:14
~InterpolatorHandle() override
Destructor that frees and deletes pointers accordingly.
Definition InterpolatorHandle.cu:115
InterpolatorHandle(const InterpolatorHandle &)=delete
Disabling copy constructor and assignment operator to prevent misuse.
InterpolatorHandle(isce3::core::dataInterpMethod interp_method)
Class constructor.
Definition InterpolatorHandle.cu:65
Definition gpuInterpolator.h:13

Generated for ISCE3.0 by doxygen 1.13.2.