Skip to content

Commit 0a29e78

Browse files
authored
Merge pull request #3 from davidrohr/dev_pull_request2
Updates for TPC GPU Decoding
2 parents 7ee82f7 + 5f36712 commit 0a29e78

File tree

2 files changed

+10
-15
lines changed

2 files changed

+10
-15
lines changed

GPU/GPUTracking/DataCompression/GPUTPCDecompression.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ class GPUTPCDecompression : public GPUProcessor
6565
unsigned int* mNativeClustersIndex;
6666
unsigned int* mUnattachedClustersOffsets;
6767
o2::tpc::ClusterNative* mTmpNativeClusters;
68-
o2::tpc::ClusterNativeAccess* mClusterNativeAccess;
6968
o2::tpc::ClusterNative* mNativeClustersBuffer;
7069

7170
template <class T>

GPU/GPUTracking/Global/GPUChainTrackingCompression.cxx

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ int GPUChainTracking::RunTPCDecompression()
281281
runKernel<GPUTPCDecompressionKernels, GPUTPCDecompressionKernels::step0attached>(GetGridAuto(inputStream), krnlRunRangeNone, krnlEventNone);
282282

283283
mInputsHost->mNClusterNative = mInputsShadow->mNClusterNative = cmprClsHost.nAttachedClusters + cmprClsHost.nUnattachedClusters;
284-
AllocateRegisteredMemory(mInputsHost->mResourceClusterNativeOutput);
284+
AllocateRegisteredMemory(mInputsHost->mResourceClusterNativeOutput, mSubOutputControls[GPUTrackingOutputs::getIndex(&GPUTrackingOutputs::clustersNative)]);
285285
AllocateRegisteredMemory(mInputsHost->mResourceClusterNativeBuffer);
286286
DecompressorShadow.mNativeClustersBuffer = mInputsShadow->mPclusterNativeBuffer;
287287
Decompressor.mNativeClustersBuffer = mInputsHost->mPclusterNativeOutput;
@@ -304,30 +304,26 @@ int GPUChainTracking::RunTPCDecompression()
304304
TransferMemoryResourceLinkToGPU(RecoStep::TPCDecompression, Decompressor.mResourceTmpClustersOffsets, inputStream);
305305
if (decodedAttachedClusters != cmprClsHost.nAttachedClusters) {
306306
GPUWarning("%u / %u clusters failed track model decoding (%f %%)", cmprClsHost.nAttachedClusters - decodedAttachedClusters, cmprClsHost.nAttachedClusters, 100.f * (float)(cmprClsHost.nAttachedClusters - decodedAttachedClusters) / (float)cmprClsHost.nAttachedClusters);
307-
} else {
308-
GPUInfo("All attached clusters have been decoded");
309307
}
310308

311-
mClusterNativeAccess->clustersLinear = mInputsShadow->mPclusterNativeBuffer;
312-
mClusterNativeAccess->setOffsetPtrs();
309+
if (doGPU) {
310+
mClusterNativeAccess->clustersLinear = mInputsShadow->mPclusterNativeBuffer;
311+
mClusterNativeAccess->setOffsetPtrs();
312+
*mInputsHost->mPclusterNativeAccess = *mClusterNativeAccess;
313+
processorsShadow()->ioPtrs.clustersNative = mInputsShadow->mPclusterNativeAccess;
314+
WriteToConstantMemory(RecoStep::TPCDecompression, (char*)&processors()->ioPtrs - (char*)processors(), &processorsShadow()->ioPtrs, sizeof(processorsShadow()->ioPtrs), inputStream);
315+
TransferMemoryResourceLinkToGPU(RecoStep::TPCDecompression, mInputsHost->mResourceClusterNativeAccess, inputStream);
316+
}
313317
mIOPtrs.clustersNative = mClusterNativeAccess.get();
314-
*mInputsHost->mPclusterNativeAccess = *mIOPtrs.clustersNative;
315-
processorsShadow()->ioPtrs.clustersNative = mInputsShadow->mPclusterNativeAccess;
316-
WriteToConstantMemory(RecoStep::TPCDecompression, (char*)&processors()->ioPtrs - (char*)processors(), &processorsShadow()->ioPtrs, sizeof(processorsShadow()->ioPtrs), inputStream);
317-
TransferMemoryResourceLinkToGPU(RecoStep::TPCDecompression, mInputsHost->mResourceClusterNativeAccess, inputStream);
318318
mClusterNativeAccess->clustersLinear = mInputsHost->mPclusterNativeOutput;
319319
mClusterNativeAccess->setOffsetPtrs();
320-
mIOPtrs.clustersNative = mClusterNativeAccess.get();
321-
*mInputsHost->mPclusterNativeAccess = *mIOPtrs.clustersNative;
322-
processors()->ioPtrs.clustersNative = mInputsHost->mPclusterNativeAccess;
323320

324321
runKernel<GPUTPCDecompressionKernels, GPUTPCDecompressionKernels::step1unattached>(GetGridAuto(inputStream), krnlRunRangeNone, krnlEventNone);
325-
if (GetProcessingSettings().deterministicGPUReconstruction) {
322+
if (GetProcessingSettings().deterministicGPUReconstruction || GetProcessingSettings().debugLevel >= 4) {
326323
runKernel<GPUTPCDecompressionUtilKernels, GPUTPCDecompressionUtilKernels::sortPerSectorRow>(GetGridAutoStep(inputStream, RecoStep::TPCDecompression), krnlRunRangeNone, krnlEventNone);
327324
}
328325
SynchronizeStream(inputStream);
329326
GPUMemCpy(RecoStep::TPCDecompression, (void*)mInputsHost->mPclusterNativeOutput, (void*)mInputsShadow->mPclusterNativeBuffer, sizeof(mInputsShadow->mPclusterNativeBuffer[0]) * mIOPtrs.clustersNative->nClustersTotal, inputStream, false);
330-
mIOPtrs.clustersNative = mClusterNativeAccess.get();
331327
mRec->PopNonPersistentMemory(RecoStep::TPCDecompression, qStr2Tag("TPCDCMPR"));
332328
#endif
333329
return 0;

0 commit comments

Comments
 (0)