CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
CAHitNtupletGeneratorKernels< TTraits > Class Template Reference

#include <CAHitNtupletGeneratorKernels.h>

Public Types

using Counters = cAHitNtupletGenerator::Counters
 
using HitContainer = pixelTrack::HitContainer
 
using HitsOnCPU = TrackingRecHit2DHeterogeneous< Traits >
 
using HitsOnGPU = TrackingRecHit2DSOAView
 
using HitsView = TrackingRecHit2DSOAView
 
using HitToTuple = caConstants::HitToTuple
 
using Params = cAHitNtupletGenerator::Params
 
using Quality = pixelTrack::Quality
 
using QualityCuts = cAHitNtupletGenerator::QualityCuts
 
using TkSoA = pixelTrack::TrackSoA
 
using Traits = TTraits
 
using TupleMultiplicity = caConstants::TupleMultiplicity
 
template<typename T >
using unique_ptr = typename Traits::template unique_ptr< T >
 

Public Member Functions

void allocateOnGPU (cudaStream_t stream)
 
void buildDoublets (HitsOnCPU const &hh, cudaStream_t stream)
 
 CAHitNtupletGeneratorKernels (Params const &params)
 
void classifyTuples (HitsOnCPU const &hh, TkSoA *tuples_d, cudaStream_t cudaStream)
 
void cleanup (cudaStream_t cudaStream)
 
void fillHitDetIndices (HitsView const *hv, TkSoA *tuples_d, cudaStream_t cudaStream)
 
void launchKernels (HitsOnCPU const &hh, TkSoA *tuples_d, cudaStream_t cudaStream)
 
void setCounters (Counters *counters)
 
TupleMultiplicity const * tupleMultiplicity () const
 
 ~CAHitNtupletGeneratorKernels ()=default
 

Static Public Member Functions

static void printCounters (Counters const *counters)
 

Private Member Functions

uint32_t nDoubletBlocks (uint32_t blockSize)
 Compute the number of doublet blocks for block size. More...
 
uint32_t nQuadrupletBlocks (uint32_t blockSize)
 Compute the number of quadruplet blocks for block size. More...
 

Private Attributes

unique_ptr< unsigned char[]> cellStorage_
 
Counterscounters_ = nullptr
 
unique_ptr< HitToTupledevice_hitToTuple_
 
cms::cuda::AtomicPairCounterdevice_hitToTuple_apc_ = nullptr
 
cms::cuda::AtomicPairCounterdevice_hitTuple_apc_ = nullptr
 
unique_ptr< GPUCACell::OuterHitOfCell[]> device_isOuterHitOfCell_
 
uint32_t * device_nCells_ = nullptr
 
unique_ptr< cms::cuda::AtomicPairCounter::c_type[]> device_storage_
 
unique_ptr< caConstants::CellNeighborsVectordevice_theCellNeighbors_
 
caConstants::CellNeighborsdevice_theCellNeighborsContainer_
 
unique_ptr< GPUCACell[]> device_theCells_
 
unique_ptr< caConstants::CellTracksVectordevice_theCellTracks_
 
caConstants::CellTracksdevice_theCellTracksContainer_
 
unique_ptr< TupleMultiplicitydevice_tupleMultiplicity_
 
Params const & params_
 
const uint32_t paramsMaxDoubletes3Quarters_
 Intermediate result avoiding repeated computations. More...
 

Detailed Description

template<typename TTraits>
class CAHitNtupletGeneratorKernels< TTraits >

Definition at line 147 of file CAHitNtupletGeneratorKernels.h.

Member Typedef Documentation

◆ Counters

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::Counters = cAHitNtupletGenerator::Counters

Definition at line 153 of file CAHitNtupletGeneratorKernels.h.

◆ HitContainer

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::HitContainer = pixelTrack::HitContainer

Definition at line 167 of file CAHitNtupletGeneratorKernels.h.

◆ HitsOnCPU

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::HitsOnCPU = TrackingRecHit2DHeterogeneous<Traits>

Definition at line 160 of file CAHitNtupletGeneratorKernels.h.

◆ HitsOnGPU

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::HitsOnGPU = TrackingRecHit2DSOAView

Definition at line 159 of file CAHitNtupletGeneratorKernels.h.

◆ HitsView

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::HitsView = TrackingRecHit2DSOAView

Definition at line 158 of file CAHitNtupletGeneratorKernels.h.

◆ HitToTuple

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::HitToTuple = caConstants::HitToTuple

