Skip to content

Commit 6229d42

Browse files
committed
ITSMFT: complete tracking allocation migration
1 parent 24d008e commit 6229d42

32 files changed

Lines changed: 694 additions & 552 deletions

Detectors/ITSMFT/ITS/tracking/GPU/ITStrackingGPU/TimeFrameGPU.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#include <gsl/gsl>
1717
#include <bitset>
1818

19-
#include "ITStracking/BoundedAllocator.h"
19+
#include "ITSMFTTracking/BoundedAllocator.h"
2020
#include "ITStracking/TimeFrame.h"
2121
#include "ITStracking/Configuration.h"
2222
#include "ITStracking/TrackExtensionHypothesis.h"
@@ -250,8 +250,8 @@ class TimeFrameGPU : public TimeFrame<NLayers>
250250
std::bitset<NLayers + 1> mPinnedTrackingFrameInfo{0};
251251

252252
// Temporary buffer for storing output tracks from GPU tracking
253-
bounded_vector<TrackITSExt> mTrackITSExt;
254-
bounded_vector<int> mTrackIndices;
253+
o2::itsmft::tracking::bounded_vector<TrackITSExt> mTrackITSExt;
254+
o2::itsmft::tracking::bounded_vector<int> mTrackIndices;
255255
};
256256

257257
template <int NLayers>

Detectors/ITSMFT/ITS/tracking/GPU/ITStrackingGPU/TrackingKernels.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#include <array>
1717
#include <gsl/gsl>
1818

19-
#include "ITStracking/BoundedAllocator.h"
19+
#include "ITSMFTTracking/BoundedAllocator.h"
2020
#include "ITSMFTTracking/CapacityEstimator.h"
2121
#include "ITStracking/ROFLookupTables.h"
2222
#include "ITStracking/TrackingTopology.h"
@@ -62,13 +62,13 @@ struct TrackingKernels {
6262
const bool selectUPCVertices,
6363
const float NSigmaCut,
6464
const typename TrackingTopology<NLayers>::View topology,
65-
bounded_vector<float>& linkPhiCuts,
65+
o2::itsmft::tracking::bounded_vector<float>& linkPhiCuts,
6666
const float resolutionPV,
6767
std::array<float, NLayers>& minR,
6868
std::array<float, NLayers>& maxR,
69-
bounded_vector<float>& resolutions,
69+
o2::itsmft::tracking::bounded_vector<float>& resolutions,
7070
std::vector<float>& radii,
71-
bounded_vector<float>& linkMSAngles,
71+
o2::itsmft::tracking::bounded_vector<float>& linkMSAngles,
7272
o2::its::ExternalAllocator* alloc,
7373
gpu::Streams& streams);
7474

Detectors/ITSMFT/ITS/tracking/GPU/cuda/TimeFrameGPU.cu

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
#include "ITStrackingGPU/TimeFrameGPU.h"
2323
#include "ITStracking/Constants.h"
24-
#include "ITStracking/BoundedAllocator.h"
24+
#include "ITSMFTTracking/BoundedAllocator.h"
2525
#include "ITStrackingGPU/Utils.h"
2626

2727
#include "GPUCommonDef.h"
@@ -491,8 +491,8 @@ void TimeFrameGPU<NLayers>::createTrackITSExtHost(const size_t nTracks)
491491
{
492492
GPUTimer timer("reserving host tracks");
493493
mNTracks = nTracks;
494-
mTrackITSExt = bounded_vector<TrackITSExt>(nTracks, {}, this->getMemoryPool().get());
495-
mTrackIndices = bounded_vector<int>(nTracks, 0, this->getMemoryPool().get());
494+
mTrackITSExt = o2::itsmft::tracking::bounded_vector<TrackITSExt>(nTracks, {}, this->getMemoryPool().get());
495+
mTrackIndices = o2::itsmft::tracking::bounded_vector<int>(nTracks, 0, this->getMemoryPool().get());
496496
std::iota(mTrackIndices.begin(), mTrackIndices.end(), 0);
497497
}
498498

