13#ifndef TRACKINGITSGPU_INCLUDE_TIMEFRAMEGPU_H
14#define TRACKINGITSGPU_INCLUDE_TIMEFRAMEGPU_H
30 void* allocate(
size_t size)
override;
33template <
int nLayers = 7>
86 return *mGpuStreams[
stream];
149 void allocMemAsync(
void**,
size_t,
Stream*,
bool);
150 bool mHostRegistered = false;
154 std::
array<
int, nLayers - 1> mNTracklets;
155 std::
array<
int, nLayers - 2> mNCells;
156 std::
array<
int, nLayers - 3> mNNeighbours;
162 uint8_t* mMultMaskDevice;
163 Vertex* mPrimaryVerticesDevice;
164 int* mROFramesPVDevice;
167 std::
array<
int*, nLayers> mClustersIndexTablesDevice;
168 std::
array<
unsigned char*, nLayers> mUsedClustersDevice;
169 std::
array<
int*, nLayers> mROFramesClustersDevice;
170 const
Cluster** mClustersDeviceArray;
171 const
Cluster** mUnsortedClustersDeviceArray;
172 const
int** mClustersIndexTablesDeviceArray;
173 const
unsigned char** mUsedClustersDeviceArray;
174 const
int** mROFrameClustersDeviceArray;
177 std::
array<
int*, nLayers - 1> mTrackletsLUTDevice;
178 std::
array<
int*, nLayers - 2> mCellsLUTDevice;
179 std::
array<
int*, nLayers - 3> mNeighboursLUTDevice;
181 int** mCellsLUTDeviceArray;
182 int** mNeighboursCellDeviceArray;
183 int** mNeighboursCellLUTDeviceArray;
184 int** mTrackletsLUTDeviceArray;
186 std::
array<
int*, nLayers - 2> mNeighboursIndexTablesDevice;
189 std::
array<
o2::track::TrackParCovF*, nLayers - 2> mCellSeedsDevice;
190 o2::track::TrackParCovF** mCellSeedsDeviceArray;
191 std::
array<
float*, nLayers - 2> mCellSeedsChi2Device;
192 float** mCellSeedsChi2DeviceArray;
194 Road<nLayers - 2>* mRoadsDevice;
197 std::
array<
int*, nLayers - 2> mNeighboursDevice;
198 int** mNeighboursDeviceArray;
205 bool mFirstInit = true;
211template <
int nLayers>
217template <
int nLayers>
222 [](
const auto&
v) { return static_cast<unsigned int>(v.size()); });
226template <
int nLayers>
229 return std::accumulate(mNTracklets.begin(), mNTracklets.end(), 0);
232template <
int nLayers>
235 return std::accumulate(mNCells.begin(), mNCells.end(), 0);
238template <
int nLayers>
241 return std::accumulate(mNNeighbours.begin(), mNNeighbours.end(), 0);
void loadCellsLUTDevice()
const TrackingFrameInfo ** getDeviceArrayTrackingFrameInfo() const
gsl::span< int * > getDeviceCellLUTs()
void createNeighboursDevice(const unsigned int layer, const unsigned int nNeighbours)
void loadROframeClustersDevice(const int)
IndexTableUtils * getDeviceIndexTableUtils()
const unsigned char ** getDeviceArrayUsedClusters() const
const int ** getDeviceArrayClustersIndexTables() const
void createCellsLUTDevice()
void initDeviceSAFitting()
void initDevice(IndexTableUtils *, const TrackingParameters &trkParam, const TimeFrameGPUParameters &, const int, const int)
void initialise(const int, const TrackingParameters &, const int, IndexTableUtils *utils=nullptr, const TimeFrameGPUParameters *pars=nullptr)
const Cluster ** getDeviceArrayUnsortedClusters() const
void loadTrackingFrameInfoDevice(const int)
int * getDeviceNeighbours(const int layer)
void loadTrackSeedsChi2Device()
int * getDeviceNeighboursIndexTables(const int layer)
void loadIndexTableUtils(const int)
float ** getDeviceArrayTrackSeedsChi2()
auto & getArrayNNeighbours()
void loadTrackletsLUTDevice()
void loadTrackSeedsDevice()
void createNeighboursLUTDevice(const int, const unsigned int)
Tracklet ** getDeviceArrayTracklets()
TrackingFrameInfo * getDeviceTrackingFrameInfo(const int)
void createNeighboursDeviceArray()
void downloadCellsDevice()
void createTrackletsLUTDevice(const int)
int ** getDeviceNeighboursArray()
uint8_t * getDeviceMultCutMask()
int getNClustersInRofSpan(const int, const int, const int) const
interface
gsl::span< int, nLayers - 2 > getNCells()
void setDevicePropagator(const o2::base::PropagatorImpl< float > *) override
std::array< int *, nLayers - 2 > & getDeviceNeighboursAll()
gsl::span< Tracklet * > getDeviceTracklet()
CellSeed ** getDeviceArrayCells() const
void loadUsedClustersDevice()
void createTrackITSExtDevice(bounded_vector< CellSeed > &)
void downloadNeighboursLUTDevice(bounded_vector< int > &, const int)
void createNeighboursDevice(const unsigned int layer, std::vector< std::pair< int, int > > &neighbours)
void loadVertices(const int)
int * getDeviceNeighboursLUT(const int layer)
Road< nLayers - 2 > * getDeviceRoads()
CellSeed * getDeviceTrackSeeds()
void createTrackletsBuffers()
void registerHostMemory(const int)
Most relevant operations.
void loadClustersIndexTables(const int iteration)
o2::track::TrackParCovF ** getDeviceArrayTrackSeeds()
int getNumberOfCells() const final
int * getDeviceROFramesPV()
gsl::span< int * > getDeviceNeighboursLUTs()
std::vector< unsigned int > getClusterSizes()
const o2::base::Propagator * getChainPropagator()
int ** getDeviceArrayNeighboursCellLUT() const
void createUsedClustersDevice(const int)
const int ** getDeviceROframeClusters() const
gsl::span< CellSeed * > getDeviceCells()
int ** getDeviceArrayTrackletsLUT() const
void loadTrackSeedsDevice(bounded_vector< CellSeed > &)
int getNumberOfTracklets() const final
gsl::span< int * > getDeviceTrackletsLUTs()
void downloadCellsNeighboursDevice(std::vector< bounded_vector< std::pair< int, int > > > &, const int)
void createCellsBuffers(const int)
void downloadCellsLUTDevice()
unsigned char * getDeviceUsedClusters(const int)
gpuPair< int, int > * getDeviceNeighbourPairs(const int layer)
void loadClustersDevice(const int)
Stream & getStream(const size_t stream)
TrackITSExt * getDeviceTrackITSExt()
void loadMultiplicityCutMask(const int)
int ** getDeviceArrayCellsLUT() const
void loadUnsortedClustersDevice(const int)
gsl::span< int, nLayers - 3 > getNNeighbours()
int * getDeviceROFramesClusters(const int layer)
const Cluster ** getDeviceArrayClusters() const
void createNeighboursIndexTablesDevice()
void unregisterHostMemory(const int)
int getNumberOfNeighbours() const final
Vertex * getDeviceVertices()
void downloadTrackITSExtDevice(bounded_vector< CellSeed > &)
gsl::span< int, nLayers - 1 > getNTracklets()
void loadTrackletsDevice()
GLuint GLsizei const GLuint const GLintptr const GLsizeiptr * sizes
GLenum GLuint GLint GLint layer
std::pmr::vector< T > bounded_vector
TrackParametrizationWithError< float > TrackParCovF
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Defining DataPointCompositeObject explicitly as copiable.
Common utility functions.
std::array< bounded_vector< int >, nLayers > mROFramesClusters
std::array< bounded_vector< Cluster >, nLayers > mUnsortedClusters