31bool GPUChainTracking::NeedTPCClustersOnGPU()
44 bool transferClusters =
false;
52 mInputsHost->mPclusterNativeAccess->setOffsetPtrs();
55 transferClusters =
true;
57 if (!
param().par.earlyTpcTransform) {
59 GPUInfo(
"Early transform inactive, skipping TPC Early transformation kernel, transformed on the fly during sector data creation / refit");
61 if (transferClusters) {
96 throw std::runtime_error(
"Error registering memory for GPU");
118 throw std::runtime_error(
"Error registering memory for GPU");
136 throw std::runtime_error(
"Error registering memory for GPU");
152 throw std::runtime_error(
"Cannot forward TPC digits with Clusterizer on GPU");
156 const float zsThreshold =
param().
rec.tpc.zsThreshold;
160 if (d.getChargeFloat() >= zsThreshold) {
162 c.setTimeFlags(d.getTimeStamp(), 0);
163 c.setPad(d.getPad());
166 c.
qTot =
c.qMax = d.getChargeFloat();
167 tmp[
i][d.getRow()].emplace_back(
c);
179 nTotal += tmp[
i][
j].size();
185 GPUInfo(
"Forwarded %u TPC clusters", nTotal);
Class of a TPC cluster in TPC-native coordinates (row, time)
std::unique_ptr< o2::tpc::ClusterNativeAccess > mClusterNativeAccess
void ConvertNativeToClusterDataLegacy()
void ConvertZSFilter(bool zs12bit)
std::unique_ptr< GPUTrackingInputProvider > mInputsHost
void ConvertRun2RawToNative()
void ConvertZSEncoder(int32_t version)
int32_t ConvertNativeToClusterData()
GPUTrackingInOutPointers & mIOPtrs
struct o2::gpu::GPUChainTracking::InOutMemory mIOMem
std::unique_ptr< GPUTrackingInputProvider > mInputsShadow
int32_t ForwardTPCDigits()
void TransferMemoryResourceLinkToGPU(RecoStep step, int16_t res, int32_t stream=-1, deviceEvent *ev=nullptr, deviceEvent *evList=nullptr, int32_t nEvents=1)
void GPUMemCpy(RecoStep step, void *dst, const void *src, size_t size, int32_t stream, int32_t toGPU, deviceEvent *ev=nullptr, deviceEvent *evList=nullptr, int32_t nEvents=1)
krnlExec GetGridBlk(uint32_t nBlocks, int32_t stream, GPUReconstruction::krnlDeviceType d=GPUReconstruction::krnlDeviceType::Auto, GPUCA_RECO_STEP st=GPUCA_RECO_STEP::NoRecoStep)
GPUReconstruction::RecoStepField GetRecoStepsGPU() const
virtual std::unique_ptr< gpu_reconstruction_kernels::threadContext > GetThreadContext()
void WriteToConstantMemory(RecoStep step, size_t offset, const void *src, size_t size, int32_t stream=-1, deviceEvent *ev=nullptr)
size_t AllocateRegisteredMemory(GPUProcessor *proc)
GPUConstantMem * processors()
void SetupGPUProcessor(T *proc, bool allocate)
const GPUSettingsProcessing & GetProcessingSettings() const
void SynchronizeStream(int32_t stream)
GPUReconstructionCPU * mRec
GPUConstantMem * processorsShadow()
static constexpr int32_t NSECTORS
void TransferMemoryResourcesToHost(RecoStep step, GPUProcessor *proc, int32_t stream=-1, bool all=false)
GPUReconstruction * rec()
void TransferMemoryResourcesToGPU(RecoStep step, GPUProcessor *proc, int32_t stream=-1, bool all=false)
static void RunZSEncoder(const S &in, std::unique_ptr< uint64_t[]> *outBuffer, uint32_t *outSizes, o2::raw::RawFileWriter *raw, const o2::InteractionRecord *ir, const GPUParam ¶m, int32_t version, bool verify, float threshold=0.f, bool padding=false, std::function< void(std::vector< o2::tpc::Digit > &)> digitsFilter=nullptr)
static void ConvertNativeToClusterData(o2::tpc::ClusterNativeAccess *native, std::unique_ptr< GPUTPCClusterData[]> *clusters, uint32_t *nClusters, const TPCFastTransform *transform, int32_t continuousMaxTimeBin=0)
static void RunZSFilter(std::unique_ptr< o2::tpc::Digit[]> *buffers, const o2::tpc::Digit *const *ptrs, size_t *nsb, const size_t *ns, const GPUParam ¶m, bool zs12bit, float threshold)
static void RunZSEncoderCreateMeta(const uint64_t *buffer, const uint32_t *sizes, void **ptrs, GPUTrackingInOutZS *out)
static void ConvertRun2RawToNative(o2::tpc::ClusterNativeAccess &native, std::unique_ptr< o2::tpc::ClusterNative[]> &nativeBuffer, const AliHLTTPCRawCluster **rawClusters, uint32_t *nRawClusters)
void PopNonPersistentMemory(RecoStep step, uint64_t tag)
RecoStepField GetRecoStepsGPU() const
void PushNonPersistentMemory(uint64_t tag)
GPUMemorySizeScalers * MemoryScalers()
int32_t registerMemoryForGPU(const void *ptr, size_t size)
GPUTPCClusterData * mClusters
Global TPC definitions and constants.
constexpr T qStr2Tag(const char *str)
std::unique_ptr< o2::tpc::Digit[]> tpcDigits[NSECTORS]
std::unique_ptr< GPUTrackingInOutDigits > digitMap
std::unique_ptr< GPUTPCClusterData[]> clusterData[NSECTORS]
std::unique_ptr< o2::tpc::ClusterNative[]> clustersNative
std::unique_ptr< uint64_t[]> tpcZSpages
std::unique_ptr< GPUTrackingInOutZS > tpcZSmeta
std::unique_ptr< o2::tpc::ClusterNativeAccess > clusterNativeAccess
std::unique_ptr< AliHLTTPCRawCluster[]> rawClusters[NSECTORS]
std::unique_ptr< GPUTrackingInOutZS::GPUTrackingInOutZSMeta > tpcZSmeta2
GPUTPCConvert tpcConverter
GPUTrackingInOutPointers ioPtrs
const o2::tpc::Digit * tpcDigits[NSECTORS]
size_t nTPCDigits[NSECTORS]
const o2::tpc::ClusterNativeAccess * clustersNative
uint32_t nClusterData[NSECTORS]
uint32_t nRawClusters[NSECTORS]
const GPUSettingsTF * settingsTF
const GPUTrackingInOutZS * tpcZS
const AliHLTTPCRawCluster * rawClusters[NSECTORS]
const GPUTPCClusterData * clusterData[NSECTORS]
const GPUTrackingInOutDigits * tpcPackedDigits
const void *const * zsPtr[NENDPOINTS]
uint32_t count[NENDPOINTS]
const uint32_t * nZSPtr[NENDPOINTS]
GPUTrackingInOutZSSector sector[NSECTORS]
static constexpr uint32_t NENDPOINTS
unsigned int nClustersTotal
unsigned int clusterOffset[constants::MAXSECTOR][constants::MAXGLOBALPADROW]
const ClusterNative * clustersLinear
static constexpr size_t TPC_ZS_PAGE_SIZE
std::vector< uint64_t > convert(gsl::span< const uint64_t > page)
o2::InteractionRecord ir(0, 0)