Skip to content

Commit a32b8d4

Browse files
committed
ITS: add 11-layer GPU tracking support
1 parent dd8e9c1 commit a32b8d4

4 files changed

Lines changed: 188 additions & 3 deletions

File tree

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace o2::its::gpu
2525
{
2626

2727
template <int NLayers>
28-
class TimeFrameGPU final : public TimeFrame<NLayers>
28+
class TimeFrameGPU : public TimeFrame<NLayers>
2929
{
3030
using typename TimeFrame<NLayers>::IndexTableUtilsN;
3131
using typename TimeFrame<NLayers>::ROFOverlapTableN;
@@ -35,7 +35,7 @@ class TimeFrameGPU final : public TimeFrame<NLayers>
3535

3636
public:
3737
TimeFrameGPU() = default;
38-
~TimeFrameGPU() final = default;
38+
~TimeFrameGPU() override = default;
3939

4040
/// Most relevant operations
4141
void pushMemoryStack(const int);
@@ -104,7 +104,7 @@ class TimeFrameGPU final : public TimeFrame<NLayers>
104104

105105
/// interface
106106
virtual bool isGPU() const noexcept final { return true; }
107-
virtual const char* getName() const noexcept { return "GPU"; }
107+
virtual const char* getName() const noexcept override final { return "GPU"; }
108108
IndexTableUtilsN* getDeviceIndexTableUtils() { return mIndexTableUtilsDevice; }
109109
const auto getDeviceROFOverlapTableView() { return mDeviceROFOverlapTableView; }
110110
const auto getDeviceROFVertexLookupTableView() { return mDeviceROFVertexLookupTableView; }

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,4 +694,5 @@ void TimeFrameGPU<NLayers>::wipe()
694694
}
695695

696696
template class TimeFrameGPU<7>;
697+
template class TimeFrameGPU<11>;
697698
} // namespace o2::its::gpu

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,4 +380,7 @@ void TrackerTraitsGPU<NLayers>::setBz(float bz)
380380
}
381381

382382
template class TrackerTraitsGPU<7>;
383+
#ifdef ENABLE_UPGRADES
384+
template class TrackerTraitsGPU<11>;
385+
#endif
383386
} // namespace o2::its

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

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1258,4 +1258,185 @@ template void computeTrackSeedHandler(TrackSeed<7>* trackSeeds,
12581258
const o2::base::PropagatorF::MatCorrType matCorrType,
12591259
o2::its::ExternalAllocator* alloc);
12601260

