HOPS
HOPS class reference
Public Member Functions | Protected Types | Protected Member Functions | List of all members
hops::MHO_MBDelaySearchCUDA Class Reference

Class MHO_MBDelaySearchCUDA. More...

#include <MHO_MBDelaySearchCUDA.hh>

Inheritance diagram for hops::MHO_MBDelaySearchCUDA:
[legend]

Public Member Functions

 MHO_MBDelaySearchCUDA ()
 
virtual ~MHO_MBDelaySearchCUDA ()
 
- Public Member Functions inherited from hops::MHO_MBDelaySearch
 MHO_MBDelaySearch ()
 
virtual ~MHO_MBDelaySearch ()
 
double GetAverageFrequency () const
 
double GetCoarseDR () const
 Getter for coarse dr. More...
 
double GetCoarseMBD () const
 Getter for coarse mbd. More...
 
double GetCoarseSBD () const
 Getter for coarse sbd. More...
 
delay_rate_axis_typeGetDRAxis ()
 
int GetDRMaxBin () const
 Getter for drmax bin. More...
 
void GetDRWindow (double &low, double &high) const
 Getter for dr window. More...
 
double GetFrequencySpacing () const
 
time_axis_typeGetMBDAxis ()
 
int GetMBDMaxBin () const
 Getter for mbdmax bin. More...
 
void GetMBDWindow (double &low, double &high) const
 Getter for mbd window. More...
 
int GetNDRBins () const
 Getter for ndrbins. More...
 
int GetNDRSPBins () const
 
int GetNMBDBins () const
 Getter for N mbd bins. More...
 
double GetNPointsSearched () const
 
int GetNSBDBins () const
 Getter for n sbd bins. More...
 
double GetSBDBinSeparation () const
 Getter for sbd bin separation. More...
 
int GetSBDMaxBin () const
 Getter for sbdmax bin. More...
 
void GetSBDWindow (double &low, double &high) const
 Getter for sbd window. More...
 
double GetSearchMaximumAmplitude () const
 
void SetCoherenceTime (double t_cohere)
 Setter for coherence time (enables incoherent averaging over delay rate) More...
 
void SetDRWindow (double low, double high)
 Setter for dr window. More...
 
void SetMBDWindow (double low, double high)
 Setter for mbd window. More...
 
void SetReferenceFrequency (double ref_freq)
 Setter for reference frequency. More...
 
void SetSBDWindow (double low, double high)
 Setter for sbd window. More...
 
void SetWeights (weight_type *wt_data)
 Setter for weights. More...
 
- Public Member Functions inherited from hops::MHO_InspectingOperator< visibility_type >
 MHO_InspectingOperator ()
 
virtual ~MHO_InspectingOperator ()
 
virtual bool Execute () override
 Executes the inspection on the input array. More...
 
virtual bool Initialize () override
 initializes inspection for a single const array of type XArgType. More...
 
virtual void SetArgs (const visibility_type *in)
 Setter for args. More...
 
- Public Member Functions inherited from hops::MHO_Operator
 MHO_Operator ()
 
virtual ~MHO_Operator ()
 
std::string GetName () const
 Getter for operator name. More...
 
double Priority () const
 Get the the priority field value. More...
 
void SetName (std::string name)
 Setter for operator name. More...
 
void SetPriority (double priority)
 Setter for operator priority (determines order of execution within a operator category) More...
 

Protected Types

using XArgType = visibility_type
 
- Protected Types inherited from hops::MHO_MBDelaySearch
using FFT_2D_ENGINE_TYPE = MHO_MultidimensionalFastFourierTransform< mbd_dr_type >
 
using FFT_ENGINE_TYPE = MHO_MultidimensionalFastFourierTransform< mbd_type >
 
using XArgType = visibility_type
 

Protected Member Functions

virtual bool ExecuteImpl (const XArgType *in) override
 Executes MBDelaySearch algorithm using provided input arguments. More...
 
virtual bool InitializeImpl (const XArgType *in) override
 Initializes MHO_MBDelaySearchCUDA with input arguments and calculates frequency grid for MBD search. More...
 
- Protected Member Functions inherited from hops::MHO_MBDelaySearch
void apply_dr_boxcar_smooth (mbd_dr_type &buffer, std::vector< double > &scratch)
 Applies incoherent box-car smoothing over the delay-rate dimension of the given search buffer, using scratch as a temporary per-MBD amplitude row. When fTCohereEnabled is false this is a no-op. Each backend calls this directly with its own buffer and scratch space: base: apply_dr_boxcar_smooth(fSearchBuffer, fSmoothedAmpBuffer) OpenMP: apply_dr_boxcar_smooth(local_sb, fPerThreadSmoothScratch[tid]) CUDA: apply_dr_boxcar_smooth(fHostBuffer, fSmoothedAmpBuffer) More...
 
