Skip to content

Commit fc52b5d

Browse files
committed
GPU TPC: Change some code in sector tracking from prepreccor #if to if constexpr, to avoid preprocessing the RTC code
1 parent b856a63 commit fc52b5d

File tree

5 files changed

+127
-128
lines changed

5 files changed

+127
-128
lines changed

GPU/GPUTracking/SectorTracker/GPUTPCNeighboursFinder.cxx

Lines changed: 73 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,10 @@ GPUdii() void GPUTPCNeighboursFinder::Thread<0>(int32_t /*nBlocks*/, int32_t nTh
7575
return;
7676
}
7777

78-
#define UnrollGlobal 4
79-
#define MaxShared GPUCA_PAR_NEIGHBOURS_FINDER_MAX_NNEIGHUP
80-
#if MaxShared < GPUCA_MAXN
81-
#define MaxGlobal ((GPUCA_MAXN - MaxShared - 1) / UnrollGlobal + 1) * UnrollGlobal
82-
#else
83-
#define MaxGlobal 0
84-
#endif
85-
#define MaxTotal MaxShared + MaxGlobal
78+
static constexpr uint32_t UNROLL_GLOBAL = 4;
79+
static constexpr uint32_t MAX_SHARED = GPUCA_PAR_NEIGHBOURS_FINDER_MAX_NNEIGHUP;
80+
static constexpr uint32_t MAX_GLOBAL = (MAX_SHARED < GPUCA_MAXN) ? (((GPUCA_MAXN - MAX_SHARED - 1) / UNROLL_GLOBAL + 1) * UNROLL_GLOBAL) : 0;
81+
static constexpr uint32_t MAX_TOTAL = MAX_SHARED + MAX_GLOBAL;
8682

