@@ -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