Skip to content

Commit ce9dd39

Browse files
committed
GPU: Fix some minor issues indicated by clang sanitizer
1 parent 1eebd48 commit ce9dd39

File tree

4 files changed

+23
-14
lines changed

4 files changed

+23
-14
lines changed

GPU/GPUTracking/Base/GPUReconstruction.cxx

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,12 @@ int32_t GPUReconstruction::Init()
147147
if (InitDevice()) {
148148
return 1;
149149
}
150-
mHostMemoryPoolEnd = (char*)mHostMemoryBase + mHostMemorySize;
151-
mDeviceMemoryPoolEnd = (char*)mDeviceMemoryBase + mDeviceMemorySize;
150+
if (mProcessingSettings.memoryAllocationStrategy == GPUMemoryResource::ALLOCATION_GLOBAL) {
151+
mHostMemoryPoolEnd = (char*)mHostMemoryBase + mHostMemorySize;
152+
mDeviceMemoryPoolEnd = (char*)mDeviceMemoryBase + mDeviceMemorySize;
153+
} else {
154+
mHostMemoryPoolEnd = mDeviceMemoryPoolEnd = nullptr;
155+
}
152156
if (InitPhasePermanentMemory()) {
153157
return 1;
154158
}
@@ -860,14 +864,18 @@ void GPUReconstruction::ClearAllocatedMemory(bool clearOutputs)
860864
FreeRegisteredMemory(i);
861865
}
862866
}
863-
mHostMemoryPool = GPUProcessor::alignPointer<GPUCA_MEMALIGN>(mHostMemoryPermanent);
864-
mDeviceMemoryPool = GPUProcessor::alignPointer<GPUCA_MEMALIGN>(mDeviceMemoryPermanent);
865867
mUnmanagedChunks.clear();
866-
mVolatileMemoryStart = nullptr;
867868
mNonPersistentMemoryStack.clear();
868869
mNonPersistentIndividualAllocations.clear();
869-
mHostMemoryPoolEnd = mHostMemoryPoolBlocked ? mHostMemoryPoolBlocked : ((char*)mHostMemoryBase + mHostMemorySize);
870-
mDeviceMemoryPoolEnd = mDeviceMemoryPoolBlocked ? mDeviceMemoryPoolBlocked : ((char*)mDeviceMemoryBase + mDeviceMemorySize);
870+
mVolatileMemoryStart = nullptr;
871+
if (mProcessingSettings.memoryAllocationStrategy == GPUMemoryResource::ALLOCATION_GLOBAL) {
872+
mHostMemoryPool = GPUProcessor::alignPointer<GPUCA_MEMALIGN>(mHostMemoryPermanent);
873+
mDeviceMemoryPool = GPUProcessor::alignPointer<GPUCA_MEMALIGN>(mDeviceMemoryPermanent);
874+
mHostMemoryPoolEnd = mHostMemoryPoolBlocked ? mHostMemoryPoolBlocked : ((char*)mHostMemoryBase + mHostMemorySize);
875+
mDeviceMemoryPoolEnd = mDeviceMemoryPoolBlocked ? mDeviceMemoryPoolBlocked : ((char*)mDeviceMemoryBase + mDeviceMemorySize);
876+
} else {
877+
mHostMemoryPool = mDeviceMemoryPool = mHostMemoryPoolEnd = mDeviceMemoryPoolEnd = nullptr;
878+
}
871879
}
872880

873881
void GPUReconstruction::UpdateMaxMemoryUsed()

GPU/GPUTracking/Global/GPUChainTrackingSectorTracker.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ int32_t GPUChainTracking::RunTPCTrackingSectors_internal()
150150
if (param().rec.tpc.occupancyMapTimeBins || param().rec.tpc.sysClusErrorC12Norm) {
151151
uint32_t& occupancyTotal = *mInputsHost->mTPCClusterOccupancyMap;
152152
occupancyTotal = CAMath::Float2UIntRn(mRec->MemoryScalers()->nTPCHits / (mIOPtrs.settingsTF && mIOPtrs.settingsTF->hasNHBFPerTF ? mIOPtrs.settingsTF->nHBFPerTF : 128));
153-
mRec->UpdateParamOccupancyMap(param().rec.tpc.occupancyMapTimeBins ? mInputsHost->mTPCClusterOccupancyMap + 2 : nullptr, param().rec.tpc.occupancyMapTimeBins ? mInputsShadow->mTPCClusterOccupancyMap + 2 : nullptr, occupancyTotal, streamInitAndOccMap);
153+
mRec->UpdateParamOccupancyMap(param().rec.tpc.occupancyMapTimeBins ? mInputsHost->mTPCClusterOccupancyMap + 2 : nullptr, doGPU && param().rec.tpc.occupancyMapTimeBins ? mInputsShadow->mTPCClusterOccupancyMap + 2 : nullptr, occupancyTotal, streamInitAndOccMap);
154154
}
155155

156156
int32_t streamMap[NSECTORS];

GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,20 +1706,20 @@ GPUd() void GPUTPCGMMerger::CollectMergedTracks(int32_t nBlocks, int32_t nThread
17061706
nHits = nFilteredHits;
17071707
}
17081708