Definition at line 162 of file CAHitNtupletGeneratorKernels.h.

◆ Params

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::Params = cAHitNtupletGenerator::Params

Definition at line 152 of file CAHitNtupletGeneratorKernels.h.

◆ Quality

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::Quality = pixelTrack::Quality

Definition at line 165 of file CAHitNtupletGeneratorKernels.h.

◆ QualityCuts

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::QualityCuts = cAHitNtupletGenerator::QualityCuts

Definition at line 151 of file CAHitNtupletGeneratorKernels.h.

◆ TkSoA

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::TkSoA = pixelTrack::TrackSoA

Definition at line 166 of file CAHitNtupletGeneratorKernels.h.

◆ Traits

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::Traits = TTraits

Definition at line 149 of file CAHitNtupletGeneratorKernels.h.

◆ TupleMultiplicity

template<typename TTraits >
using CAHitNtupletGeneratorKernels< TTraits >::TupleMultiplicity = caConstants::TupleMultiplicity

Definition at line 163 of file CAHitNtupletGeneratorKernels.h.

◆ unique_ptr

template<typename TTraits >
template<typename T >
using CAHitNtupletGeneratorKernels< TTraits >::unique_ptr = typename Traits::template unique_ptr<T>

Definition at line 156 of file CAHitNtupletGeneratorKernels.h.

Constructor & Destructor Documentation

◆ CAHitNtupletGeneratorKernels()

template<typename TTraits >
CAHitNtupletGeneratorKernels< TTraits >::CAHitNtupletGeneratorKernels ( Params const &  params)
inline

Definition at line 169 of file CAHitNtupletGeneratorKernels.h.

170  : params_(params), paramsMaxDoubletes3Quarters_(3 * params.maxNumberOfDoublets_ / 4) {}

◆ ~CAHitNtupletGeneratorKernels()

template<typename TTraits >
CAHitNtupletGeneratorKernels< TTraits >::~CAHitNtupletGeneratorKernels ( )
default

Member Function Documentation

◆ allocateOnGPU()

void CAHitNtupletGeneratorKernelsCPU::allocateOnGPU ( cudaStream_t  stream)

Definition at line 9 of file CAHitNtupletGeneratorKernelsAlloc.h.

9  {
10 #endif
11  // ALLOCATIONS FOR THE INTERMEDIATE RESULTS (STAYS ON WORKER)
14 
15  device_theCellNeighbors_ = Traits::template make_unique<caConstants::CellNeighborsVector>(stream);
16  device_theCellTracks_ = Traits::template make_unique<caConstants::CellTracksVector>(stream);
17 
18  device_hitToTuple_ = Traits::template make_unique<HitToTuple>(stream);
19 
20  device_tupleMultiplicity_ = Traits::template make_unique<TupleMultiplicity>(stream);
21 
22  device_storage_ = Traits::template make_unique<cms::cuda::AtomicPairCounter::c_type[]>(3, stream);
23 
26  device_nCells_ = (uint32_t*)(device_storage_.get() + 2);
27 
29  cudaCheck(cudaMemsetAsync(device_nCells_, 0, sizeof(uint32_t), stream));
30  } else {
31  *device_nCells_ = 0;
32  }
33  cms::cuda::launchZero(device_tupleMultiplicity_.get(), stream);
34  cms::cuda::launchZero(device_hitToTuple_.get(), stream); // we may wish to keep it in the edm...
35 }

References cudaCheck, CAHitNtupletGeneratorKernels< TTraits >::device_hitToTuple_, CAHitNtupletGeneratorKernels< TTraits >::device_hitToTuple_apc_, CAHitNtupletGeneratorKernels< TTraits >::device_hitTuple_apc_, CAHitNtupletGeneratorKernels< TTraits >::device_nCells_, CAHitNtupletGeneratorKernels< TTraits >::device_storage_, CAHitNtupletGeneratorKernels< TTraits >::device_theCellNeighbors_, CAHitNtupletGeneratorKernels< TTraits >::device_theCellTracks_, CAHitNtupletGeneratorKernels< TTraits >::device_tupleMultiplicity_, cms::cuda::stream, svgfig::template(), and relativeConstraints::value.

Referenced by CAHitNtupletGeneratorOnGPU::makeTuples(), and CAHitNtupletGeneratorOnGPU::makeTuplesAsync().

◆ buildDoublets()

void CAHitNtupletGeneratorKernelsCPU::buildDoublets ( HitsOnCPU const &  hh,
cudaStream_t  stream 
)

