Skip to content

Commit e59b7ff

Browse files
committed
GPUTracking: place the remaining cluster-finder constants in the constant address space
MSL requires every variable at program scope, class-scope statics included, to name an address space. GPUglobalconstexpr() expands to constexpr everywhere except Metal, so this is a no-op for host, CUDA, HIP, OpenCL and cling. These were missed by the earlier pass: the header they sit in only started being compiled once the errors ahead of it were gone.
1 parent aebfbbc commit e59b7ff

9 files changed

Lines changed: 15 additions & 15 deletions

File tree

‎GPU/GPUTracking/DataCompression/GPUTPCCompressionTrackModel.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ namespace o2::gpu
4040

4141
struct GPUParam;
4242

43-
constexpr float MaxSinPhi = 0.999f;
43+
GPUglobalconstexpr() float MaxSinPhi = 0.999f;
4444

4545
class GPUTPCCompressionTrackModel
4646
{

‎GPU/GPUTracking/Refit/GPUTrackingRefit.cxx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ using namespace o2::track;
3838
using namespace o2::base;
3939
using namespace o2::tpc;
4040

41-
static constexpr int32_t kIGNORE_ENDS = 3;
41+
static GPUglobalconstexpr() int32_t kIGNORE_ENDS = 3;
4242

4343
#define IgnoreErrors(SNP) \
4444
if (mIgnoreErrorsOnTrackEnds) { \

‎GPU/GPUTracking/TPCClusterFinder/GPUTPCCFClusterizer.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class MCLabelAccumulator;
3636
class GPUTPCCFClusterizer : public GPUKernelTemplate
3737
{
3838
public:
39-
static constexpr size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFClusterizer);
39+
static GPUglobalconstexpr() size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFClusterizer);
4040
struct GPUSharedMemory {
4141
CfChargePos posBcast[SCRATCH_PAD_WORK_GROUP_SIZE];
4242
PackedCharge buf[SCRATCH_PAD_WORK_GROUP_SIZE * SCRATCH_PAD_BUILD_N];

‎GPU/GPUTracking/TPCClusterFinder/GPUTPCCFDecodeZS.h‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,9 @@ class GPUTPCCFDecodeZSLink : public GPUTPCCFDecodeZSLinkBase
132132
{
133133
public:
134134
// constants for decoding
135-
static inline constexpr int32_t DECODE_BITS = tpc::TPCZSHDRV2::TPC_ZS_NBITS_V34;
136-
static inline constexpr float DECODE_BITS_FACTOR = 1.f / (1 << (DECODE_BITS - 10));
137-
static inline constexpr uint32_t DECODE_MASK = (1 << DECODE_BITS) - 1;
135+
static inline GPUglobalconstexpr() int32_t DECODE_BITS = tpc::TPCZSHDRV2::TPC_ZS_NBITS_V34;
136+
static inline GPUglobalconstexpr() float DECODE_BITS_FACTOR = 1.f / (1 << (DECODE_BITS - 10));
137+
static inline GPUglobalconstexpr() uint32_t DECODE_MASK = (1 << DECODE_BITS) - 1;
138138

139139
struct GPUSharedMemory : GPUKernelTemplate::GPUSharedMemoryWarpScan64<uint8_t, GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFDecodeZSLink)> {
140140
// GPUCA_SHARED_STORAGE(uint32_t ZSPage[o2::tpc::TPCZSHDR::TPC_ZS_PAGE_SIZE / sizeof(uint32_t)]);
@@ -155,11 +155,11 @@ class GPUTPCCFDecodeZSDenseLink : public GPUTPCCFDecodeZSLinkBase
155155
{
156156
public:
157157
// constants for decoding
158-
static inline constexpr int32_t DECODE_BITS = o2::tpc::TPCZSHDRV2::TPC_ZS_NBITS_V34;
159-
static inline constexpr float DECODE_BITS_FACTOR = 1.f / (1 << (DECODE_BITS - 10));
160-
static inline constexpr uint32_t DECODE_MASK = (1 << DECODE_BITS) - 1;
158+
static inline GPUglobalconstexpr() int32_t DECODE_BITS = o2::tpc::TPCZSHDRV2::TPC_ZS_NBITS_V34;
159+
static inline GPUglobalconstexpr() float DECODE_BITS_FACTOR = 1.f / (1 << (DECODE_BITS - 10));
160+
static inline GPUglobalconstexpr() uint32_t DECODE_MASK = (1 << DECODE_BITS) - 1;
161161

162-
static inline constexpr int32_t MaxNLinksPerTimebin = 16;
162+
static inline GPUglobalconstexpr() int32_t MaxNLinksPerTimebin = 16;
163163

164164
struct GPUSharedMemory : GPUKernelTemplate::GPUSharedMemoryWarpScan64<uint8_t, GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFDecodeZSDenseLink)> {
165165
// GPUCA_SHARED_STORAGE(uint32_t ZSPage[o2::tpc::TPCZSHDR::TPC_ZS_PAGE_SIZE / sizeof(uint32_t)]);

‎GPU/GPUTracking/TPCClusterFinder/GPUTPCCFDeconvolution.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace o2::gpu
2929
class GPUTPCCFDeconvolution : public GPUKernelTemplate
3030
{
3131
public:
32-
static constexpr size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFDeconvolution);
32+
static GPUglobalconstexpr() size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFDeconvolution);
3333
struct GPUSharedMemory : public GPUKernelTemplate::GPUSharedMemoryScan64<int16_t, SCRATCH_PAD_WORK_GROUP_SIZE> {
3434
CfChargePos posBcast1[SCRATCH_PAD_WORK_GROUP_SIZE];
3535
uint8_t aboveThresholdBcast[SCRATCH_PAD_WORK_GROUP_SIZE];

‎GPU/GPUTracking/TPCClusterFinder/GPUTPCCFNoiseSuppression.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class GPUTPCCFNoiseSuppression : public GPUKernelTemplate
3434
noiseSuppression = 0,
3535
updatePeaks = 1,
3636
};
37-
static constexpr size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFNoiseSuppression_noiseSuppression);
37+
static GPUglobalconstexpr() size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFNoiseSuppression_noiseSuppression);
3838
static_assert(GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFNoiseSuppression_noiseSuppression) == GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFNoiseSuppression_updatePeaks));
3939

