17 #undef PIXVERTEX_DEBUG_PRODUCE 28 template <
typename TrackerTraits>
102 template <
typename TrackerTraits>
108 #ifdef PIXVERTEX_DEBUG_PRODUCE 109 std::cout <<
"producing Vertices on GPU" << std::endl;
110 #endif // PIXVERTEX_DEBUG_PRODUCE 116 #ifdef PIXVERTEX_DEBUG_PRODUCE 117 std::cout <<
"producing Vertices on CPU" << std::endl;
118 #endif // PIXVERTEX_DEBUG_PRODUCE 132 init<<<1, 1, 0, stream>>>(
soa, ws_d.view());
133 auto blockSize = 128;
134 auto numberOfBlocks = (
tracks_view.metadata().size() + blockSize - 1) / blockSize;
144 constexpr
int maxThreadsForPrint = 1024 - 128;
145 constexpr
int numBlocks = 1024;
146 constexpr
int threadsPerBlock = 128;
150 #ifndef THREE_KERNELS 156 splitVerticesKernel<<<numBlocks, threadsPerBlock, 0, stream>>>(
soa, ws_d.view(),
maxChi2ForSplit);
158 vertexFinderKernel2<<<1, maxThreadsForPrint, 0, stream>>>(
soa, ws_d.view());
162 clusterTracksByDensityKernel<<<1, maxThreadsForPrint, 0, stream>>>(
164 }
else if (useDBSCAN_) {
166 }
else if (useIterative_) {
173 splitVerticesKernel<<<numBlocks, threadsPerBlock, 0, stream>>>(
soa, ws_d.view(),
maxChi2ForSplit);
177 sortByPt2Kernel<<<1, maxThreadsForPrint, 0, stream>>>(
soa, ws_d.view());
183 }
else if (useDBSCAN_) {
185 }
else if (useIterative_) {
188 #ifdef PIXVERTEX_DEBUG_PRODUCE 189 std::cout <<
"found " << ws_d.view().nvIntermediate() <<
" vertices " << std::endl;
190 #endif // PIXVERTEX_DEBUG_PRODUCE ZVertexSoAHost make(const TkSoAConstView &tracks_view, float ptMin, float ptMax) const
ZVertexSoADevice makeAsync(cudaStream_t stream, const TkSoAConstView &tracks_view, float ptMin, float ptMax) const
uint32_t const *__restrict__ TkSoAView< TrackerTraits > tracks_view
static constexpr __host__ __device__ float zip(const TrackSoAConstView &tracks, int32_t i)
__device__ WsSoAView int float float float chi2max
fitVertices(pdata, pws, maxChi2ForFirstFit)
PixelVertexWorkSpaceSoAHost< zVertex::utilities::MAXTRACKS > PixelVertexWorkSpaceSoAHost
VtxSoAView WsSoAView float ptMin
__device__ WsSoAView int float eps
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
constexpr float maxChi2ForFirstFit
__device__ WsSoAView & pws
__device__ WsSoAView int minT
VtxSoAView WsSoAView float float ptMax
splitVertices(pdata, pws, maxChi2ForSplit)
static constexpr __host__ __device__ int nHits(const TrackSoAConstView &tracks, int i)
__device__ WsSoAView int float float errmax
gpuVertexFinder::workSpace::PixelVertexWorkSpaceSoAView WsSoAView
constexpr float maxChi2ForFinalFit
static constexpr __host__ __device__ bool isTriplet(const TrackSoAConstView &tracks, int i)
typename TrackSoA< TrackerTraits >::template TrackSoALayout<>::ConstView TrackSoAConstView
#define cudaCheck(ARG,...)
constexpr float maxChi2ForSplit
TupleMultiplicity< TrackerTraits > const *__restrict__ uint32_t nHits
zVertex::ZVertexSoAView VtxSoAView
PixelVertexWorkSpaceSoADevice< zVertex::utilities::MAXTRACKS > PixelVertexWorkSpaceSoADevice
T1 atomicAdd(T1 *a, T2 b)