Skip to content

Commit 069a7e9

Browse files
committed
Minor improvements for MC handling
1 parent 24b1d04 commit 069a7e9

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

GPU/GPUTracking/TPCClusterFinder/GPUTPCNNClusterizerKernels.cxx

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -291,9 +291,6 @@ GPUdii() void GPUTPCNNClusterizerKernels::Thread<GPUTPCNNClusterizerKernels::pub
291291

292292
uint32_t maxClusterNum = clusterer.mPmemory->counters.nClusters;
293293
uint32_t full_glo_idx = glo_idx + batchStart;
294-
if (full_glo_idx >= maxClusterNum) {
295-
return;
296-
}
297294
int32_t model_output_index = glo_idx * clustererNN.mNnClusterizerModelReg1NumOutputNodes;
298295

299296
CfArray2D<PackedCharge> chargeMap(reinterpret_cast<PackedCharge*>(clusterer.mPchargeMap));
@@ -302,6 +299,24 @@ GPUdii() void GPUTPCNNClusterizerKernels::Thread<GPUTPCNNClusterizerKernels::pub
302299

303300
CPU_ONLY(MCLabelAccumulator labelAccElem(clusterer));
304301
MCLabelAccumulator* labelAcc = CPU_PTR(&labelAccElem);
302+
303+
if (full_glo_idx >= maxClusterNum) {
304+
if (withMC) {
305+
ClusterAccumulator dummy_pc;
306+
CPU_ONLY(labelAcc->collect(peak, central_charge));
307+
GPUTPCCFClusterizer::buildCluster(
308+
clusterer.Param().rec,
309+
chargeMap,
310+
peak,
311+
smem.posBcast,
312+
smem.buf,
313+
smem.innerAboveThreshold,
314+
&dummy_pc,
315+
labelAcc);
316+
}
317+
return;
318+
}
319+
305320
tpc::ClusterNative* clusterOut = (withMC) ? nullptr : clusterer.mPclusterByRow;
306321

307322
// LOG(info) << glo_idx << " -- " << model_output_index << " / " << clustererNN.outputDataReg1.size() << " / " << clustererNN.mNnClusterizerModelReg1NumOutputNodes << " -- " << clusterer.peakPositions.size() << " -- " << clusterer.centralCharges.size();
@@ -389,6 +404,7 @@ GPUdii() void GPUTPCNNClusterizerKernels::Thread<GPUTPCNNClusterizerKernels::pub
389404
auto& clusterer = processors.tpcClusterer[sector];
390405
auto& clustererNN = processors.tpcNNClusterer[sector];
391406

407+
uint32_t maxClusterNum = clusterer.mPmemory->counters.nClusters;
392408
CfArray2D<PackedCharge> chargeMap(reinterpret_cast<PackedCharge*>(clusterer.mPchargeMap));
393409
CfChargePos peak = clusterer.mPfilteredPeakPositions[CAMath::Min(glo_idx + batchStart, (uint32_t)(clusterer.mPmemory->counters.nClusters - 1))];
394410
float central_charge = static_cast<float>(chargeMap[peak].unpack());
@@ -397,6 +413,24 @@ GPUdii() void GPUTPCNNClusterizerKernels::Thread<GPUTPCNNClusterizerKernels::pub
397413
MCLabelAccumulator* labelAcc = CPU_PTR(&labelAccElem);
398414
tpc::ClusterNative* clusterOut = (withMC) ? nullptr : clusterer.mPclusterByRow;
399415
uint32_t full_glo_idx = glo_idx + batchStart;
416+
417+
if (full_glo_idx >= maxClusterNum) {
418+
if (withMC) {
419+
ClusterAccumulator dummy_pc;
420+
CPU_ONLY(labelAcc->collect(peak, central_charge));
421+
GPUTPCCFClusterizer::buildCluster(
422+
clusterer.Param().rec,
423+
chargeMap,
424+
peak,
425+
smem.posBcast,
426+
smem.buf,
427+
smem.innerAboveThreshold,
428+
&dummy_pc,
429+
labelAcc);
430+
}
431+
return;
432+
}
433+
400434
uint32_t model_output_index = glo_idx * clustererNN.mNnClusterizerModelReg2NumOutputNodes;
401435

402436
if (clustererNN.mOutputDataClass[full_glo_idx] > 0) {

0 commit comments

Comments
 (0)