4040
struct GPUSharedMemory {

‎GPU/GPUTracking/TPCClusterFinder/GPUTPCCFPeakFinder.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ struct CfChargePos;
3030
class GPUTPCCFPeakFinder : public GPUKernelTemplate
3131
{
3232
public:
33-
static constexpr size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFPeakFinder);
33+
static GPUglobalconstexpr() size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFPeakFinder);
3434
struct GPUSharedMemory : public GPUKernelTemplate::GPUSharedMemoryScan64<int16_t, SCRATCH_PAD_WORK_GROUP_SIZE> {
3535
CfChargePos posBcast[SCRATCH_PAD_WORK_GROUP_SIZE];
3636
PackedCharge buf[SCRATCH_PAD_WORK_GROUP_SIZE * SCRATCH_PAD_SEARCH_N];

‎GPU/GPUTracking/TPCClusterFinder/GPUTPCNNClusterizerKernels.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class GPUTPCNNClusterizerKernels : public GPUKernelTemplate
3737
{
3838
public:
3939
// Must all have same number of threads, since they use a common SCRATCH_PAD_WORK_GROUP_SIZE below
40-
static constexpr size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFClusterizer);
40+
static GPUglobalconstexpr() size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFClusterizer);
4141
using GPUSharedMemory = GPUTPCCFClusterizer::GPUSharedMemory;
4242

4343
GPUhdi() constexpr static gpudatatypes::RecoStep GetRecoStep()

‎GPU/GPUTracking/TRDTracking/GPUTRDGeometry.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class GPUTRDGeometry : private o2::trd::GeometryFlat
7474
GPUd() int32_t GetRowMax(int32_t layer, int32_t stack, int32_t sector) const { return getRowMax(layer, stack, sector); }
7575
GPUd() bool ChamberInGeometry(int32_t det) const { return chamberInGeometry(det); }
7676

77-
static constexpr int32_t kNstack = o2::trd::constants::NSTACK;
77+
static GPUglobalconstexpr() int32_t kNstack = o2::trd::constants::NSTACK;
7878
};
7979
} // namespace o2::gpu
8080

0 commit comments

Comments
 (0)