Go to the documentation of this file.
18 std::cout <<
"building Doublets out of " <<
nhits <<
" Hits" << std::endl;
32 cellStorage_ = std::make_unique<unsigned char[]>(cellStorageSize);
81 assert(tuples_d && quality_d);
84 cms::cuda::launchZero(tuples_d, cudaStream);
110 gpuPixelDoublets::fishbone(
114 kernel_find_ntuplets(
hh.view(),
135 gpuPixelDoublets::fishbone(
140 kernel_checkOverflows(tuples_d,
161 kernel_classifyTracks(tuples_d, tracks_d,
params_.
cuts_, quality_d);
180 kernel_rejectDuplicate(
hh.view(),
188 kernel_sharedHitCleaner(
hh.view(),
196 kernel_simpleTripletCleaner(
hh.view(),
204 kernel_tripletCleaner(
hh.view(),
216 kernel_doStatsForTracks(tuples_d, quality_d,
counters_);
219 #ifdef DUMP_GPU_TK_TUPLES
220 static std::atomic<int>
iev(0);
const bool earlyFishbone_
caConstants::CellTracks * device_theCellTracksContainer_
cms::cuda::AtomicPairCounter * device_hitTuple_apc_
const HitContainer *__restrict__ const TkSoA *__restrict__ const Quality *__restrict__ const CAHitNtupletGeneratorKernelsGPU::HitToTuple *__restrict__ int32_t int iev
const uint16_t minHitsForSharingCut_
caConstants::CellNeighbors CellNeighbors
uint32_t const T *__restrict__ const uint32_t *__restrict__ int32_t int Histo::index_type cudaStream_t stream
unique_ptr< caConstants::CellTracksVector > device_theCellTracks_
const float dcaCutInnerTriplet_
unique_ptr< caConstants::CellNeighborsVector > device_theCellNeighbors_
unique_ptr< GPUCACell[]> device_theCells_
void launchKernels(HitsOnCPU const &hh, TkSoA *tuples_d, cudaStream_t cudaStream)
uint32_t * device_nCells_
unique_ptr< TupleMultiplicity > device_tupleMultiplicity_
cms::cuda::AtomicPairCounter * device_hitToTuple_apc_
const bool idealConditions_
const bool dupPassThrough_
const bool doSharedHitCut_
const caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple cms::cuda::AtomicPairCounter const GPUCACell *__restrict__ const uint32_t *__restrict__ const gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell *__restrict__ int32_t uint32_t CAHitNtupletGeneratorKernelsGPU::Counters * counters
const uint32_t maxNumberOfDoublets_
caConstants::CellNeighbors * device_theCellNeighborsContainer_
const uint32_t minHitsPerNtuplet_
const bool useSimpleTripletCleaner_
unique_ptr< HitToTuple > device_hitToTuple_
void classifyTuples(HitsOnCPU const &hh, TkSoA *tuples_d, cudaStream_t cudaStream)
const float dcaCutOuterTriplet_
constexpr uint32_t maxNumOfActiveDoublets
constexpr int nPairsForQuadruplets
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int nActualPairs
unique_ptr< GPUCACell::OuterHitOfCell[]> device_isOuterHitOfCell_
const bool includeJumpingForwardDoublets_
const float CAThetaCutForward_
void fillHitDetIndices(HitsView const *hv, TkSoA *tuples_d, cudaStream_t cudaStream)
static void printCounters(Counters const *counters)
constexpr int nPairsForTriplets
HitToTuple::View hitToTupleView_
constexpr const Quality * qualityData() const
unique_ptr< unsigned char[]> cellStorage_
void buildDoublets(HitsOnCPU const &hh, cudaStream_t stream)
const float CAThetaCutBarrel_