Definition at line 14 of file CAHitNtupletGeneratorKernels.cc.

14  {
15  auto nhits = hh.nHits();
16 
17 #ifdef NTUPLE_DEBUG
18  std::cout << "building Doublets out of " << nhits << " Hits" << std::endl;
19 #endif
20 
21  // use "nhits" to heuristically dimension the workspace
22 
23  // no need to use the Traits allocations, since we know this is being compiled for the CPU
24  //device_isOuterHitOfCell_ = Traits::template make_unique<GPUCACell::OuterHitOfCell[]>(std::max(1U, nhits), stream);
25  device_isOuterHitOfCell_ = std::make_unique<GPUCACell::OuterHitOfCell[]>(std::max(1U, nhits));
27 
28  auto cellStorageSize = caConstants::maxNumOfActiveDoublets * sizeof(GPUCACell::CellNeighbors) +
30  // no need to use the Traits allocations, since we know this is being compiled for the CPU
31  //cellStorage_ = Traits::template make_unique<unsigned char[]>(cellStorageSize, stream);
32  cellStorage_ = std::make_unique<unsigned char[]>(cellStorageSize);
35  sizeof(GPUCACell::CellNeighbors));
36 
37  gpuPixelDoublets::initDoublets(device_isOuterHitOfCell_.get(),
38  nhits,
43 
44  // no need to use the Traits allocations, since we know this is being compiled for the CPU
45  //device_theCells_ = Traits::template make_unique<GPUCACell[]>(params_.maxNumberOfDoublets_, stream);
46  device_theCells_ = std::make_unique<GPUCACell[]>(params_.maxNumberOfDoublets_);
47  if (0 == nhits)
48  return; // protect against empty events
49 
50  // take all layer pairs into account
53  // exclude forward "jumping" layer pairs
55  }
56  if (params_.minHitsPerNtuplet_ > 3) {
57  // for quadruplets, exclude all "jumping" layer pairs
59  }
60 
62  gpuPixelDoublets::getDoubletsFromHisto(device_theCells_.get(),
66  hh.view(),
74 }

References cms::cuda::assert(), CAHitNtupletGeneratorKernels< TTraits >::cellStorage_, gather_cfg::cout, CAHitNtupletGeneratorKernels< TTraits >::device_isOuterHitOfCell_, CAHitNtupletGeneratorKernels< TTraits >::device_nCells_, CAHitNtupletGeneratorKernels< TTraits >::device_theCellNeighbors_, CAHitNtupletGeneratorKernels< TTraits >::device_theCellNeighborsContainer_, CAHitNtupletGeneratorKernels< TTraits >::device_theCells_, CAHitNtupletGeneratorKernels< TTraits >::device_theCellTracks_, CAHitNtupletGeneratorKernels< TTraits >::device_theCellTracksContainer_, cAHitNtupletGenerator::Params::doClusterCut_, cAHitNtupletGenerator::Params::doPtCut_, cAHitNtupletGenerator::Params::doZ0Cut_, hh, cAHitNtupletGenerator::Params::idealConditions_, cAHitNtupletGenerator::Params::includeJumpingForwardDoublets_, SiStripPI::max, cAHitNtupletGenerator::Params::maxNumberOfDoublets_, caConstants::maxNumOfActiveDoublets, cAHitNtupletGenerator::Params::minHitsPerNtuplet_, gpuPixelDoublets::nActualPairs, nhits, gpuPixelDoublets::nPairs, gpuPixelDoublets::nPairsForQuadruplets, gpuPixelDoublets::nPairsForTriplets, CAHitNtupletGeneratorKernels< TTraits >::params_, and mitigatedMETSequence_cff::U.

Referenced by CAHitNtupletGeneratorOnGPU::makeTuples(), and CAHitNtupletGeneratorOnGPU::makeTuplesAsync().

◆ classifyTuples()

void CAHitNtupletGeneratorKernelsCPU::classifyTuples ( HitsOnCPU const &  hh,
TkSoA tuples_d,
cudaStream_t  cudaStream 
)

Definition at line 157 of file CAHitNtupletGeneratorKernels.cc.

157  {
158  auto const *tuples_d = &tracks_d->hitIndices;
159  auto *quality_d = tracks_d->qualityData();
160 
161  // classify tracks based on kinematics
162  kernel_classifyTracks(tuples_d, tracks_d, params_.cuts_, quality_d);
163 
164  if (params_.lateFishbone_) {
165  // apply fishbone cleaning to good tracks
166  kernel_fishboneCleaner(device_theCells_.get(), device_nCells_, quality_d);
167  }
168 
169  // remove duplicates (tracks that share a doublet)
170  kernel_fastDuplicateRemover(device_theCells_.get(), device_nCells_, tuples_d, tracks_d);
171 
172  // fill hit->track "map"
174  kernel_countHitInTracks(tuples_d, quality_d, device_hitToTuple_.get());
175  cms::cuda::launchFinalize(device_hitToTuple_.get(), cudaStream);
176  kernel_fillHitInTracks(tuples_d, quality_d, device_hitToTuple_.get());
177  }
178 
179  // remove duplicates (tracks that share a hit)
180  if (params_.doSharedHitCut_) {
181  kernel_sharedHitCleaner(
182  hh.view(), tuples_d, tracks_d, quality_d, params_.minHitsForSharingCut_, device_hitToTuple_.get());
183  }
184 
185  if (params_.doStats_) {
186  // counters (add flag???)
187  kernel_doStatsForHitInTracks(device_hitToTuple_.get(), counters_);
188  kernel_doStatsForTracks(tuples_d, quality_d, counters_);
189  }
190 
191 #ifdef DUMP_GPU_TK_TUPLES
192  static std::atomic<int> iev(0);
193  ++iev;
194  kernel_print_found_ntuplets(hh.view(), tuples_d, tracks_d, quality_d, device_hitToTuple_.get(), 100, iev);
195 #endif
196 }

References CAHitNtupletGeneratorKernels< TTraits >::counters_, cAHitNtupletGenerator::Params::cuts_, CAHitNtupletGeneratorKernels< TTraits >::device_hitToTuple_, CAHitNtupletGeneratorKernels< TTraits >::device_nCells_, CAHitNtupletGeneratorKernels< TTraits >::device_theCells_, cAHitNtupletGenerator::Params::doSharedHitCut_, cAHitNtupletGenerator::Params::doStats_, hh, TrackSoAHeterogeneousT< S >::hitIndices, iev, cAHitNtupletGenerator::Params::lateFishbone_, cAHitNtupletGenerator::Params::minHitsForSharingCut_, CAHitNtupletGeneratorKernels< TTraits >::params_, and TrackSoAHeterogeneousT< S >::qualityData().

Referenced by CAHitNtupletGeneratorOnGPU::makeTuples(), and CAHitNtupletGeneratorOnGPU::makeTuplesAsync().

◆ cleanup()

template<typename TTraits >
void CAHitNtupletGeneratorKernels< TTraits >::cleanup ( cudaStream_t  cudaStream)

◆ fillHitDetIndices()

void CAHitNtupletGeneratorKernelsCPU::fillHitDetIndices ( HitsView const *  hv,
TkSoA tuples_d,
cudaStream_t  cudaStream 
)

Definition at line 9 of file CAHitNtupletGeneratorKernels.cc.

9  {
10  kernel_fillHitDetIndices(&tracks_d->hitIndices, hv, &tracks_d->detIndices);
11 }

References TrackSoAHeterogeneousT< S >::detIndices, and TrackSoAHeterogeneousT< S >::hitIndices.

Referenced by CAHitNtupletGeneratorOnGPU::makeTuples(), and CAHitNtupletGeneratorOnGPU::makeTuplesAsync().

◆ launchKernels()

void CAHitNtupletGeneratorKernelsCPU::launchKernels ( HitsOnCPU const &  hh,
TkSoA tuples_d,
cudaStream_t  cudaStream 
)

Definition at line 77 of file CAHitNtupletGeneratorKernels.cc.

77  {
78  auto *tuples_d = &tracks_d->hitIndices;
79  auto *quality_d = tracks_d->qualityData();
80 
81  assert(tuples_d && quality_d);
82 
83  // zero tuples
84  cms::cuda::launchZero(tuples_d, cudaStream);
85 
86  auto nhits = hh.nHits();
88 
89  // std::cout << "N hits " << nhits << std::endl;
90  // if (nhits<2) std::cout << "too few hits " << nhits << std::endl;
91 
92  //
93  // applying conbinatoric cleaning such as fishbone at this stage is too expensive
94  //
95 
96  kernel_connect(device_hitTuple_apc_,
97  device_hitToTuple_apc_, // needed only to be reset, ready for next kernel
98  hh.view(),
99  device_theCells_.get(),
104  params_.ptmin_,
109 
110  if (nhits > 1 && params_.earlyFishbone_) {
111  gpuPixelDoublets::fishbone(
112  hh.view(), device_theCells_.get(), device_nCells_, device_isOuterHitOfCell_.get(), nhits, false);
113  }
114 
115  kernel_find_ntuplets(hh.view(),
116  device_theCells_.get(),
118  device_theCellTracks_.get(),
119  tuples_d,
121  quality_d,
123  if (params_.doStats_)
124  kernel_mark_used(hh.view(), device_theCells_.get(), device_nCells_);
125 
126  cms::cuda::finalizeBulk(device_hitTuple_apc_, tuples_d);
127 
128  // remove duplicates (tracks that share a doublet)
129  kernel_earlyDuplicateRemover(device_theCells_.get(), device_nCells_, tuples_d, quality_d);
130 
131  kernel_countMultiplicity(tuples_d, quality_d, device_tupleMultiplicity_.get());
132  cms::cuda::launchFinalize(device_tupleMultiplicity_.get(), cudaStream);
133  kernel_fillMultiplicity(tuples_d, quality_d, device_tupleMultiplicity_.get());
134 
135  if (nhits > 1 && params_.lateFishbone_) {
136  gpuPixelDoublets::fishbone(
137  hh.view(), device_theCells_.get(), device_nCells_, device_isOuterHitOfCell_.get(), nhits, true);
138  }
139 
140  if (params_.doStats_) {
141  kernel_checkOverflows(tuples_d,
143  device_hitToTuple_.get(),
145  device_theCells_.get(),
148  device_theCellTracks_.get(),
150  nhits,
152  counters_);
153  }
154 }

References cms::cuda::assert(), cAHitNtupletGenerator::Params::CAThetaCutBarrel_, cAHitNtupletGenerator::Params::CAThetaCutForward_, CAHitNtupletGeneratorKernels< TTraits >::counters_, cAHitNtupletGenerator::Params::dcaCutInnerTriplet_, cAHitNtupletGenerator::Params::dcaCutOuterTriplet_, CAHitNtupletGeneratorKernels< TTraits >::device_hitToTuple_, CAHitNtupletGeneratorKernels< TTraits >::device_hitToTuple_apc_, CAHitNtupletGeneratorKernels< TTraits >::device_hitTuple_apc_, CAHitNtupletGeneratorKernels< TTraits >::device_isOuterHitOfCell_, CAHitNtupletGeneratorKernels< TTraits >::device_nCells_, CAHitNtupletGeneratorKernels< TTraits >::device_theCellNeighbors_, CAHitNtupletGeneratorKernels< TTraits >::device_theCells_, CAHitNtupletGeneratorKernels< TTraits >::device_theCellTracks_, CAHitNtupletGeneratorKernels< TTraits >::device_tupleMultiplicity_, cAHitNtupletGenerator::Params::doStats_, cAHitNtupletGenerator::Params::earlyFishbone_, cAHitNtupletGenerator::Params::hardCurvCut_, hh, TrackSoAHeterogeneousT< S >::hitIndices, cAHitNtupletGenerator::Params::lateFishbone_, cAHitNtupletGenerator::Params::maxNumberOfDoublets_, pixelGPUConstants::maxNumberOfHits, cAHitNtupletGenerator::Params::minHitsPerNtuplet_, nhits, CAHitNtupletGeneratorKernels< TTraits >::params_, cAHitNtupletGenerator::Params::ptmin_, and TrackSoAHeterogeneousT< S >::qualityData().

Referenced by CAHitNtupletGeneratorOnGPU::makeTuples(), and CAHitNtupletGeneratorOnGPU::makeTuplesAsync().

◆ nDoubletBlocks()

template<typename TTraits >
uint32_t CAHitNtupletGeneratorKernels< TTraits >::nDoubletBlocks ( uint32_t  blockSize)
inlineprivate

Compute the number of doublet blocks for block size.

Definition at line 215 of file CAHitNtupletGeneratorKernels.h.

215  {
216  // We want (3 * params_.maxNumberOfDoublets_ / 4 + blockSize - 1) / blockSize, but first part is pre-computed.
217  return (paramsMaxDoubletes3Quarters_ + blockSize - 1) / blockSize;
218  }

References CAHitNtupletGeneratorKernels< TTraits >::paramsMaxDoubletes3Quarters_.

◆ nQuadrupletBlocks()

template<typename TTraits >
uint32_t CAHitNtupletGeneratorKernels< TTraits >::nQuadrupletBlocks ( uint32_t  blockSize)
inlineprivate

Compute the number of quadruplet blocks for block size.

Definition at line 221 of file CAHitNtupletGeneratorKernels.h.

221  {
222  // caConstants::maxNumberOfQuadruplets is a constexpr, so the compiler will pre compute the 3*max/4
223  return (3 * caConstants::maxNumberOfQuadruplets / 4 + blockSize - 1) / blockSize;
224  }

References caConstants::maxNumberOfQuadruplets.

◆ printCounters()

void CAHitNtupletGeneratorKernelsCPU::printCounters ( Counters const *  counters)
static

Definition at line 4 of file CAHitNtupletGeneratorKernels.cc.

4  {
5  kernel_printCounters(counters);
6 }

References counters.

Referenced by CAHitNtupletGeneratorOnGPU::~CAHitNtupletGeneratorOnGPU().

◆ setCounters()

template<typename TTraits >
void CAHitNtupletGeneratorKernels< TTraits >::setCounters ( Counters counters)
inline

◆ tupleMultiplicity()

template<typename TTraits >
TupleMultiplicity const* CAHitNtupletGeneratorKernels< TTraits >::tupleMultiplicity ( ) const
inline

Member Data Documentation

◆ cellStorage_

template<typename TTraits >
unique_ptr<unsigned char[]> CAHitNtupletGeneratorKernels< TTraits >::cellStorage_
private

◆ counters_

template<typename TTraits >
Counters* CAHitNtupletGeneratorKernels< TTraits >::counters_ = nullptr
private

◆ device_hitToTuple_

template<typename TTraits >
unique_ptr<HitToTuple> CAHitNtupletGeneratorKernels< TTraits >::device_hitToTuple_
private

◆ device_hitToTuple_apc_

template<typename TTraits >
cms::cuda::AtomicPairCounter* CAHitNtupletGeneratorKernels< TTraits >::device_hitToTuple_apc_ = nullptr
private

◆ device_hitTuple_apc_

template<typename TTraits >
cms::cuda::AtomicPairCounter* CAHitNtupletGeneratorKernels< TTraits >::device_hitTuple_apc_ = nullptr
private

◆ device_isOuterHitOfCell_

template<typename TTraits >
unique_ptr<GPUCACell::OuterHitOfCell[]> CAHitNtupletGeneratorKernels< TTraits >::device_isOuterHitOfCell_
private

◆ device_nCells_

template<typename TTraits >
uint32_t* CAHitNtupletGeneratorKernels< TTraits >::device_nCells_ = nullptr
private

◆ device_storage_

template<typename TTraits >
unique_ptr<cms::cuda::AtomicPairCounter::c_type[]> CAHitNtupletGeneratorKernels< TTraits >::device_storage_
private

◆ device_theCellNeighbors_

template<typename TTraits >
unique_ptr<caConstants::CellNeighborsVector> CAHitNtupletGeneratorKernels< TTraits >::device_theCellNeighbors_
private

◆ device_theCellNeighborsContainer_

template<typename TTraits >
caConstants::CellNeighbors* CAHitNtupletGeneratorKernels< TTraits >::device_theCellNeighborsContainer_
private

◆ device_theCells_

template<typename TTraits >
unique_ptr<GPUCACell[]> CAHitNtupletGeneratorKernels< TTraits >::device_theCells_
private

◆ device_theCellTracks_

template<typename TTraits >
unique_ptr<caConstants::CellTracksVector> CAHitNtupletGeneratorKernels< TTraits >::device_theCellTracks_
private

◆ device_theCellTracksContainer_

template<typename TTraits >
caConstants::CellTracks* CAHitNtupletGeneratorKernels< TTraits >::device_theCellTracksContainer_
private

◆ device_tupleMultiplicity_

template<typename TTraits >
unique_ptr<TupleMultiplicity> CAHitNtupletGeneratorKernels< TTraits >::device_tupleMultiplicity_
private

◆ params_

template<typename TTraits >
Params const& CAHitNtupletGeneratorKernels< TTraits >::params_
private

◆ paramsMaxDoubletes3Quarters_

template<typename TTraits >
const uint32_t CAHitNtupletGeneratorKernels< TTraits >::paramsMaxDoubletes3Quarters_
private

Intermediate result avoiding repeated computations.

Definition at line 213 of file CAHitNtupletGeneratorKernels.h.

Referenced by CAHitNtupletGeneratorKernels< TTraits >::nDoubletBlocks().

cAHitNtupletGenerator::Params::earlyFishbone_
const bool earlyFishbone_
Definition: CAHitNtupletGeneratorKernels.h:107
iev
const HitContainer *__restrict__ const TkSoA *__restrict__ const Quality *__restrict__ const CAHitNtupletGeneratorKernelsGPU::HitToTuple *__restrict__ uint32_t int iev
Definition: CAHitNtupletGeneratorKernelsImpl.h:544
CAHitNtupletGeneratorKernels::device_theCellTracksContainer_
caConstants::CellTracks * device_theCellTracksContainer_
Definition: CAHitNtupletGeneratorKernels.h:196
CAHitNtupletGeneratorKernels::device_hitTuple_apc_
cms::cuda::AtomicPairCounter * device_hitTuple_apc_
Definition: CAHitNtupletGeneratorKernels.h:205
CalibrationSummaryClient_cfi.params
params
Definition: CalibrationSummaryClient_cfi.py:14
cAHitNtupletGenerator::Params::minHitsForSharingCut_
const uint16_t minHitsForSharingCut_
Definition: CAHitNtupletGeneratorKernels.h:103
GPUCACell::CellNeighbors
caConstants::CellNeighbors CellNeighbors
Definition: GPUCACell.h:26
cms::cuda::stream
cudaStream_t stream
Definition: HistoContainer.h:57
gather_cfg.cout
cout
Definition: gather_cfg.py:144
CAHitNtupletGeneratorKernels::params_
Params const & params_
Definition: CAHitNtupletGeneratorKernels.h:211
cms::cuda::assert
assert(be >=bs)
CAHitNtupletGeneratorKernels::device_theCellTracks_
unique_ptr< caConstants::CellTracksVector > device_theCellTracks_
Definition: CAHitNtupletGeneratorKernels.h:195
cAHitNtupletGenerator::Params::dcaCutInnerTriplet_
const float dcaCutInnerTriplet_
Definition: CAHitNtupletGeneratorKernels.h:119
CAHitNtupletGeneratorKernels::device_theCellNeighbors_
unique_ptr< caConstants::CellNeighborsVector > device_theCellNeighbors_
Definition: CAHitNtupletGeneratorKernels.h:193
CAHitNtupletGeneratorKernels::device_theCells_
unique_ptr< GPUCACell[]> device_theCells_
Definition: CAHitNtupletGeneratorKernels.h:198
caConstants::maxNumberOfQuadruplets
constexpr uint32_t maxNumberOfQuadruplets
Definition: CAConstants.h:41
CAHitNtupletGeneratorKernels::device_nCells_
uint32_t * device_nCells_
Definition: CAHitNtupletGeneratorKernels.h:200
CAHitNtupletGeneratorKernels::device_tupleMultiplicity_
unique_ptr< TupleMultiplicity > device_tupleMultiplicity_
Definition: CAHitNtupletGeneratorKernels.h:207
CAHitNtupletGeneratorKernels::device_hitToTuple_apc_
cms::cuda::AtomicPairCounter * device_hitToTuple_apc_
Definition: CAHitNtupletGeneratorKernels.h:203
cAHitNtupletGenerator::Params::idealConditions_
const bool idealConditions_
Definition: CAHitNtupletGeneratorKernels.h:109
cAHitNtupletGenerator::Params::lateFishbone_
const bool lateFishbone_
Definition: CAHitNtupletGeneratorKernels.h:108
cAHitNtupletGenerator::Params::doSharedHitCut_
const bool doSharedHitCut_
Definition: CAHitNtupletGeneratorKernels.h:114
counters
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__ uint32_t uint32_t CAHitNtupletGeneratorKernelsGPU::Counters * counters
Definition: CAHitNtupletGeneratorKernelsImpl.h:43
cAHitNtupletGenerator::Params::maxNumberOfDoublets_
const uint32_t maxNumberOfDoublets_
Definition: CAHitNtupletGeneratorKernels.h:102
CAHitNtupletGeneratorKernels::device_theCellNeighborsContainer_
caConstants::CellNeighbors * device_theCellNeighborsContainer_
Definition: CAHitNtupletGeneratorKernels.h:194
cAHitNtupletGenerator::Params::minHitsPerNtuplet_
const uint32_t minHitsPerNtuplet_
Definition: CAHitNtupletGeneratorKernels.h:101
CAHitNtupletGeneratorKernels::device_hitToTuple_
unique_ptr< HitToTuple > device_hitToTuple_
Definition: CAHitNtupletGeneratorKernels.h:202
cAHitNtupletGenerator::Params::hardCurvCut_
const float hardCurvCut_
Definition: CAHitNtupletGeneratorKernels.h:118
cAHitNtupletGenerator::Params::dcaCutOuterTriplet_
const float dcaCutOuterTriplet_
Definition: CAHitNtupletGeneratorKernels.h:120
caConstants::maxNumOfActiveDoublets
constexpr uint32_t maxNumOfActiveDoublets
Definition: CAConstants.h:40
nhits
Definition: HIMultiTrackSelector.h:42
gpuPixelDoublets::nPairsForQuadruplets
constexpr int nPairsForQuadruplets
Definition: gpuPixelDoublets.h:10
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
gpuPixelDoublets::nActualPairs
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int nActualPairs
Definition: gpuPixelDoublets.h:99
CAHitNtupletGeneratorKernels::device_isOuterHitOfCell_
unique_ptr< GPUCACell::OuterHitOfCell[]> device_isOuterHitOfCell_
Definition: CAHitNtupletGeneratorKernels.h:199
CAHitNtupletGeneratorKernels::device_storage_
unique_ptr< cms::cuda::AtomicPairCounter::c_type[]> device_storage_
Definition: CAHitNtupletGeneratorKernels.h:209
hh
const auto & hh
Definition: CAHitNtupletGeneratorKernelsImpl.h:455
cms::cuda::AtomicPairCounter
Definition: AtomicPairCounter.h:11
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
cAHitNtupletGenerator::Params::cuts_
QualityCuts cuts_
Definition: CAHitNtupletGeneratorKernels.h:123
cAHitNtupletGenerator::Params::doPtCut_
const bool doPtCut_
Definition: CAHitNtupletGeneratorKernels.h:113
cAHitNtupletGenerator::Params::includeJumpingForwardDoublets_
const bool includeJumpingForwardDoublets_
Definition: CAHitNtupletGeneratorKernels.h:106
cAHitNtupletGenerator::Params::CAThetaCutForward_
const float CAThetaCutForward_
Definition: CAHitNtupletGeneratorKernels.h:117
cms::cuda::VecArray
Definition: VecArray.h:14
svgfig.template
def template(fileName, svg, replaceme="REPLACEME")
Definition: svgfig.py:521
cAHitNtupletGenerator::Params::doZ0Cut_
const bool doZ0Cut_
Definition: CAHitNtupletGeneratorKernels.h:112
CAHitNtupletGeneratorKernels::paramsMaxDoubletes3Quarters_
const uint32_t paramsMaxDoubletes3Quarters_
Intermediate result avoiding repeated computations.
Definition: CAHitNtupletGeneratorKernels.h:213
gpuPixelDoublets::nPairsForTriplets
constexpr int nPairsForTriplets
Definition: gpuPixelDoublets.h:11
gpuPixelDoublets::nPairs
constexpr int nPairs
Definition: gpuPixelDoublets.h:12
cudaCheck
#define cudaCheck(ARG,...)
Definition: cudaCheck.h:62
relativeConstraints.value
value
Definition: relativeConstraints.py:53
TrackSoAHeterogeneousT::hitIndices
HitContainer hitIndices
Definition: TrackSoAHeterogeneousT.h:53
CAHitNtupletGeneratorKernels::cellStorage_
unique_ptr< unsigned char[]> cellStorage_
Definition: CAHitNtupletGeneratorKernels.h:192
cAHitNtupletGenerator::Params::doClusterCut_
const bool doClusterCut_
Definition: CAHitNtupletGeneratorKernels.h:111
pixelGPUConstants::maxNumberOfHits
constexpr uint32_t maxNumberOfHits
Definition: gpuClusteringConstants.h:14
CAHitNtupletGeneratorKernels::counters_
Counters * counters_
Definition: CAHitNtupletGeneratorKernels.h:189
cAHitNtupletGenerator::Params::doStats_
const bool doStats_
Definition: CAHitNtupletGeneratorKernels.h:110
cAHitNtupletGenerator::Params::ptmin_
const float ptmin_
Definition: CAHitNtupletGeneratorKernels.h:115
cAHitNtupletGenerator::Params::CAThetaCutBarrel_
const float CAThetaCutBarrel_
Definition: CAHitNtupletGeneratorKernels.h:116