Skip to content

Commit 0a6c4aa

Browse files
davidrohrktf
authored andcommitted
GPU: Fix TPC Neighbors finder to work with MAX_NEIGHUO = MAXN setting
1 parent e8310ea commit 0a6c4aa

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

GPU/Common/GPUDefGPUParameters.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@
134134

135135
// Some assertions to make sure out parameters are not invalid
136136
#ifdef GPUCA_NOCOMPAT
137-
static_assert(GPUCA_MAXN > GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP);
137+
static_assert(GPUCA_MAXN >= GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP);
138+
static_assert(GPUCA_ROW_COUNT >= GPUCA_TRACKLET_SELECTOR_HITS_REG_SIZE);
138139
#endif
139140

140141
// Derived parameters

GPU/GPUTracking/SliceTracker/GPUTPCNeighboursFinder.cxx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,10 @@ GPUdii() void GPUTPCNeighboursFinder::Thread<0>(int /*nBlocks*/, int nThreads, i
127127
#if GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP > 0
128128
GPUsharedref() calink* neighUp = s.mB[iThread];
129129
GPUsharedref() float2* yzUp = s.mA[iThread];
130+
#if GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP < GPUCA_MAXN
130131
calink neighUp2[GPUCA_MAXN - GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP];
131132
float2 yzUp2[GPUCA_MAXN - GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP];
133+
#endif
132134
#else
133135
calink neighUp[GPUCA_MAXN];
134136
float2 yzUp[GPUCA_MAXN];
@@ -149,7 +151,7 @@ GPUdii() void GPUTPCNeighboursFinder::Thread<0>(int /*nBlocks*/, int nThreads, i
149151
break;
150152
}
151153

152-
#if GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP > 0
154+
#if GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP > 0 && GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP < GPUCA_MAXN
153155
if (nNeighUp >= GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP) {
154156
neighUp2[nNeighUp - GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP] = (calink)i;
155157
yzUp2[nNeighUp - GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP] = CAMath::MakeFloat2(s.mDnDx * (h.Y() - y), s.mDnDx * (h.Z() - z));
@@ -181,7 +183,7 @@ GPUdii() void GPUTPCNeighboursFinder::Thread<0>(int /*nBlocks*/, int nThreads, i
181183
float2 yzdn = CAMath::MakeFloat2(s.mUpDx * (h.Y() - y), s.mUpDx * (h.Z() - z));
182184

183185
for (int iUp = 0; iUp < nNeighUp; iUp++) {
184-
#if GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP > 0
186+
#if GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP > 0 && GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP < GPUCA_MAXN
185187
float2 yzup = iUp >= GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP ? yzUp2[iUp - GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP] : yzUp[iUp];
186188
#else
187189
float2 yzup = yzUp[iUp];
@@ -198,7 +200,7 @@ GPUdii() void GPUTPCNeighboursFinder::Thread<0>(int /*nBlocks*/, int nThreads, i
198200
} while (1);
199201

200202
if (bestD <= chi2Cut) {
201-
#if GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP > 0
203+
#if GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP > 0 && GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP < GPUCA_MAXN
202204
linkUp = bestUp >= GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP ? neighUp2[bestUp - GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP] : neighUp[bestUp];
203205
#else
204206
linkUp = neighUp[bestUp];

0 commit comments

Comments
 (0)