bool finalize_search ()
 Finalize the coarse search: validate bin locations, compute coarse delay values from axis lookups, and return true only when a valid peak was found (all bin indices >= 0). More...
 
void GetWindow (const MHO_Axis< double > &axis, bool win_set, const double *win, double bin_width, double &low, double &high) const
 
void SetWindow (double *win, double low, double high)
 

Additional Inherited Members

- Protected Attributes inherited from hops::MHO_MBDelaySearch
double fAccPeriod
 
double fAverageFreq
 
FFT_2D_ENGINE_TYPE fBatchedFFTEngine
 
std::vector< double > fChannelFreqs
 
std::map< std::size_t, std::size_t > fChannelIndexToFreqPointIndex
 
double fCoarseDR
 
double fCoarseMBD
 
double fCoarseSBD
 
MHO_CyclicRotator< mbd_typefCyclicRotator
 
MHO_DelayRate fDelayRateCalc
 
MHO_Axis< double > fDRAxis
 
double fDRBinSep
 
int fDRMaxBin
 
double fDRWin [2]
 
bool fDRWinSet
 
FFT_ENGINE_TYPE fFFTEngine
 
MHO_UniformGridPointsCalculator fGridCalc
 
double fGridSpace
 
double fGridStart
 
bool fInitialized
 
double fMax
 
MHO_ExtremaSearch< mbd_amp_typefMaxSearch
 
mbd_amp_type fMBDAmpWorkspace
 
MHO_Axis< double > fMBDAxis
 
std::vector< std::size_t > fMBDBinForChannel
 
std::map< std::size_t, std::size_t > fMBDBinMap
 
double fMBDBinSep
 
int fMBDMaxBin
 
double fMBDWin [2]
 
bool fMBDWinSet
 
mbd_type fMBDWorkspace
 
std::size_t fNDR
 
std::size_t fNDRSP
 
std::size_t fNGridPoints
 
double fNPointsSearched
 
std::size_t fNSBD
 
double fRefFreq
 
MHO_Axis< double > fSBDAxis
 
double fSBDBinSep
 
visibility_type fSBDDrWorkspace
 
int fSBDMaxBin
 
int fSBDStart
 
int fSBDStop
 
double fSBDWin [2]
 
bool fSBDWinSet
 
mbd_dr_type fSearchBuffer
 
std::vector< double > fSmoothedAmpBuffer
 
double fTCohere
 
bool fTCohereEnabled
 
weight_typefWeights
 
weight_type fWeightsWorkspace
 
visibility_type sbd_dr_data
 
- Protected Attributes inherited from hops::MHO_InspectingOperator< visibility_type >
const visibility_typefArg
 

Detailed Description

Class MHO_MBDelaySearchCUDA.

This is an ultra basic CUDA implementation of the the coarse MBD/SBD/DR search, its quite primitive and only calls the CUFFT library to speed up the inner-most loop over (DR,MBD) space. It is not optimized and has far too much movement of data between host <-> device, additional work is need to optimize this routine.

Author
J. Barrett - barre.nosp@m.ttj@.nosp@m.mit.e.nosp@m.du @dateTue Jul 16 10:40:47 PM EDT 2024

Member Typedef Documentation

◆ XArgType

Constructor & Destructor Documentation

◆ MHO_MBDelaySearchCUDA()

hops::MHO_MBDelaySearchCUDA::MHO_MBDelaySearchCUDA ( )

◆ ~MHO_MBDelaySearchCUDA()

hops::MHO_MBDelaySearchCUDA::~MHO_MBDelaySearchCUDA ( )
virtual

Member Function Documentation

◆ ExecuteImpl()

bool hops::MHO_MBDelaySearchCUDA::ExecuteImpl ( const XArgType in)
overrideprotectedvirtual

Executes MBDelaySearch algorithm using provided input arguments.

Parameters
inInput argument of type const XArgType* containing frequency axis and delay rate workspace.
Returns
Boolean indicating whether the execution was successful or not.
Note
This is a virtual function.

Reimplemented from hops::MHO_MBDelaySearch.

◆ InitializeImpl()

bool hops::MHO_MBDelaySearchCUDA::InitializeImpl ( const XArgType in)
overrideprotectedvirtual

Initializes MHO_MBDelaySearchCUDA with input arguments and calculates frequency grid for MBD search.

Parameters
inInput argument of type const XArgType* containing channel axis data
Returns
True if initialization is successful, false otherwise
Note
This is a virtual function.

Reimplemented from hops::MHO_MBDelaySearch.


The documentation for this class was generated from the following files: