Project
Loading...
Searching...
No Matches
clusterFinderDefs.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
14
15#ifndef O2_GPU_CLUSTERFINDERDEFS_H
16#define O2_GPU_CLUSTERFINDERDEFS_H
17
18#include "GPUDef.h"
20
21/* #define CHARGEMAP_TIME_MAJOR_LAYOUT */
22#define CHARGEMAP_TILING_LAYOUT
23
24#define SCRATCH_PAD_SEARCH_N 8 // TODO: Change all this to constexpr where possible, like in GPUDefParametersConstants.h
25#define SCRATCH_PAD_COUNT_N 16
26#if defined(GPUCA_GPUCODE)
27#define SCRATCH_PAD_BUILD_N 8
28#define SCRATCH_PAD_NOISE_N 8
29#else
30// Double shared memory on cpu as we can't reuse the memory from other threads
31#define SCRATCH_PAD_BUILD_N 16
32#define SCRATCH_PAD_NOISE_N 16
33#endif
34
35// Padding of 2 and 3 respectively would be enough. But this ensures that
36// rows are always aligned along cache lines. Likewise for TPC_CLUSTERER_ROW_PAD_CAPACITY.
37#define GPUCF_PADDING_PAD 8
38#define GPUCF_PADDING_TIME 4
39// Largest possible number of pads in a TPC row
40#define TPC_CLUSTERER_ROW_PAD_CAPACITY 144
41
42// Stride between rows as stored internally by the clusterizer
43#define TPC_CLUSTERER_ROW_STRIDE (TPC_CLUSTERER_ROW_PAD_CAPACITY + GPUCF_PADDING_PAD)
44// Number of pads in a sector as stored internally by the clusterizer.
45// This includes fake pads for constant strides between rows
46#define TPC_CLUSTERER_STRIDED_PAD_COUNT (o2::tpc::constants::MAXGLOBALPADROW * TPC_CLUSTERER_ROW_STRIDE + GPUCF_PADDING_PAD)
47// Real of number of pads in a sector
48#define TPC_REAL_PADS_IN_SECTOR 14560
49#define TPC_FEC_IDS_IN_SECTOR 23296
50#define TPC_MAX_FRAGMENT_LEN_GPU 4000
51#define TPC_MAX_FRAGMENT_LEN_HOST 1000
52#define TPC_MAX_FRAGMENT_LEN_PADDED(size) ((size) + 2 * GPUCF_PADDING_TIME)
53
54#ifdef GPUCA_GPUCODE
55#define CPU_ONLY(x)
56#define CPU_PTR(x) nullptr
57#else
58#define CPU_ONLY(x) x
59#define CPU_PTR(x) x
60#endif
61
63{
64
65using SizeT = size_t;
66using TPCTime = int32_t;
67using TPCFragmentTime = int16_t;
68using Pad = uint8_t;
69using GlobalPad = int16_t;
70using Row = uint8_t;
71using Cru = uint8_t;
72
73using Charge = float;
74
75using Delta = int16_t;
76using Delta2 = short2;
77
79
80} // namespace o2::gpu::tpccf
81
82#endif