File indexing completed on 2026-04-09 07:49:44
0001 #pragma once
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include <string>
0015 #include "sphoton.h"
0016 #include "sphotonlite.h"
0017 #include "SPM_future.h"
0018
0019
0020
0021 struct SPM
0022 {
0023 static constexpr unsigned ALREADY_HITMASK_SELECTED = 0xffffffffu ;
0024 static constexpr float DEFAULT_TIME_WINDOW = 1.0f ;
0025 static constexpr float NOMERGE_TIME_WINDOW = 0.0f ;
0026
0027 template<typename T>
0028 static SPM_future<T> merge_partial_select_async(
0029 const T* d_photonlite,
0030 size_t num_photonlite,
0031 unsigned select_flagmask,
0032 float time_window,
0033 cudaStream_t stream );
0034
0035 template<typename T>
0036 static void merge_partial_select(
0037 const T* d_in,
0038 size_t num_in,
0039 T** d_out,
0040 size_t* num_out,
0041 unsigned select_flagmask = 0xffffffffu,
0042 float time_window = DEFAULT_TIME_WINDOW,
0043 cudaStream_t stream = 0 );
0044
0045
0046 template<typename T>
0047 static int copy_device_to_host_async( T* h, T* d, size_t num_items, cudaStream_t stream = 0 );
0048
0049 static void free( void* d_ptr );
0050 static void free_async(void* d_ptr, cudaStream_t stream = 0) ;
0051
0052
0053 };