Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 4 additions & 10 deletions Detectors/ITSMFT/ITS/tracking/GPU/ITStrackingGPU/TimeFrameGPU.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,13 @@

#include "ITStracking/TimeFrame.h"
#include "ITStracking/Configuration.h"

#include "ITStrackingGPU/ClusterLinesGPU.h"
#include "ITStrackingGPU/Utils.h"

#include <gsl/gsl>

namespace o2
{
namespace its
{
namespace gpu
namespace o2::its::gpu
{

class Stream;

class DefaultGPUAllocator : public ExternalAllocator
Expand Down Expand Up @@ -228,7 +223,6 @@ inline int TimeFrameGPU<nLayers>::getNumberOfCells() const
return std::accumulate(mNCells.begin(), mNCells.end(), 0);
}

} // namespace gpu
} // namespace its
} // namespace o2
} // namespace o2::its::gpu

#endif
29 changes: 13 additions & 16 deletions Detectors/ITSMFT/ITS/tracking/GPU/ITStrackingGPU/TrackerTraitsGPU.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
#ifndef ITSTRACKINGGPU_TRACKERTRAITSGPU_H_
#define ITSTRACKINGGPU_TRACKERTRAITSGPU_H_

#include "ITStracking/Configuration.h"
#include "ITStracking/Definitions.h"
#include "ITStracking/TrackerTraits.h"
#include "ITStrackingGPU/TimeFrameGPU.h"

