Skip to content

Commit a87ed76

Browse files
committed
GPU: Switch some preprocessor defines to constexpr
1 parent 260d7d5 commit a87ed76

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

GPU/GPUTracking/Definitions/GPUDefParametersWrapper.h

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,17 @@
2727
#endif
2828
#include "GPUDefParametersConstants.h"
2929

30-
#ifdef GPUCA_GPUCODE
31-
#define GPUCA_GET_THREAD_COUNT(...) GPUCA_M_FIRST(__VA_ARGS__)
30+
namespace o2::gpu
31+
{
32+
#if defined(GPUCA_GPUCODE)
33+
GPUhdi() static constexpr uint32_t GPUCA_GET_THREAD_COUNT(uint32_t val, ...) { return val; }
34+
GPUhdi() static constexpr uint32_t GPUCA_GET_WARP_COUNT(uint32_t val, ...) { return val / GPUCA_WARP_SIZE; }
3235
#else
33-
#define GPUCA_GET_THREAD_COUNT(...) 1 // On the host, a thread is a block, and we run 1 "device thread" per block.
36+
static constexpr uint32_t GPUCA_WARP_SIZE = 1; // On the host, a thread is a block is a warp, and we run 1 "device thread" per block.
37+
#define GPUCA_GET_THREAD_COUNT(...) 1 // This must be a define not a constexpr function
38+
#define GPUCA_GET_WARP_COUNT(...) 1 // since launch bound constants are not defined in host-code, and must evaluate to 1!
3439
#endif
3540

36-
#define GPUCA_GET_WARP_COUNT(...) (GPUCA_GET_THREAD_COUNT(__VA_ARGS__) / GPUCA_WARP_SIZE)
37-
3841
#define GPUCA_MERGER_INTERPOLATION_ERROR_TYPE_A GPUCA_DETERMINISTIC_CODE(float, GPUCA_MERGER_INTERPOLATION_ERROR_TYPE)
3942
#define GPUCA_DEDX_STORAGE_TYPE_A GPUCA_DETERMINISTIC_CODE(float, GPUCA_DEDX_STORAGE_TYPE)
4043

@@ -46,13 +49,15 @@
4649
#if defined(GPUCA_GPUCODE)
4750
static_assert(GPUCA_MAXN >= GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP, "Invalid GPUCA_NEIGHBOURS_FINDER_MAX_NNEIGHUP");
4851
static_assert(GPUCA_ROW_COUNT >= GPUCA_TRACKLET_SELECTOR_HITS_REG_SIZE, "Invalid GPUCA_TRACKLET_SELECTOR_HITS_REG_SIZE");
49-
static_assert(GPUCA_M_FIRST(GPUCA_LB_GPUTPCCompressionKernels_step1unattached) * 2 <= GPUCA_TPC_COMP_CHUNK_SIZE, "Invalid GPUCA_TPC_COMP_CHUNK_SIZE");
52+
static_assert(GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCompressionKernels_step1unattached) * 2 <= GPUCA_TPC_COMP_CHUNK_SIZE, "Invalid GPUCA_TPC_COMP_CHUNK_SIZE");
5053
#endif
5154

5255
// Derived parameters
5356
#ifdef GPUCA_USE_TEXTURES
5457
#define GPUCA_TEXTURE_FETCH_CONSTRUCTOR // Fetch data through texture cache
5558
#endif
5659

60+
} // namespace o2::gpu
61+
5762
// clang-format on
5863
#endif // GPUDEFPARAMETERSWRAPPER_H

0 commit comments

Comments
 (0)