Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
Public Types | Public Member Functions | List of all members
ska::cheetah::tdao::cuda::Tdao Class Reference

CUDA/Thrust implementation of the Tdao module. More...

Inheritance diagram for ska::cheetah::tdao::cuda::Tdao:
Inheritance graph
Collaboration diagram for ska::cheetah::tdao::cuda::Tdao:
Collaboration graph

Public Types

typedef cheetah::Cuda Architecture
 
typedef panda::nvidia::DeviceCapability< 2, 0, panda::nvidia::giga/2 > ArchitectureCapability
 
typedef panda::PoolResource< Architecture > ResourceType
 

Public Member Functions

 Tdao (Config const &config, tdao::Config const &algo_config)
 Construct a new Tdao object. More...
 
 Tdao (Tdao const &)=delete
 
 Tdao (Tdao &&)=default
 
template<typename T , typename Alloc >
void process (ResourceType &gpu, data::PowerSeries< Architecture, T, Alloc >const &input, data::Ccl &output, data::DedispersionMeasureType< float > dm, data::AccelerationType acc, std::size_t nharmonics)
 Find peaks in a power series above a statistical threshold. More...
 
template<typename T >
std::size_t _execute (typename thrust::device_vector< T >::const_iterator in, std::size_t size, size_t offset, float threshold)
 
- Public Member Functions inherited from ska::cheetah::utils::AlgorithmBase< Config, tdao::Config >
 AlgorithmBase (Config const &impl_config, tdao::Config const &algo_config)
 
 AlgorithmBase (AlgorithmBase const &)=delete
 
 AlgorithmBase (AlgorithmBase &&)=default
 

Additional Inherited Members

- Protected Attributes inherited from ska::cheetah::utils::AlgorithmBase< Config, tdao::Config >
Config const & _impl_config
 
tdao::Config const & _algo_config
 

Detailed Description

CUDA/Thrust implementation of the Tdao module.

Definition at line 26 of file Tdao.cuh.

Constructor & Destructor Documentation

◆ Tdao()

ska::cheetah::tdao::cuda::Tdao::Tdao ( Config const &  config,
tdao::Config const &  algo_config 
)

Construct a new Tdao object.

Parameters
configThe implementation configuration
algo_configThe algorithm configuration

Definition at line 9 of file Tdao.cu.

10  : utils::AlgorithmBase<Config,tdao::Config>(config,algo_config)
11 {
12 }

Member Function Documentation

◆ process()

template<typename T , typename Alloc >
void ska::cheetah::tdao::cuda::Tdao::process ( ResourceType &  gpu,
data::PowerSeries< Architecture, T, Alloc >const &  input,
data::Ccl output,
data::DedispersionMeasureType< float >  dm,
data::AccelerationType  acc,
std::size_t  nharmonics 
)

Find peaks in a power series above a statistical threshold.

Parameters
gpuThe gpu to process on
inputThe input power series
outputThe output candidate list
[in]dmThe dispersion measure of the power series
[in]accThe acceleration value of the power series
[in]nharmonicsThe number of harmonic sums performed to produce the power series
Template Parameters
TThe value type of the input
AllocThe allocator type of the input

Definition at line 141 of file Tdao.cu.

147 {
148  PUSH_NVTX_RANGE("cuda_Tdao_process",0);
149  PANDA_LOG_DEBUG << "GPU ID: "<<gpu.device_id();
150  _prepare(input.size());
151  float power_threshold = input.equiv_sigma_to_power(_algo_config.significance_threshold());
152  std::size_t end_bin = (std::size_t) (_algo_config.maximum_frequency()/input.frequency_step()).value();
153  std::size_t start_bin = (std::size_t) (_algo_config.minimum_frequency()/input.frequency_step()).value();
154  std::size_t size = std::min(end_bin,input.size());
155  PANDA_LOG_DEBUG << "Bin range to be searched -> ("<<start_bin<<", "<<size<<")";
156  PUSH_NVTX_RANGE("cuda_Tdao_process_execute_kernels",1);
157  std::size_t num_copied = _execute<T>(input.begin(),size,start_bin,power_threshold);
158  POP_NVTX_RANGE; // cuda_Tdao_process_execute_kernels
159  PANDA_LOG_DEBUG << "Found " << num_copied << " candidates above power threshold of "
160  << power_threshold <<" (DM="<< dm <<", Acc="<<acc<<", unfiltered)";
161  PUSH_NVTX_RANGE("cuda_Tdao_process_filter_unique",2);
162  _filter_unique(input,output,num_copied,dm,acc,nharmonics);
163  POP_NVTX_RANGE; // cuda_Tdao_process_filter_unique
164  POP_NVTX_RANGE; // cuda_Tdao_process
165 }
data::FourierFrequencyType maximum_frequency() const
The maximum frequency to search for candidates at.
Definition: Config.cpp:69
float significance_threshold() const
The significance threshold for candidates.
Definition: Config.cpp:49
data::FourierFrequencyType minimum_frequency() const
The minumum frequency to search for candidates at.
Definition: Config.cpp:59
Here is the call graph for this function:

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