1261+
/// Explicit instantiation of ALICE3 handlers
1262+
#ifdef ENABLE_UPGRADES
1263+
template void countTrackletsInROFsHandler<11>(const IndexTableUtils<11>* utils,
1264+
const ROFMaskTable<11>::View& rofMask,
1265+
const int layer,
1266+
const ROFOverlapTable<11>::View& rofOverlaps,
1267+
const ROFVertexLookupTable<11>::View& vertexLUT,
1268+
const int vertexId,
1269+
const Vertex* vertices,
1270+
const int* rofPV,
1271+
const Cluster** clusters,
1272+
std::vector<unsigned int> nClusters,
1273+
const int** ROFClusters,
1274+
const unsigned char** usedClusters,
1275+
const int** clustersIndexTables,
1276+
int** trackletsLUTs,
1277+
gsl::span<int*> trackletsLUTsHost,
1278+
const int iteration,
1279+
const float NSigmaCut,
1280+
bounded_vector<float>& phiCuts,
1281+
const float resolutionPV,
1282+
std::array<float, 11>& minRs,
1283+
std::array<float, 11>& maxRs,
1284+
bounded_vector<float>& resolutions,
1285+
std::vector<float>& radii,
1286+
bounded_vector<float>& mulScatAng,
1287+
o2::its::ExternalAllocator* alloc,
1288+
gpu::Streams& streams);
1289+
1290+
template void computeTrackletsInROFsHandler<11>(const IndexTableUtils<11>* utils,
1291+
const ROFMaskTable<11>::View& rofMask,
1292+
const int layer,
1293+
const ROFOverlapTable<11>::View& rofOverlaps,
1294+
const ROFVertexLookupTable<11>::View& vertexLUT,
1295+
const int vertexId,
1296+
const Vertex* vertices,
1297+
const int* rofPV,
1298+
const Cluster** clusters,
1299+
std::vector<unsigned int> nClusters,
1300+
const int** ROFClusters,
1301+
const unsigned char** usedClusters,
1302+
const int** clustersIndexTables,
1303+
Tracklet** tracklets,
1304+
gsl::span<Tracklet*> spanTracklets,
1305+
gsl::span<int> nTracklets,
1306+
int** trackletsLUTs,
1307+
gsl::span<int*> trackletsLUTsHost,
1308+
const int iteration,
1309+
const float NSigmaCut,
1310+
bounded_vector<float>& phiCuts,
1311+
const float resolutionPV,
1312+
std::array<float, 11>& minRs,
1313+
std::array<float, 11>& maxRs,
1314+
bounded_vector<float>& resolutions,
1315+
std::vector<float>& radii,
1316+
bounded_vector<float>& mulScatAng,
1317+
o2::its::ExternalAllocator* alloc,
1318+
gpu::Streams& streams);
1319+
1320+
template void countCellsHandler<11>(const Cluster** sortedClusters,
1321+
const Cluster** unsortedClusters,
1322+
const TrackingFrameInfo** tfInfo,
1323+
Tracklet** tracklets,
1324+
int** trackletsLUT,
1325+
const int nTracklets,
1326+
const int layer,
1327+
CellSeed* cells,
1328+
int** cellsLUTsArrayDevice,
1329+
int* cellsLUTsHost,
1330+
const float bz,
1331+
const float maxChi2ClusterAttachment,
1332+
const float cellDeltaTanLambdaSigma,
1333+
const float nSigmaCut,
1334+
const std::vector<float>& layerxX0Host,
1335+
o2::its::ExternalAllocator* alloc,
1336+
gpu::Streams& streams);
1337+
1338+
template void computeCellsHandler<11>(const Cluster** sortedClusters,
1339+
const Cluster** unsortedClusters,
1340+
const TrackingFrameInfo** tfInfo,
1341+
Tracklet** tracklets,
1342+
int** trackletsLUT,
1343+
const int nTracklets,
1344+
const int layer,
1345+
CellSeed* cells,
1346+
int** cellsLUTsArrayDevice,
1347+
int* cellsLUTsHost,
1348+
const float bz,
1349+
const float maxChi2ClusterAttachment,
1350+
const float cellDeltaTanLambdaSigma,
1351+
const float nSigmaCut,
1352+
const std::vector<float>& layerxX0Host,
1353+
gpu::Streams& streams);
1354+
1355+
template void countCellNeighboursHandler<11>(CellSeed** cellsLayersDevice,
1356+
int* neighboursLUT,
1357+
int** cellsLUTs,
1358+
gpuPair<int, int>* cellNeighbours,
1359+
int* neighboursIndexTable,
1360+
const Tracklet** tracklets,
1361+
const float maxChi2ClusterAttachment,
1362+
const float bz,
1363+
const int layerIndex,
1364+
const unsigned int nCells,
1365+
const unsigned int nCellsNext,
1366+
const int maxCellNeighbours,
1367+
o2::its::ExternalAllocator* alloc,
1368+
gpu::Stream& stream);
1369+
1370+
template void computeCellNeighboursHandler<11>(CellSeed** cellsLayersDevice,
1371+
int* neighboursLUT,
1372+
int** cellsLUTs,
1373+
gpuPair<int, int>* cellNeighbours,
1374+
int* neighboursIndexTable,
1375+
const Tracklet** tracklets,
1376+
const float maxChi2ClusterAttachment,
1377+
const float bz,
1378+
const int layerIndex,
1379+
const unsigned int nCells,
1380+
const unsigned int nCellsNext,
1381+
const int maxCellNeighbours,
1382+
gpu::Stream& stream);
1383+
1384+
template void processNeighboursHandler<11>(const int startLayer,
1385+
const int startLevel,
1386+
CellSeed** allCellSeeds,
1387+
CellSeed* currentCellSeeds,
1388+
std::array<int, 9>& nCells,
1389+
const unsigned char** usedClusters,
1390+
std::array<int*, 9>& neighbours,
1391+
gsl::span<int*> neighboursDeviceLUTs,
1392+
const TrackingFrameInfo** foundTrackingFrameInfo,
1393+
bounded_vector<TrackSeed<11>>& seedsHost,
1394+
const float bz,
1395+
const float maxChi2ClusterAttachment,
1396+
const float maxChi2NDF,
1397+
const std::vector<float>& layerxX0Host,
1398+
const o2::base::Propagator* propagator,
1399+
const o2::base::PropagatorF::MatCorrType matCorrType,
1400+
o2::its::ExternalAllocator* alloc);
1401+
1402+
template void countTrackSeedHandler(TrackSeed<11>* trackSeeds,
1403+
const TrackingFrameInfo** foundTrackingFrameInfo,
1404+
const Cluster** unsortedClusters,
1405+
int* seedLUT,
1406+
const std::vector<float>& layerRadiiHost,
1407+
const std::vector<float>& minPtsHost,
1408+
const std::vector<float>& layerxX0Host,
1409+
const unsigned int nSeeds,
1410+
const float bz,
1411+
const int startLevel,
1412+
const float maxChi2ClusterAttachment,
1413+
const float maxChi2NDF,
1414+
const int reseedIfShorter,
1415+
const bool repeatRefitOut,
1416+
const bool shiftRefToCluster,
1417+
const o2::base::Propagator* propagator,
1418+
const o2::base::PropagatorF::MatCorrType matCorrType,
1419+
o2::its::ExternalAllocator* alloc);
1420+
1421+
template void computeTrackSeedHandler(TrackSeed<11>* trackSeeds,
1422+
const TrackingFrameInfo** foundTrackingFrameInfo,
1423+
const Cluster** unsortedClusters,
1424+
o2::its::TrackITSExt* tracks,
1425+
const int* seedLUT,
1426+
const std::vector<float>& layerRadiiHost,
1427+
const std::vector<float>& minPtsHost,
1428+
const std::vector<float>& layerxX0Host,
1429+
const unsigned int nSeeds,
1430+
const unsigned int nTracks,
1431+
const float bz,
1432+
const int startLevel,
1433+
const float maxChi2ClusterAttachment,
1434+
const float maxChi2NDF,
1435+
const int reseedIfShorter,
1436+
const bool repeatRefitOut,
1437+
const bool shiftRefToCluster,
1438+
const o2::base::Propagator* propagator,
1439+
const o2::base::PropagatorF::MatCorrType matCorrType,
1440+
o2::its::ExternalAllocator* alloc);
1441+
#endif
12611442
} // namespace o2::its

0 commit comments

Comments
 (0)