Expand All @@ -24,28 +22,27 @@ namespace its
{

template <int nLayers = 7>
class TrackerTraitsGPU : public TrackerTraits
class TrackerTraitsGPU final : public TrackerTraits
{
public:
TrackerTraitsGPU() = default;
~TrackerTraitsGPU() override = default;

// void computeLayerCells() final;
void adoptTimeFrame(TimeFrame* tf) override;
void initialiseTimeFrame(const int iteration) override;
void adoptTimeFrame(TimeFrame* tf) final;
void initialiseTimeFrame(const int iteration) final;

void computeLayerTracklets(const int iteration, int, int) final;
void computeLayerCells(const int iteration) override;
void setBz(float) override;
void findCellsNeighbours(const int iteration) override;
void findRoads(const int iteration) override;
void computeLayerCells(const int iteration) final;
void findCellsNeighbours(const int iteration) final;
void findRoads(const int iteration) final;

bool supportsExtendTracks() const noexcept final { return false; }
bool supportsFindShortPrimaries() const noexcept final { return false; }

// Methods to get CPU execution from traits
void initialiseTimeFrameHybrid(const int iteration) override { initialiseTimeFrame(iteration); };
void computeTrackletsHybrid(const int iteration, int, int) override;
void computeCellsHybrid(const int iteration) override;
void findCellsNeighboursHybrid(const int iteration) override;
void setBz(float) final;

void extendTracks(const int iteration) override;
const char* getName() const noexcept final { return "GPU"; }
bool isGPU() const noexcept final { return true; }

// TimeFrameGPU information forwarding
int getTFNumberOfClusters() const override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,7 @@ void computeCellNeighboursHandler(CellSeed** cellsLayersDevice,
const int nBlocks,
const int nThreads);

int filterCellNeighboursHandler(std::vector<int>&,
gpuPair<int, int>*,
int filterCellNeighboursHandler(gpuPair<int, int>*,
int*,
unsigned int);

Expand Down
87 changes: 29 additions & 58 deletions Detectors/ITSMFT/ITS/tracking/GPU/cuda/TrackerTraitsGPU.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,7 @@
///

#include <array>
#include <sstream>
#include <iostream>
#include <unistd.h>
#include <thread>

#include "DataFormatsITS/TrackITS.h"

Expand All @@ -41,54 +38,7 @@ void TrackerTraitsGPU<nLayers>::initialiseTimeFrame(const int iteration)
}

template <int nLayers>
void TrackerTraitsGPU<nLayers>::computeLayerTracklets(const int iteration, int, int)
{
}

template <int nLayers>
void TrackerTraitsGPU<nLayers>::computeLayerCells(const int iteration)
{
}

template <int nLayers>
void TrackerTraitsGPU<nLayers>::findCellsNeighbours(const int iteration)
{
}

template <int nLayers>
void TrackerTraitsGPU<nLayers>::extendTracks(const int iteration)
{
}

template <int nLayers>
void TrackerTraitsGPU<nLayers>::setBz(float bz)
{
mBz = bz;
mTimeFrameGPU->setBz(bz);
}

template <int nLayers>
int TrackerTraitsGPU<nLayers>::getTFNumberOfClusters() const
{
return mTimeFrameGPU->getNumberOfClusters();
}

template <int nLayers>
int TrackerTraitsGPU<nLayers>::getTFNumberOfTracklets() const
{
return std::accumulate(mTimeFrameGPU->getNTracklets().begin(), mTimeFrameGPU->getNTracklets().end(), 0);
}

template <int nLayers>
int TrackerTraitsGPU<nLayers>::getTFNumberOfCells() const
{
return mTimeFrameGPU->getNumberOfCells();
}

////////////////////////////////////////////////////////////////////////////////
// Hybrid tracking
template <int nLayers>
void TrackerTraitsGPU<nLayers>::computeTrackletsHybrid(const int iteration, int iROFslice, int iVertex)
void TrackerTraitsGPU<nLayers>::computeLayerTracklets(const int iteration, int iROFslice, int iVertex)
{
auto& conf = o2::its::ITSGpuTrackingParamConfig::Instance();
mTimeFrameGPU->createTrackletsLUTDevice(iteration);
Expand Down Expand Up @@ -161,7 +111,7 @@ void TrackerTraitsGPU<nLayers>::computeTrackletsHybrid(const int iteration, int
}

template <int nLayers>
void TrackerTraitsGPU<nLayers>::computeCellsHybrid(const int iteration)
void TrackerTraitsGPU<nLayers>::computeLayerCells(const int iteration)
{
mTimeFrameGPU->createCellsLUTDevice();
auto& conf = o2::its::ITSGpuTrackingParamConfig::Instance();
Expand Down Expand Up @@ -208,7 +158,7 @@ void TrackerTraitsGPU<nLayers>::computeCellsHybrid(const int iteration)
}

template <int nLayers>
void TrackerTraitsGPU<nLayers>::findCellsNeighboursHybrid(const int iteration)
void TrackerTraitsGPU<nLayers>::findCellsNeighbours(const int iteration)
{
mTimeFrameGPU->createNeighboursIndexTablesDevice();
auto& conf = o2::its::ITSGpuTrackingParamConfig::Instance();
Expand Down Expand Up @@ -250,8 +200,7 @@ void TrackerTraitsGPU<nLayers>::findCellsNeighboursHybrid(const int iteration)
conf.nBlocks,
conf.nThreads);

filterCellNeighboursHandler(mTimeFrameGPU->getCellsNeighbours()[iLayer],
mTimeFrameGPU->getDeviceNeighbourPairs(iLayer),
filterCellNeighboursHandler(mTimeFrameGPU->getDeviceNeighbourPairs(iLayer),
mTimeFrameGPU->getDeviceNeighbours(iLayer),
nNeigh);
}
Expand All @@ -270,9 +219,6 @@ void TrackerTraitsGPU<nLayers>::findRoads(const int iteration)
if ((mTrkParams[iteration].StartLayerMask & (1 << (startLayer + 2))) == 0) {
continue;
}
std::vector<int> lastCellId, updatedCellId;
std::vector<CellSeed> lastCellSeed, updatedCellSeed;

processNeighboursHandler<nLayers>(startLayer,
startLevel,
mTimeFrameGPU->getDeviceArrayCells(),
Expand Down Expand Up @@ -366,5 +312,30 @@ void TrackerTraitsGPU<nLayers>::findRoads(const int iteration)
}
};

template <int nLayers>
int TrackerTraitsGPU<nLayers>::getTFNumberOfClusters() const
{
return mTimeFrameGPU->getNumberOfClusters();
}

template <int nLayers>
int TrackerTraitsGPU<nLayers>::getTFNumberOfTracklets() const
{
return std::accumulate(mTimeFrameGPU->getNTracklets().begin(), mTimeFrameGPU->getNTracklets().end(), 0);
}

template <int nLayers>
int TrackerTraitsGPU<nLayers>::getTFNumberOfCells() const
{
return mTimeFrameGPU->getNumberOfCells();
}

template <int nLayers>
void TrackerTraitsGPU<nLayers>::setBz(float bz)
{
mBz = bz;
mTimeFrameGPU->setBz(bz);
}

template class TrackerTraitsGPU<7>;
} // namespace o2::its
Loading