CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Typedefs | Functions | Variables
RiemannFitOnGPU.h File Reference
#include <cstdint>
#include <cuda_runtime.h>
#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHit2DHeterogeneous.h"
#include "HeterogeneousCore/CUDAUtilities/interface/cudaCheck.h"
#include "HeterogeneousCore/CUDAUtilities/interface/cuda_assert.h"
#include "RecoLocalTracker/SiPixelRecHits/interface/pixelCPEforGPU.h"
#include "RecoPixelVertexing/PixelTrackFitting/interface/RiemannFit.h"
#include "HelixFitOnGPU.h"

Go to the source code of this file.

Typedefs

using HitsOnGPU = TrackingRecHit2DSOAView
 
using OutputSoA = pixelTrack::TrackSoA
 
using Tuples = pixelTrack::HitContainer
 

Functions

template<int N>
 __attribute__ ((always_inline)) void kernel_FastFit(Tuples const *__restrict__ foundNtuplets
 
 assert (hitsInFit<=nHits)
 
 assert (pfast_fit)
 
 assert (foundNtuplets)
 
 assert (tupleMultiplicity)
 
 for (int local_idx=local_start, nt=riemannFit::maxNumberOfConcurrentFits;local_idx< nt;local_idx+=gridDim.x *blockDim.x)
 

Variables

caConstants::TupleMultiplicity
const *__restrict__ uint32_t
HitsOnGPU const *__restrict__ 
hhp
 
auto local_start = blockIdx.x * blockDim.x + threadIdx.x
 
caConstants::TupleMultiplicity
const *__restrict__ uint32_t 
nHits
 
caConstants::TupleMultiplicity
const *__restrict__ uint32_t
HitsOnGPU const *__restrict__
double *__restrict__ float
*__restrict__ double
*__restrict__ uint32_t 
offset
 
caConstants::TupleMultiplicity
const *__restrict__ uint32_t
HitsOnGPU const *__restrict__
double *__restrict__ float
*__restrict__ double
*__restrict__ 
pfast_fit
 
caConstants::TupleMultiplicity
const *__restrict__ uint32_t
HitsOnGPU const *__restrict__
double *__restrict__ 
phits
 
caConstants::TupleMultiplicity
const *__restrict__ uint32_t
HitsOnGPU const *__restrict__
double *__restrict__ float
*__restrict__ 
phits_ge
 
caConstants::TupleMultiplicity
const *__restrict__ 
tupleMultiplicity
 

Typedef Documentation

Definition at line 17 of file RiemannFitOnGPU.h.

Definition at line 19 of file RiemannFitOnGPU.h.

Definition at line 18 of file RiemannFitOnGPU.h.

Function Documentation

template<int N>
__attribute__ ( (always_inline)  ) const
inline
assert ( hitsInFit<=  nHits)
assert ( pfast_fit  )
assert ( foundNtuplets  )
assert ( tupleMultiplicity  )
for ( int  local_idx = local_start)

Definition at line 46 of file RiemannFitOnGPU.h.

References cms::cuda::assert(), riemannFit::fastFit(), mps_fire::i, nHits, and hltrates_dqm_sourceclient-live_cfg::offset.

47  {
48  auto tuple_idx = local_idx + offset;
49  if (tuple_idx >= tupleMultiplicity->size(nHits))
50  break;
51 
52  // get it from the ntuple container (one to one to helix)
53  auto tkid = *(tupleMultiplicity->begin(nHits) + tuple_idx);
54  assert(tkid < foundNtuplets->nOnes());
55 
56  assert(foundNtuplets->size(tkid) == nHits);
57 
58  riemannFit::Map3xNd<N> hits(phits + local_idx);
59  riemannFit::Map4d fast_fit(pfast_fit + local_idx);
60  riemannFit::Map6xNf<N> hits_ge(phits_ge + local_idx);
61 
62  // Prepare data structure
63  auto const *hitId = foundNtuplets->begin(tkid);
64  for (unsigned int i = 0; i < hitsInFit; ++i) {
65  auto hit = hitId[i];
66  // printf("Hit global: %f,%f,%f\n", hhp->xg_d[hit],hhp->yg_d[hit],hhp->zg_d[hit]);
67  float ge[6];
68  hhp->cpeParams()
69  .detParams(hhp->detectorIndex(hit))
70  .frame.toGlobal(hhp->xerrLocal(hit), 0, hhp->yerrLocal(hit), ge);
71  // printf("Error: %d: %f,%f,%f,%f,%f,%f\n",hhp->detInd_d[hit],ge[0],ge[1],ge[2],ge[3],ge[4],ge[5]);
72 
73  hits.col(i) << hhp->xGlobal(hit), hhp->yGlobal(hit), hhp->zGlobal(hit);
74  hits_ge.col(i) << ge[0], ge[1], ge[2], ge[3], ge[4], ge[5];
75  }
76  riemannFit::fastFit(hits, fast_fit);
77 
78  // no NaN here....
79  assert(fast_fit(0) == fast_fit(0));
80  assert(fast_fit(1) == fast_fit(1));
81  assert(fast_fit(2) == fast_fit(2));
82  assert(fast_fit(3) == fast_fit(3));
83  }
caConstants::TupleMultiplicity const *__restrict__ HitsOnGPU const *__restrict__ tindex_type *__restrict__ double *__restrict__ float *__restrict__ phits_ge
auto const & foundNtuplets
assert(be >=bs)
Eigen::Map< Matrix3xNd< N >, 0, Eigen::Stride< 3 *stride, stride > > Map3xNd
Definition: HelixFitOnGPU.h:23
caConstants::TupleMultiplicity const *__restrict__ tupleMultiplicity
Eigen::Map< Matrix6xNf< N >, 0, Eigen::Stride< 6 *stride, stride > > Map6xNf
Definition: HelixFitOnGPU.h:28
caConstants::TupleMultiplicity const *__restrict__ HitsOnGPU const *__restrict__ tindex_type *__restrict__ double *__restrict__ float *__restrict__ double *__restrict__ pfast_fit
caConstants::TupleMultiplicity const *__restrict__ HitsOnGPU const *__restrict__ hhp
Eigen::Map< Vector4d, 0, Eigen::InnerStride< stride > > Map4d
Definition: HelixFitOnGPU.h:30
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t nHits
caConstants::TupleMultiplicity const *__restrict__ HitsOnGPU const *__restrict__ tindex_type *__restrict__ double *__restrict__ phits
__host__ __device__ void fastFit(const M3xN &hits, V4 &result)
A very fast helix fit: it fits a circle by three points (first, middle and last point) and a line by ...
Definition: RiemannFit.h:375

Variable Documentation

caConstants::TupleMultiplicity const* __restrict__ uint32_t HitsOnGPU const* __restrict__ hhp

Definition at line 23 of file RiemannFitOnGPU.h.

auto local_start = blockIdx.x * blockDim.x + threadIdx.x

Definition at line 39 of file RiemannFitOnGPU.h.

caConstants::TupleMultiplicity const* __restrict__ uint32_t nHits

Definition at line 23 of file RiemannFitOnGPU.h.

caConstants::TupleMultiplicity const* __restrict__ uint32_t HitsOnGPU const* __restrict__ double* __restrict__ float* __restrict__ double* __restrict__ uint32_t offset
Initial value:
{
constexpr uint32_t hitsInFit = N
#define N
Definition: blowfish.cc:9

Definition at line 29 of file RiemannFitOnGPU.h.

caConstants::TupleMultiplicity const* __restrict__ uint32_t HitsOnGPU const* __restrict__ double* __restrict__ float* __restrict__ double* __restrict__ pfast_fit

Definition at line 23 of file RiemannFitOnGPU.h.

caConstants::TupleMultiplicity const* __restrict__ uint32_t HitsOnGPU const* __restrict__ double* __restrict__ phits

Definition at line 23 of file RiemannFitOnGPU.h.

caConstants::TupleMultiplicity const* __restrict__ uint32_t HitsOnGPU const* __restrict__ double* __restrict__ float* __restrict__ phits_ge

Definition at line 23 of file RiemannFitOnGPU.h.

caConstants::TupleMultiplicity const* __restrict__ tupleMultiplicity

Definition at line 23 of file RiemannFitOnGPU.h.