8783
const float chi2Cut = 3.f * 3.f * 4 * (s.mUpDx * s.mUpDx + s.mDnDx * s.mDnDx);
8884
// float chi2Cut = 3.f*3.f*(s.mUpDx*s.mUpDx + s.mDnDx*s.mDnDx ); //SG
@@ -117,18 +113,16 @@ GPUdii() void GPUTPCNeighboursFinder::Thread<0>(int32_t /*nBlocks*/, int32_t nTh
117113
const float kAreaSlopeZUp = kAngularMultiplier != 0.f ? 1.f : s.mUpTx;
118114
const float kAreaSlopeZDn = kAngularMultiplier != 0.f ? 1.f : s.mDnTx;
119115

120-
#if MaxGlobal > 0
121-
calink neighUp[MaxGlobal];
122-
float yzUp[2 * MaxGlobal];
123-
#endif
116+
calink neighUp[MAX_GLOBAL];
117+
float yzUp[2 * MAX_GLOBAL];
124118

125119
for (int32_t ih = iThread; ih < s.mNHits; ih += nThreads) {
126120

127121
const GPUglobalref() cahit2& hitData = pHitData[lHitNumberOffset + ih];
128122
const float y = y0 + hitData.x * stepY;
129123
const float z = z0 + hitData.y * stepZ;
130124

131-
int32_t nNeighUp = 0;
125+
uint32_t nNeighUp = 0;
132126
float minZ, maxZ, minY, maxY;
133127
int32_t binYmin, binYmax, binZmin, binZmax;
134128
int32_t nY;
@@ -145,11 +139,11 @@ GPUdii() void GPUTPCNeighboursFinder::Thread<0>(int32_t /*nBlocks*/, int32_t nTh
145139
nY = rowUp.Grid().Ny();
146140
}
147141

148-
for (int32_t k1 = binZmin; k1 <= binZmax && (nNeighUp < MaxTotal); k1++) {
142+
for (int32_t k1 = binZmin; k1 <= binZmax && (nNeighUp < MAX_TOTAL); k1++) {
149143
int32_t iMin = lFirstHitInBin[lFirstHitInBinOffsetUp + k1 * nY + binYmin];
150144
int32_t iMax = lFirstHitInBin[lFirstHitInBinOffsetUp + k1 * nY + binYmax + 1];
151145
GPUCA_UNROLL(U(4), U(2))
152-
for (int32_t i = iMin; i < iMax && (nNeighUp < MaxTotal); i++) {
146+
for (int32_t i = iMin; i < iMax && (nNeighUp < MAX_TOTAL); i++) {
153147
const GPUglobalref() cahit2& hitDataUp = pHitData[lHitNumberOffsetUp + i];
154148
GPUTPCHit h;
155149
h.mY = y0Up + (hitDataUp.x) * stepYUp;
@@ -159,51 +153,48 @@ GPUdii() void GPUTPCNeighboursFinder::Thread<0>(int32_t /*nBlocks*/, int32_t nTh
159153
continue;
160154
}
161155

162-
#if MaxGlobal > 0
163-
#if MaxShared == 0
164-
if (true) {
165-
#else
166-
if (nNeighUp >= MaxShared) {
167-
#endif
168-
neighUp[nNeighUp - MaxShared] = (calink)i;
169-
yzUp[2 * (nNeighUp - MaxShared)] = s.mDnDx * (h.Y() - y);
170-
yzUp[2 * (nNeighUp - MaxShared) + 1] = s.mDnDx * (h.Z() - z);
171-
} else
172-
#endif
173-
{
174-
#if MaxShared > 0
175-
s.mB[nNeighUp][iThread] = (calink)i;
176-
s.mA1[nNeighUp][iThread] = s.mDnDx * (h.Y() - y);
177-
s.mA2[nNeighUp][iThread] = s.mDnDx * (h.Z() - z);
178-
#endif
156+
const bool inGlobal = nNeighUp >= MAX_SHARED;
157+
if constexpr (MAX_GLOBAL > 0) {
158+
if (inGlobal) {
159+
neighUp[nNeighUp - MAX_SHARED] = (calink)i;
160+
yzUp[2 * (nNeighUp - MAX_SHARED)] = s.mDnDx * (h.Y() - y);
161+
yzUp[2 * (nNeighUp - MAX_SHARED) + 1] = s.mDnDx * (h.Z() - z);
162+
}
163+
}
164+
if constexpr (MAX_SHARED > 0) {
165+
if (!inGlobal) {
166+
s.mB[nNeighUp][iThread] = (calink)i;
167+
s.mA1[nNeighUp][iThread] = s.mDnDx * (h.Y() - y);
168+
s.mA2[nNeighUp][iThread] = s.mDnDx * (h.Z() - z);
169+
}
179170
}
180171
nNeighUp++;
181172
}
182173
}
183174

184-
#if MaxShared > 0 // init a rest of the shared array
185-
for (int32_t iUp = nNeighUp; iUp < MaxShared; iUp++) {
186-
s.mA1[iUp][iThread] = -1.e10f;
187-
s.mA2[iUp][iThread] = -1.e10f;
188-
s.mB[iUp][iThread] = (calink)-1;
175+
if constexpr (MAX_SHARED > 0) { // init the rest of the shared array
176+
for (uint32_t iUp = nNeighUp; iUp < MAX_SHARED; iUp++) {
177+
s.mA1[iUp][iThread] = -1.e10f;
178+
s.mA2[iUp][iThread] = -1.e10f;
179+
s.mB[iUp][iThread] = (calink)-1;
180+
}
189181
}
190-
#endif
191182

192-
#if MaxGlobal > 0 // init a rest of the UnrollGlobal chunk of the global array
193-
int32_t Nrest = nNeighUp - MaxShared;
194-
int32_t N4 = (Nrest / UnrollGlobal) * UnrollGlobal;
195-
if (N4 < Nrest) {
196-
N4 += UnrollGlobal;
197-
GPUCA_UNROLL(U(UnrollGlobal - 1), U(UnrollGlobal - 1))
198-
for (int32_t k = 0; k < UnrollGlobal - 1; k++) {
199-
if (Nrest + k < N4) {
200-
yzUp[2 * (Nrest + k)] = -1.e10f;
201-
yzUp[2 * (Nrest + k) + 1] = -1.e10f;
202-
neighUp[Nrest + k] = (calink)-1;
183+
const uint32_t Nrest = nNeighUp - MAX_SHARED;
184+
uint32_t N4 = (Nrest / UNROLL_GLOBAL) * UNROLL_GLOBAL;
185+
if constexpr (MAX_GLOBAL > 0) { // init the rest of the UNROLL_GLOBAL chunk of the global array
186+
if (nNeighUp > MAX_SHARED && N4 < Nrest) {
187+
N4 += UNROLL_GLOBAL;
188+
GPUCA_UNROLL(U(UNROLL_GLOBAL - 1), U(UNROLL_GLOBAL - 1))
189+
for (uint32_t k = 0; k + 1 < UNROLL_GLOBAL; k++) {
190+
if (Nrest + k < N4) {
191+
yzUp[2 * (Nrest + k)] = -1.e10f;
192+
yzUp[2 * (Nrest + k) + 1] = -1.e10f;
193+
neighUp[Nrest + k] = (calink)-1;
194+
}
203195
}
204196
}
205197
}
206-
#endif
207198

208199
{ // area in the lower row
209200
const float yy = y * s.mDnTx;
@@ -236,47 +227,49 @@ GPUdii() void GPUTPCNeighboursFinder::Thread<0>(int32_t /*nBlocks*/, int32_t nTh
236227
float yDnProjUp = s.mUpDx * (yDn - y);
237228
float zDnProjUp = s.mUpDx * (zDn - z);
238229

239-
#if MaxShared > 0
240-
GPUCA_UNROLL(U(MaxShared), U(MaxShared))
241-
for (int32_t iUp = 0; iUp < MaxShared; iUp++) {
242-
const float dy = yDnProjUp - s.mA1[iUp][iThread];
243-
const float dz = zDnProjUp - s.mA2[iUp][iThread];
244-
const float d = dy * dy + dz * dz;
245-
if (d < bestD) {
246-
bestD = d;
247-
linkDn = i;
248-
linkUp = iUp;
249-
}
250-
}
251-
#endif
252-
253-
#if MaxGlobal > 0
254-
for (int32_t iUp = 0; iUp < N4; iUp += UnrollGlobal) {
255-
GPUCA_UNROLL(U(UnrollGlobal), U(UnrollGlobal))
256-
for (int32_t k = 0; k < UnrollGlobal; k++) {
257-
int32_t jUp = iUp + k;
258-
const float dy = yDnProjUp - yzUp[2 * jUp];
259-
const float dz = zDnProjUp - yzUp[2 * jUp + 1];
230+
if constexpr (MAX_SHARED > 0) {
231+
GPUCA_UNROLL(U(MAX_SHARED), U(MAX_SHARED))
232+
for (uint32_t iUp = 0; iUp < MAX_SHARED; iUp++) {
233+
const float dy = yDnProjUp - s.mA1[iUp][iThread];
234+
const float dz = zDnProjUp - s.mA2[iUp][iThread];
260235
const float d = dy * dy + dz * dz;
261236
if (d < bestD) {
262237
bestD = d;
263238
linkDn = i;
264-
linkUp = MaxShared + jUp;
239+
linkUp = iUp;
240+
}
241+
}
242+
}
243+
244+
if constexpr (MAX_GLOBAL > 0) {
245+
if (nNeighUp > MAX_SHARED) {
246+
for (uint32_t iUp = 0; iUp < N4; iUp += UNROLL_GLOBAL) {
247+
GPUCA_UNROLL(U(UNROLL_GLOBAL), U(UNROLL_GLOBAL))
248+
for (uint32_t k = 0; k < UNROLL_GLOBAL; k++) {
249+
const uint32_t jUp = iUp + k;
250+
const float dy = yDnProjUp - yzUp[2 * jUp];
251+
const float dz = zDnProjUp - yzUp[2 * jUp + 1];
252+
const float d = dy * dy + dz * dz;
253+
if (d < bestD) {
254+
bestD = d;
255+
linkDn = i;
256+
linkUp = MAX_SHARED + jUp;
257+
}
258+
}
265259
}
266260
}
267261
}
268-
#endif
269262
}
270263
}
271264

272265
if (linkUp >= 0) {
273-
#if MaxShared > 0 && MaxGlobal > 0
274-
linkUp = (linkUp >= MaxShared) ? neighUp[linkUp - MaxShared] : s.mB[linkUp][iThread];
275-
#elif MaxShared > 0
276-
linkUp = s.mB[linkUp][iThread];
277-
#else
278-
linkUp = neighUp[linkUp];
279-
#endif
266+
if constexpr (MAX_SHARED > 0 && MAX_GLOBAL > 0) {
267+
linkUp = ((uint32_t)linkUp >= MAX_SHARED) ? neighUp[linkUp - MAX_SHARED] : s.mB[linkUp][iThread];
268+
} else if constexpr (MAX_SHARED > 0) {
269+
linkUp = s.mB[linkUp][iThread];
270+
} else {
271+
linkUp = neighUp[linkUp];
272+
}
280273
}
281274

282275
tracker.mData.mLinkUpData[lHitNumberOffset + ih] = linkUp;

GPU/GPUTracking/SectorTracker/GPUTPCNeighboursFinder.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,10 @@ class GPUTPCNeighboursFinder : public GPUKernelTemplate
4040
int32_t mIRow; // row number
4141
int32_t mIRowUp; // next row number
4242
int32_t mIRowDn; // previous row number
43-
#if GPUCA_PAR_NEIGHBOURS_FINDER_MAX_NNEIGHUP > 0
4443
static_assert(GPUCA_MAXN >= GPUCA_PAR_NEIGHBOURS_FINDER_MAX_NNEIGHUP);
4544
float mA1[GPUCA_PAR_NEIGHBOURS_FINDER_MAX_NNEIGHUP][GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCNeighboursFinder)];
4645
float mA2[GPUCA_PAR_NEIGHBOURS_FINDER_MAX_NNEIGHUP][GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCNeighboursFinder)];
4746
calink mB[GPUCA_PAR_NEIGHBOURS_FINDER_MAX_NNEIGHUP][GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCNeighboursFinder)];
48-
#endif
4947
GPUTPCRow mRow, mRowUp, mRowDown;
5048
};
5149

GPU/GPUTracking/SectorTracker/GPUTPCStartHitsFinder.cxx

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -39,36 +39,38 @@ GPUdii() void GPUTPCStartHitsFinder::Thread<0>(int32_t /*nBlocks*/, int32_t nThr
3939
uint32_t linkUpData = tracker.mData.mLinkUpData[lHitNumberOffset + ih];
4040

4141
if (tracker.mData.mLinkDownData[lHitNumberOffset + ih] == CALINK_INVAL && linkUpData != CALINK_INVAL && tracker.mData.mLinkUpData[rowUp.mHitNumberOffset + linkUpData] != CALINK_INVAL) {
42-
#if GPUCA_PAR_SORT_STARTHITS > 0
43-
GPUglobalref() GPUTPCHitId* const GPUrestrict() startHits = tracker.mTrackletTmpStartHits + s.mIRow * tracker.mNMaxRowStartHits;
44-
uint32_t nextRowStartHits = CAMath::AtomicAddShared(&s.mNRowStartHits, 1u);
45-
if (nextRowStartHits >= tracker.mNMaxRowStartHits) {
46-
tracker.raiseError(GPUErrors::ERROR_ROWSTARTHIT_OVERFLOW, tracker.ISector() * 1000 + s.mIRow, nextRowStartHits, tracker.mNMaxRowStartHits);
47-
CAMath::AtomicExchShared(&s.mNRowStartHits, tracker.mNMaxRowStartHits);
48-
break;
42+
GPUglobalref() GPUTPCHitId* GPUrestrict() startHits;
43+
uint32_t nextRowStartHits;
44+
if constexpr (GPUCA_PAR_SORT_STARTHITS > 0) {
45+
startHits = tracker.mTrackletTmpStartHits + s.mIRow * tracker.mNMaxRowStartHits;
46+
nextRowStartHits = CAMath::AtomicAddShared(&s.mNRowStartHits, 1u);
47+
if (nextRowStartHits >= tracker.mNMaxRowStartHits) {
48+
tracker.raiseError(GPUErrors::ERROR_ROWSTARTHIT_OVERFLOW, tracker.ISector() * 1000 + s.mIRow, nextRowStartHits, tracker.mNMaxRowStartHits);
49+
CAMath::AtomicExchShared(&s.mNRowStartHits, tracker.mNMaxRowStartHits);
50+
break;
51+
}
52+
} else {
53+
startHits = tracker.mTrackletStartHits;
54+
nextRowStartHits = CAMath::AtomicAdd(&tracker.mCommonMem->nStartHits, 1u);
55+
if (nextRowStartHits >= tracker.mNMaxStartHits) {
56+
tracker.raiseError(GPUErrors::ERROR_STARTHIT_OVERFLOW, tracker.ISector() * 1000 + s.mIRow, nextRowStartHits, tracker.mNMaxStartHits);
57+
CAMath::AtomicExch(&tracker.mCommonMem->nStartHits, tracker.mNMaxStartHits);
58+
break;
59+
}
4960
}
50-
#else
51-
GPUglobalref() GPUTPCHitId* const GPUrestrict() startHits = tracker.mTrackletStartHits;
52-
uint32_t nextRowStartHits = CAMath::AtomicAdd(&tracker.mCommonMem->nStartHits, 1u);
53-
if (nextRowStartHits >= tracker.mNMaxStartHits) {
54-
tracker.raiseError(GPUErrors::ERROR_STARTHIT_OVERFLOW, tracker.ISector() * 1000 + s.mIRow, nextRowStartHits, tracker.mNMaxStartHits);
55-
CAMath::AtomicExch(&tracker.mCommonMem->nStartHits, tracker.mNMaxStartHits);
56-
break;
57-
}
58-
#endif
5961
startHits[nextRowStartHits].Set(s.mIRow, ih);
6062
}
6163
}
6264
GPUbarrier();
6365

64-
#if GPUCA_PAR_SORT_STARTHITS > 0
65-
if (iThread == 0) {
66-
uint32_t nOffset = CAMath::AtomicAdd(&tracker.mCommonMem->nStartHits, s.mNRowStartHits);
67-
tracker.mRowStartHitCountOffset[s.mIRow] = s.mNRowStartHits;
68-
if (nOffset + s.mNRowStartHits > tracker.mNMaxStartHits) {
69-
tracker.raiseError(GPUErrors::ERROR_STARTHIT_OVERFLOW, tracker.ISector() * 1000 + s.mIRow, nOffset + s.mNRowStartHits, tracker.mNMaxStartHits);
70-
CAMath::AtomicExch(&tracker.mCommonMem->nStartHits, tracker.mNMaxStartHits);
66+
if constexpr (GPUCA_PAR_SORT_STARTHITS > 0) {
67+
if (iThread == 0) {
68+
uint32_t nOffset = CAMath::AtomicAdd(&tracker.mCommonMem->nStartHits, s.mNRowStartHits);
69+
tracker.mRowStartHitCountOffset[s.mIRow] = s.mNRowStartHits;
70+
if (nOffset + s.mNRowStartHits > tracker.mNMaxStartHits) {
71+
tracker.raiseError(GPUErrors::ERROR_STARTHIT_OVERFLOW, tracker.ISector() * 1000 + s.mIRow, nOffset + s.mNRowStartHits, tracker.mNMaxStartHits);
72+
CAMath::AtomicExch(&tracker.mCommonMem->nStartHits, tracker.mNMaxStartHits);
73+
}
7174
}
7275
}
73-
#endif
7476
}

GPU/GPUTracking/SectorTracker/GPUTPCTrackletSelector.cxx

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ GPUdii() void GPUTPCTrackletSelector::Thread<0>(int32_t nBlocks, int32_t nThread
4848

4949
int32_t irow = firstRow;
5050

51-
int32_t gap = 0;
52-
int32_t nShared = 0;
53-
int32_t nHits = 0;
54-
const int32_t minHits = tracker.Param().rec.tpc.minNClustersTrackSeed == -1 ? GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5(tracklet.Param().QPt() * tracker.Param().qptB5Scaler) : tracker.Param().rec.tpc.minNClustersTrackSeed;
55-
const int32_t sharingMinNorm = minHits * tracker.Param().rec.tpc.trackletMinSharedNormFactor;
51+
uint32_t gap = 0;
52+
uint32_t nShared = 0;
53+
uint32_t nHits = 0;
54+
const uint32_t minHits = tracker.Param().rec.tpc.minNClustersTrackSeed == -1 ? GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5(tracklet.Param().QPt() * tracker.Param().qptB5Scaler) : tracker.Param().rec.tpc.minNClustersTrackSeed;
55+
const uint32_t sharingMinNorm = minHits * tracker.Param().rec.tpc.trackletMinSharedNormFactor;
5656
float maxShared = maxSharedFrac * sharingMinNorm;
5757

5858
GPUCA_UNROLL(, U(1))
@@ -63,16 +63,20 @@ GPUdii() void GPUTPCTrackletSelector::Thread<0>(int32_t nBlocks, int32_t nThread
6363
}
6464
if (ih != CALINK_INVAL && ih != CALINK_DEAD_CHANNEL) {
6565
GPUglobalref() const GPUTPCRow& row = tracker.Row(irow);
66-
bool own = (tracker.HitWeight(row, ih) <= w);
67-
bool sharedOK = nShared <= (nHits < sharingMinNorm ? maxShared : nHits * maxSharedFrac);
66+
const bool own = (tracker.HitWeight(row, ih) <= w);
67+
const bool sharedOK = nShared <= (nHits < sharingMinNorm ? maxShared : nHits * maxSharedFrac);
6868
if (own || sharedOK) { // SG!!!
6969
gap = 0;
70-
#if GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE != 0
71-
if (nHits < GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE) {
72-
s.mHits[nHits][iThread].Set(irow, ih);
73-
} else
74-
#endif // GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE != 0
75-
{
70+
#pragma GCC diagnostic push
71+
#pragma GCC diagnostic ignored "-Wtype-limits"
72+
const bool inShared = nHits < (uint32_t)GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE;
73+
#pragma GCC diagnostic pop
74+
if constexpr (GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE > 0) {
75+
if (inShared) {
76+
s.mHits[nHits][iThread].Set(irow, ih);
77+
}
78+
}
79+
if (!inShared) {
7680
trackHits[nHits - GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE].Set(irow, ih);
7781
}
7882
nHits++;
@@ -100,13 +104,17 @@ GPUdii() void GPUTPCTrackletSelector::Thread<0>(int32_t nBlocks, int32_t nThread
100104
tracker.Tracks()[itrout].SetParam(tracklet.Param());
101105
tracker.Tracks()[itrout].SetFirstHitID(nFirstTrackHit);
102106
tracker.Tracks()[itrout].SetNHits(nHits);
103-
for (int32_t jh = 0; jh < nHits; jh++) {
104-
#if GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE != 0
105-
if (jh < GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE) {
106-
tracker.TrackHits()[nFirstTrackHit + jh] = s.mHits[jh][iThread];
107-
} else
108-
#endif // GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE != 0
109-
{
107+
for (uint32_t jh = 0; jh < nHits; jh++) {
108+
#pragma GCC diagnostic push
109+
#pragma GCC diagnostic ignored "-Wtype-limits"
110+
const bool inShared = jh < (uint32_t)GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE;
111+
#pragma GCC diagnostic pop
112+
if constexpr (GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE > 0) {
113+
if (inShared) {
114+
tracker.TrackHits()[nFirstTrackHit + jh] = s.mHits[jh][iThread];
115+
}
116+
}
117+
if (!inShared) {
110118
tracker.TrackHits()[nFirstTrackHit + jh] = trackHits[jh - GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE];
111119
}
112120
}

GPU/GPUTracking/SectorTracker/GPUTPCTrackletSelector.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,8 @@ class GPUTPCTrackletSelector : public GPUKernelTemplate
3636
int32_t mNThreadsTotal; // total n threads
3737
int32_t mNTracklets; // n of tracklets
3838
int32_t mReserved; // for alignment reasons
39-
#if GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE != 0
4039
static_assert(GPUCA_ROW_COUNT >= GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE);
4140
GPUTPCHitId mHits[GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE][GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCTrackletSelector)];
42-
#endif // GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE != 0
4341
};
4442

4543
typedef GPUconstantref() GPUTPCTracker processorType;

0 commit comments

Comments
 (0)