1709-
uint32_t iOutTrackFirstCluster = CAMath::AtomicAdd(&mMemory->nOutputTrackClusters, (uint32_t)nHits);
1709+
const uint32_t iOutTrackFirstCluster = CAMath::AtomicAdd(&mMemory->nOutputTrackClusters, (uint32_t)nHits);
17101710
if (iOutTrackFirstCluster >= mNMaxOutputTrackClusters) {
17111711
raiseError(GPUErrors::ERROR_MERGER_HIT_OVERFLOW, iOutTrackFirstCluster, mNMaxOutputTrackClusters);
17121712
CAMath::AtomicExch(&mMemory->nOutputTrackClusters, mNMaxOutputTrackClusters);
17131713
continue;
17141714
}
17151715

1716-
GPUTPCGMMergedTrackHit* cl = mClusters + iOutTrackFirstCluster;
1717-
GPUTPCGMMergedTrackHitXYZ* clXYZ = mClustersXYZ + iOutTrackFirstCluster;
1716+
GPUTPCGMMergedTrackHit* const cl = mClusters + iOutTrackFirstCluster;
17181717

17191718
for (int32_t i = 0; i < nHits; i++) {
17201719
uint8_t state;
17211720
if (Param().par.earlyTpcTransform) {
17221721
const GPUTPCClusterData& c = GetConstantMem()->tpcTrackers[trackClusters[i].sector].ClusterData()[trackClusters[i].id - GetConstantMem()->tpcTrackers[trackClusters[i].sector].Data().ClusterIdOffset()];
1722+
GPUTPCGMMergedTrackHitXYZ* const clXYZ = mClustersXYZ + iOutTrackFirstCluster;
17231723
clXYZ[i].x = c.x;
17241724
clXYZ[i].y = c.y;
17251725
clXYZ[i].z = c.z;
@@ -1760,7 +1760,7 @@ GPUd() void GPUTPCGMMerger::CollectMergedTracks(int32_t nBlocks, int32_t nThread
17601760
mergedTrack.SetCSide(p2.CSide());
17611761

17621762
GPUTPCGMBorderTrack b;
1763-
const float toX = Param().par.earlyTpcTransform ? clXYZ[0].x : GPUTPCGeometry::Row2X(cl[0].row);
1763+
const float toX = Param().par.earlyTpcTransform ? mClustersXYZ[iOutTrackFirstCluster].x : GPUTPCGeometry::Row2X(cl[0].row);
17641764
if (p2.TransportToX(this, toX, Param().bzCLight, b, GPUCA_MAX_SIN_PHI, false)) {
17651765
p1.X() = toX;
17661766
p1.Y() = b.Par()[0];
@@ -1791,12 +1791,13 @@ GPUd() void GPUTPCGMMerger::CollectMergedTracks(int32_t nBlocks, int32_t nThread
17911791
if (Param().rec.tpc.mergeCE) {
17921792
bool CEside;
17931793
if (Param().par.earlyTpcTransform) {
1794+
const GPUTPCGMMergedTrackHitXYZ* const clXYZ = mClustersXYZ + iOutTrackFirstCluster;
17941795
CEside = (mergedTrack.CSide() != 0) ^ (clXYZ[0].z > clXYZ[nHits - 1].z);
17951796
} else {
17961797
auto& cls = mConstantMem->ioPtrs.clustersNative->clustersLinear;
17971798
CEside = cls[cl[0].num].getTime() < cls[cl[nHits - 1].num].getTime();
17981799
}
1799-
MergeCEFill(trackParts[CEside ? lastTrackIndex : firstTrackIndex], cl[CEside ? (nHits - 1) : 0], &clXYZ[CEside ? (nHits - 1) : 0], iOutputTrack);
1800+
MergeCEFill(trackParts[CEside ? lastTrackIndex : firstTrackIndex], cl[CEside ? (nHits - 1) : 0], Param().par.earlyTpcTransform ? &(mClustersXYZ + iOutTrackFirstCluster)[CEside ? (nHits - 1) : 0] : nullptr, iOutputTrack);
18001801
}
18011802
} // itr
18021803
}

GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1091,7 +1091,7 @@ GPUd() void GPUTPCGMTrackParam::RefitTrack(GPUTPCGMMergedTrack& GPUrestrict() tr
10911091
GPUTPCGMTrackParam t = track.Param();
10921092
float Alpha = track.Alpha();
10931093
CADEBUG(int32_t nTrackHitsOld = nTrackHits; float ptOld = t.QPt());
1094-
bool ok = t.Fit(merger, iTrk, merger->Clusters() + track.FirstClusterRef(), merger->ClustersXYZ() + track.FirstClusterRef(), nTrackHits, NTolerated, Alpha, attempt, GPUCA_MAX_SIN_PHI, &track.OuterParam());
1094+
bool ok = t.Fit(merger, iTrk, merger->Clusters() + track.FirstClusterRef(), merger->Param().par.earlyTpcTransform ? merger->ClustersXYZ() + track.FirstClusterRef() : nullptr, nTrackHits, NTolerated, Alpha, attempt, GPUCA_MAX_SIN_PHI, &track.OuterParam());
10951095
CADEBUG(printf("Finished Fit Track %d\n", iTrk));
10961096
CADEBUG(printf("OUTPUT hits %d -> %d+%d = %d, QPt %f -> %f, SP %f, ok %d chi2 %f chi2ndf %f\n", nTrackHitsOld, nTrackHits, NTolerated, nTrackHits + NTolerated, ptOld, t.QPt(), t.SinPhi(), (int32_t)ok, t.Chi2(), t.Chi2() / CAMath::Max(1, nTrackHits)));
10971097

0 commit comments

Comments
 (0)