18#ifndef ITSTRACKINGGPU_LAUNCHGEOMETRY_H_
19#define ITSTRACKINGGPU_LAUNCHGEOMETRY_H_
24#if defined(GPUCA_GPUTYPE_VEGA)
27#elif defined(GPUCA_GPUTYPE_MI100)
30#elif defined(GPUCA_GPUTYPE_MI210)
33#elif defined(GPUCA_GPUTYPE_MI300)
36#elif defined(GPUCA_GPUTYPE_RDNA)
39#elif defined(GPUCA_GPUTYPE_BLACKWELL)
42#elif defined(GPUCA_GPUTYPE_HOPPER)
45#elif defined(GPUCA_GPUTYPE_ADA)
48#elif defined(GPUCA_GPUTYPE_AMPERE)
51#elif defined(GPUCA_GPUTYPE_TURING)
76 constexpr int min()
const
82 const int ab{
a <
b ?
a :
b};
83 const int cd{
c <
d ?
c :
d};
84 return ab < cd ? ab : cd;
88 constexpr int max()
const
94 const int ab{
a >
b ?
a :
b};
95 const int cd{
c >
d ?
c :
d};
96 return ab > cd ? ab : cd;
104 .computeLayerCells = minBlocks,
105 .computeLayerCellNeighbours = minBlocks,
106 .processNeighboursCellSeed = minBlocks,
107 .processNeighboursTrackSeed = minBlocks,
108 .fitTrackSeeds = minBlocks,
109 .fitTrackSeedsExtended = minBlocks,
110 .compileLookupTable = minBlocks};
113#if defined(GPUCA_GPUTYPE_VEGA)
118 .computeLayerCells = 3,
119 .computeLayerCellNeighbours = 3,
120 .processNeighboursCellSeed = 3,
121 .processNeighboursTrackSeed = 3,
123 .fitTrackSeedsExtended = 3,
124 .compileLookupTable = 1,
130 .computeLayerCells = 3,
131 .computeLayerCellNeighbours = 3,
132 .processNeighboursCellSeed = 3,
133 .processNeighboursTrackSeed = 3,
135 .fitTrackSeedsExtended = 3,
136 .compileLookupTable = 4,
139#elif defined(__HIPCC__) || defined(__HIP_PLATFORM_AMD__)
162 "an occupancy floor below one resident block is meaningless");
165 "the occupancy floor cannot exceed the blocks a CU can hold");
168 "every kernel must have at least one resident block per CU");
171 "resident blocks per CU cannot exceed what a CU can hold");
186static_assert(
residentCoversFloor(),
"a kernel's grid is narrower than the occupancy its __launch_bounds__ floor demands");
188static_assert(
GPUThreads %
WarpSize == 0,
"block size must be a whole number of warps/waves");
Timeframe settings Average distance in cm of events merged into Randomize distance around average distance of merged events Simulate correct bunch interactions instead of placing only the average number of events A value[n] sets TFlen for[n] collisions in Number of bunches per trainsort Number of bunch trains Instantaneous interaction rate Do not simulate border Total number of collisions to be placed in the interior of all time Do not select random but walk over array of events in stride steps h Event generator settings h configStandalone Use CPU for GPU Force usage of the specified GPU device no CPU fallback Continue processing after an error First event to Number of events to Number of iterations to Number of iterations to Number of initial iterations excluded from const char Directory with events to Events directory is and not inside events d
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
constexpr int MaxBlocksPerComputeUnit
constexpr KernelOccupancy MinBlocks
NVIDIA: unmeasured.
constexpr KernelOccupancy uniformOccupancy(int minBlocks)
Use the same occupancy floor for every kernel when no per-kernel measurements are available.
constexpr bool residentCoversFloor()
The grid must provide at least as many blocks per CU as the corresponding occupancy floor.
constexpr KernelOccupancy ResidentBlocks
constexpr int DefaultBlocksPerComputeUnit
constexpr int gridThreads(int residentBlocksPerComputeUnit)
Number of threads covered by a grid whose depth is residentBlocksPerComputeUnit blocks per CU.
constexpr int gridBlocks(int residentBlocksPerComputeUnit)
Number of blocks in a grid whose depth is residentBlocksPerComputeUnit blocks per CU.
constexpr int ComputeUnits
Minimum resident blocks per compute unit to request when no per-kernel measurement exists.
int processNeighboursTrackSeed
int processNeighboursCellSeed
int computeLayerCellNeighbours
int computeLayerTracklets
constexpr int max() const
Return the largest occupancy value in the table.
constexpr int min() const
Return the smallest occupancy value in the table.
int fitTrackSeedsExtended