Detectors/ITSMFT/ITS/tracking/GPU/cuda/TrackerTraitsGPU.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ template <int NLayers>
199199
void TrackerTraitsGPU<NLayers>::findCellsNeighbours(const int iteration)
200200
{
201201
const auto hostTopology = mTimeFrameGPU->getTrackingTopologyView();
202-
bounded_vector<int> sourceTopologies(this->getMemoryPool().get());
202+
o2::itsmft::tracking::bounded_vector<int> sourceTopologies(this->getMemoryPool().get());
203203
sourceTopologies.reserve(hostTopology.nCells);
204204
for (int outerLayer{0}; outerLayer < NLayers; ++outerLayer) {
205205
for (int targetCellTopologyId{0}; targetCellTopologyId < hostTopology.nCells; ++targetCellTopologyId) {
@@ -266,7 +266,7 @@ void TrackerTraitsGPU<NLayers>::findCellsNeighbours(const int iteration)
266266
template <int NLayers>
267267
void TrackerTraitsGPU<NLayers>::findRoads(const int iteration)
268268
{
269-
bounded_vector<bounded_vector<int>> firstClusters(this->mTrkParams[iteration].NLayers, bounded_vector<int>(this->getMemoryPool().get()), this->getMemoryPool().get());
269+
o2::itsmft::tracking::bounded_vector<o2::itsmft::tracking::bounded_vector<int>> firstClusters(this->mTrkParams[iteration].NLayers, o2::itsmft::tracking::bounded_vector<int>(this->getMemoryPool().get()), this->getMemoryPool().get());
270270
firstClusters.resize(this->mTrkParams[iteration].NLayers);
271271
const auto hostTopology = mTimeFrameGPU->getTrackingTopologyView();
272272
const bool extendTop = this->mTrkParams[iteration].PassFlags[IterationStep::TrackFollowerTop];

Detectors/ITSMFT/ITS/tracking/GPU/cuda/TrackingKernels.cu

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -789,13 +789,13 @@ int TrackingKernels<NLayers>::computeTrackletsInROFsHandler(const IndexTableUtil
789789
const bool selectUPCVertices,
790790
const float NSigmaCut,
791791
const typename TrackingTopology<NLayers>::View topology,
792-
bounded_vector<float>& linkPhiCuts,
792+
o2::itsmft::tracking::bounded_vector<float>& linkPhiCuts,
793793
const float resolutionPV,
794794
std::array<float, NLayers>& minRs,
795795
std::array<float, NLayers>& maxRs,
796-
bounded_vector<float>& resolutions,
796+
o2::itsmft::tracking::bounded_vector<float>& resolutions,
797797
std::vector<float>& radii,
798-
bounded_vector<float>& linkMSAngles,
798+
o2::itsmft::tracking::bounded_vector<float>& linkMSAngles,
799799
o2::its::ExternalAllocator* alloc,
800800
gpu::Streams& streams)
801801
{

Detectors/ITSMFT/ITS/tracking/include/ITStracking/BoundedAllocator.h

Lines changed: 0 additions & 34 deletions
This file was deleted.

Detectors/ITSMFT/ITS/tracking/include/ITStracking/LineVertexerHelpers.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#include <memory>
1616
#include <span>
1717

18-
#include "ITStracking/BoundedAllocator.h"
18+
#include "ITSMFTTracking/BoundedAllocator.h"
1919
#include "ITStracking/ClusterLines.h"
2020

2121
namespace o2::its::line_vertexer
@@ -36,10 +36,10 @@ struct Settings {
3636
float maxZ = 0.f;
3737
int seedMemberRadiusTime = 1;
3838
int seedMemberRadiusZ = 2;
39-
std::shared_ptr<BoundedMemoryResource> memoryPool;
39+
std::shared_ptr<o2::itsmft::tracking::BoundedMemoryResource> memoryPool;
4040
};
4141

42-
bounded_vector<ClusterLines> buildClusters(std::span<const Line> lines, const Settings& settings);
42+
o2::itsmft::tracking::bounded_vector<ClusterLines> buildClusters(std::span<const Line> lines, const Settings& settings);
4343

4444
} // namespace o2::its::line_vertexer
4545

Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#include "ITStracking/Tracklet.h"
3232
#include "ITStracking/IndexTableUtils.h"
3333
#include "ITStracking/ExternalAllocator.h"
34-
#include "ITStracking/BoundedAllocator.h"
34+
#include "ITSMFTTracking/BoundedAllocator.h"
3535
#include "ITStracking/ROFLookupTables.h"
3636
#include "ITStracking/TrackingTopology.h"
3737
#include "SimulationDataFormat/MCCompLabel.h"
@@ -179,7 +179,7 @@ struct TimeFrame {
179179
gsl::span<const MCCompLabel> getClusterLabels(int layerId, const int clId) const { return mClusterLabels[((mIsStaggered) ? layerId : 0)]->getLabels(mClusterExternalIndices[layerId][clId]); }
180180
int getClusterExternalIndex(int layerId, const int clId) const { return mClusterExternalIndices[layerId][clId]; }
181181
int getClusterSize(int layer, int clusterId) const { return mClusterSize[layer][clusterId]; }
182-
void setClusterSize(int layer, bounded_vector<uint8_t>& v) { mClusterSize[layer] = std::move(v); }
182+
void setClusterSize(int layer, o2::itsmft::tracking::bounded_vector<uint8_t>& v) { mClusterSize[layer] = std::move(v); }
183183

184184
auto& getTrackletsLabel(int layer) { return mTrackletLabels[layer]; }
185185
auto& getCellsLabel(int layer) { return mCellLabels[layer]; }
@@ -222,7 +222,7 @@ struct TimeFrame {
222222
size_t getNExtendedClusters() const { return mNExtendedClusters; }
223223

224224
/// memory management
225-
void setMemoryPool(std::shared_ptr<BoundedMemoryResource> pool);
225+
void setMemoryPool(std::shared_ptr<o2::itsmft::tracking::BoundedMemoryResource> pool);
226226
auto& getMemoryPool() const noexcept { return mMemoryPool; }
227227
bool checkMemory(unsigned long max) { return getArtefactsMemory() < max; }
228228
unsigned long getArtefactsMemory() const;
@@ -258,7 +258,7 @@ struct TimeFrame {
258258

259259
/// State if memory will be externally managed by the GPU framework
260260
ExternalAllocator* mExternalAllocator{nullptr};
261-
std::shared_ptr<BoundedMemoryResource> mExtMemoryPool; // host memory pool managed by the framework
261+
std::shared_ptr<o2::itsmft::tracking::BoundedMemoryResource> mExtMemoryPool; // host memory pool managed by the framework
262262
auto getFrameworkAllocator() { return mExternalAllocator; };
263263
void setFrameworkAllocator(ExternalAllocator* ext);
264264
bool hasFrameworkAllocator() const noexcept { return mExternalAllocator != nullptr; }
@@ -274,28 +274,28 @@ struct TimeFrame {
274274
void addTrackingFrameInfoToLayer(int layer, T&&... args);
275275
void addClusterExternalIndexToLayer(int layer, const int idx) { mClusterExternalIndices[layer].push_back(idx); }
276276

277-
std::array<bounded_vector<Cluster>, NLayers> mClusters;
278-
std::array<bounded_vector<TrackingFrameInfo>, NLayers> mTrackingFrameInfo;
279-
std::array<bounded_vector<int>, NLayers> mClusterExternalIndices;
280-
std::array<bounded_vector<int>, NLayers> mROFramesClusters;
277+
std::array<o2::itsmft::tracking::bounded_vector<Cluster>, NLayers> mClusters;
278+
std::array<o2::itsmft::tracking::bounded_vector<TrackingFrameInfo>, NLayers> mTrackingFrameInfo;
279+
std::array<o2::itsmft::tracking::bounded_vector<int>, NLayers> mClusterExternalIndices;
280+
std::array<o2::itsmft::tracking::bounded_vector<int>, NLayers> mROFramesClusters;
281281
std::array<const dataformats::MCTruthContainer<MCCompLabel>*, NLayers> mClusterLabels{nullptr};
282-
std::array<bounded_vector<int>, 2> mNTrackletsPerCluster;
283-
std::array<bounded_vector<int>, 2> mNTrackletsPerClusterSum;
284-
std::array<bounded_vector<int>, NLayers> mNClustersPerROF;
285-
std::array<bounded_vector<int>, NLayers> mIndexTables;
286-
std::vector<bounded_vector<int>> mTrackletsLookupTable;
287-
std::array<bounded_vector<uint8_t>, NLayers> mUsedClusters;
288-
289-
std::array<bounded_vector<Cluster>, NLayers> mUnsortedClusters;
290-
std::vector<bounded_vector<Tracklet>> mTracklets;
291-
std::vector<bounded_vector<CellSeed>> mCells;
292-
bounded_vector<TrackITSExt> mTracks;
293-
bounded_vector<MCCompLabel> mTracksLabel;
282+
std::array<o2::itsmft::tracking::bounded_vector<int>, 2> mNTrackletsPerCluster;
283+
std::array<o2::itsmft::tracking::bounded_vector<int>, 2> mNTrackletsPerClusterSum;
284+
std::array<o2::itsmft::tracking::bounded_vector<int>, NLayers> mNClustersPerROF;
285+
std::array<o2::itsmft::tracking::bounded_vector<int>, NLayers> mIndexTables;
286+
std::vector<o2::itsmft::tracking::bounded_vector<int>> mTrackletsLookupTable;
287+
std::array<o2::itsmft::tracking::bounded_vector<uint8_t>, NLayers> mUsedClusters;
288+
289+
std::array<o2::itsmft::tracking::bounded_vector<Cluster>, NLayers> mUnsortedClusters;
290+
std::vector<o2::itsmft::tracking::bounded_vector<Tracklet>> mTracklets;
291+
std::vector<o2::itsmft::tracking::bounded_vector<CellSeed>> mCells;
292+
o2::itsmft::tracking::bounded_vector<TrackITSExt> mTracks;
293+
o2::itsmft::tracking::bounded_vector<MCCompLabel> mTracksLabel;
294294
size_t mNExtendedTracks = 0;
295295
size_t mNExtendedClusters = 0;
296-
std::vector<bounded_vector<int>> mCellsNeighbours;
297-
std::vector<bounded_vector<int>> mCellsNeighboursTopology;
298-
std::vector<bounded_vector<int>> mCellsLookupTable;
296+
std::vector<o2::itsmft::tracking::bounded_vector<int>> mCellsNeighbours;
297+
std::vector<o2::itsmft::tracking::bounded_vector<int>> mCellsNeighboursTopology;
298+
std::vector<o2::itsmft::tracking::bounded_vector<int>> mCellsLookupTable;
299299

300300
const o2::base::PropagatorImpl<float>* mPropagatorDevice = nullptr; // Needed only for GPU
301301

@@ -314,27 +314,27 @@ struct TimeFrame {
314314
bool isBeamPositionOverridden = false;
315315
std::array<float, NLayers> mMinR;
316316
std::array<float, NLayers> mMaxR;
317-
bounded_vector<float> mLinkPhiCuts;
318-
bounded_vector<float> mLinkMSAngles;
319-
bounded_vector<float> mPositionResolution;
320-
std::array<bounded_vector<uint8_t>, NLayers> mClusterSize;
317+
o2::itsmft::tracking::bounded_vector<float> mLinkPhiCuts;
318+
o2::itsmft::tracking::bounded_vector<float> mLinkMSAngles;
319+
o2::itsmft::tracking::bounded_vector<float> mPositionResolution;
320+
std::array<o2::itsmft::tracking::bounded_vector<uint8_t>, NLayers> mClusterSize;
321321

322-
bounded_vector<std::array<float, 2>> mPValphaX; /// PV x and alpha for track propagation
323-
std::vector<bounded_vector<MCCompLabel>> mTrackletLabels;
324-
std::vector<bounded_vector<MCCompLabel>> mCellLabels;
325-
std::vector<bounded_vector<int>> mCellsNeighboursLUT;
326-
bounded_vector<int> mBogusClusters; /// keep track of clusters with wild coordinates
322+
o2::itsmft::tracking::bounded_vector<std::array<float, 2>> mPValphaX; /// PV x and alpha for track propagation
323+
std::vector<o2::itsmft::tracking::bounded_vector<MCCompLabel>> mTrackletLabels;
324+
std::vector<o2::itsmft::tracking::bounded_vector<MCCompLabel>> mCellLabels;
325+
std::vector<o2::itsmft::tracking::bounded_vector<int>> mCellsNeighboursLUT;
326+
o2::itsmft::tracking::bounded_vector<int> mBogusClusters; /// keep track of clusters with wild coordinates
327327

328328
o2::itsmft::tracking::CapacityEstimator mCapacityEstimator;
329329

330330
// Vertexer
331-
bounded_vector<Vertex> mPrimaryVertices;
332-
bounded_vector<VertexLabel> mPrimaryVerticesLabels;
333-
std::vector<bounded_vector<int>> mNTrackletsPerROF;
334-
std::vector<bounded_vector<Line>> mLines;
335-
std::vector<bounded_vector<ClusterLines>> mTrackletClusters;
336-
std::array<bounded_vector<int>, 2> mTrackletsIndexROF;
337-
std::vector<bounded_vector<MCCompLabel>> mLinesLabels;
331+
o2::itsmft::tracking::bounded_vector<Vertex> mPrimaryVertices;
332+
o2::itsmft::tracking::bounded_vector<VertexLabel> mPrimaryVerticesLabels;
333+
std::vector<o2::itsmft::tracking::bounded_vector<int>> mNTrackletsPerROF;
334+
std::vector<o2::itsmft::tracking::bounded_vector<Line>> mLines;
335+
std::vector<o2::itsmft::tracking::bounded_vector<ClusterLines>> mTrackletClusters;
336+
std::array<o2::itsmft::tracking::bounded_vector<int>, 2> mTrackletsIndexROF;
337+
std::vector<o2::itsmft::tracking::bounded_vector<MCCompLabel>> mLinesLabels;
338338
std::array<uint32_t, 2> mTotalTracklets = {0, 0};
339339
uint32_t mTotalLines = 0;
340340
// \Vertexer
@@ -356,7 +356,7 @@ struct TimeFrame {
356356

357357
bool mIsStaggered{false};
358358

359-
std::shared_ptr<BoundedMemoryResource> mMemoryPool;
359+
std::shared_ptr<o2::itsmft::tracking::BoundedMemoryResource> mMemoryPool;
360360
};
361361

362362
template <int NLayers>

Detectors/ITSMFT/ITS/tracking/include/ITStracking/Tracker.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#include "ITStracking/Definitions.h"
3434
#include "ITStracking/TimeFrame.h"
3535
#include "ITStracking/TrackerTraits.h"
36-
#include "ITStracking/BoundedAllocator.h"
36+
#include "ITSMFTTracking/BoundedAllocator.h"
3737

3838
namespace o2
3939
{
@@ -60,7 +60,7 @@ class Tracker
6060
const LogFunc& = [](const std::string& s) { std::cerr << s << '\n'; });
6161

6262
void setParameters(const std::vector<TrackingParameters>& p) { mTrkParams = p; }
63-
void setMemoryPool(std::shared_ptr<BoundedMemoryResource> pool) { mMemoryPool = pool; }
63+
void setMemoryPool(std::shared_ptr<o2::itsmft::tracking::BoundedMemoryResource> pool) { mMemoryPool = pool; }
6464
std::vector<TrackingParameters>& getParameters() { return mTrkParams; }
6565
void setBz(float bz) { mTraits->setBz(bz); }
6666
void setTimeSlice(size_t slice) noexcept { mTimeSlice = slice; }
@@ -91,7 +91,7 @@ class Tracker
9191
unsigned int mNumberOfDroppedTFs{0};
9292
unsigned int mTimeFrameCounter{0};
9393
double mTotalTime{0};
94-
std::shared_ptr<BoundedMemoryResource> mMemoryPool;
94+
std::shared_ptr<o2::itsmft::tracking::BoundedMemoryResource> mMemoryPool;
9595

9696
enum Steps {
9797
TFInit = 0,

Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
#include "ITSMFTTracking/CapacityEstimator.h"
2727
#include "ITStracking/TimeFrame.h"
2828
#include "ITStracking/Cell.h"
29-
#include "ITStracking/BoundedAllocator.h"
29+
#include "ITSMFTTracking/BoundedAllocator.h"
3030
#include "ITStracking/TrackExtensionHypothesis.h"
3131
#include "ITStracking/TrackFollower.h"
3232
#include "ITStracking/TrackITSInternal.h"
@@ -72,9 +72,9 @@ class TrackerTraits
7272
virtual void findRoads(const int iteration);
7373

7474
template <typename InputSeed>
75-
void processNeighbours(int iteration, int defaultCellTopologyId, int iLevel, uint64_t capacityKey, const bounded_vector<InputSeed>& currentSeeds, bounded_vector<RoadSeedN>& updatedSeeds);
75+
void processNeighbours(int iteration, int defaultCellTopologyId, int iLevel, uint64_t capacityKey, const o2::itsmft::tracking::bounded_vector<InputSeed>& currentSeeds, o2::itsmft::tracking::bounded_vector<RoadSeedN>& updatedSeeds);
7676

77-
void acceptTracks(int iteration, bounded_vector<TrackITSExt>& tracks, const bounded_vector<int>& trackIndices, bounded_vector<bounded_vector<int>>& firstClusters);
77+
void acceptTracks(int iteration, o2::itsmft::tracking::bounded_vector<TrackITSExt>& tracks, const o2::itsmft::tracking::bounded_vector<int>& trackIndices, o2::itsmft::tracking::bounded_vector<o2::itsmft::tracking::bounded_vector<int>>& firstClusters);
7878
void markTracks(int iteration);
7979

8080
void updateTrackingParameters(const std::vector<TrackingParameters>& trkPars)
@@ -86,7 +86,7 @@ class TrackerTraits
8686
float getBz() const { return mBz; }
8787
virtual const char* getName() const noexcept { return "CPU"; }
8888
virtual bool isGPU() const noexcept { return false; }
89-
void setMemoryPool(std::shared_ptr<BoundedMemoryResource> pool) noexcept { mMemoryPool = pool; }
89+
void setMemoryPool(std::shared_ptr<o2::itsmft::tracking::BoundedMemoryResource> pool) noexcept { mMemoryPool = pool; }
9090
auto getMemoryPool() const noexcept { return mMemoryPool; }
9191

9292
// Others
@@ -99,7 +99,7 @@ class TrackerTraits
9999
virtual int getTFNumberOfCells() const { return mTimeFrame->getNumberOfCells(); }
100100

101101
private:
102-
std::shared_ptr<BoundedMemoryResource> mMemoryPool;
102+
std::shared_ptr<o2::itsmft::tracking::BoundedMemoryResource> mMemoryPool;
103103

104104
protected:
105105
std::shared_ptr<tbb::task_arena> mTaskArena;
@@ -110,8 +110,8 @@ class TrackerTraits
110110
{
111111
}
112112

113-
bounded_vector<TrackExtensionHypothesis<NLayers>> activeHypotheses;
114-
bounded_vector<TrackExtensionHypothesis<NLayers>> nextHypotheses;
113+
o2::itsmft::tracking::bounded_vector<TrackExtensionHypothesis<NLayers>> activeHypotheses;
114+
o2::itsmft::tracking::bounded_vector<TrackExtensionHypothesis<NLayers>> nextHypotheses;
115115
};
116116

117117
bool finaliseTrackSeed(const TrackSeedN& seed,

0 commit comments

Comments
 (0)