Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
device_context.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGINDETCUDA_DEVCONTEXTS_H
6 #define TRIGINDETCUDA_DEVCONTEXTS_H
7 
9 
11 
12 #include <cuda_runtime.h>
13 #include <tbb/tick_count.h>
14 
15 #include "CommonStructures.h"
16 
17 
19 public:
21  size_t hostSize() { return h_size;}
22  size_t deviceSize() { return d_size;}
23 
24  int m_deviceId{};
25  cudaStream_t m_stream{};
26  unsigned char *h_settings{};
27  unsigned char *d_settings{};
28  unsigned char *h_spacepoints{};
29  unsigned char *d_spacepoints{};
30 
31  unsigned char *d_detmodel{};
32 
33  unsigned char *h_outputseeds{};
34  unsigned char *d_outputseeds{};
35 
36  unsigned char *d_doubletstorage{};
37  unsigned char *d_doubletinfo{};
38 
39  size_t d_size{}, h_size{};
41 
42 private:
44 };
45 
47 public:
49  size_t hostSize() { return h_size;}
50  size_t deviceSize() { return d_size;}
51  size_t managedSize() { return m_size;}
52 
53  int m_deviceId{};
54  cudaStream_t m_stream{};
55 
56 
57  unsigned char *m_settings{};
58 
59 
60  unsigned char *m_spacepoints{};
61 
62  unsigned char *d_detmodel{};
63 
64 
65 
66 
67  unsigned char *m_outputseeds{};
68  unsigned char *m_confirmedseeds{};
69 
70  unsigned char *d_doubletstorage{};
71  unsigned char *d_doubletinfo{};
72 
73  size_t d_size{}, h_size{}, m_size{};
75 
76 private:
78 };
79 
81 public:
82  GbtsDeviceContext() = default;
83  size_t hostSize() { return h_size;}
84  size_t deviceSize() { return d_size;}
85 
86  int m_deviceId{-1};
87  cudaStream_t m_stream;
88  size_t d_size{}, h_size{};
89 
90  int m_nLayers{};
91  int m_nBinPairs{};
92  int m_maxEtaBin{};
93  int m_nNodes{};
94  unsigned int m_nMaxEdges{};
95 
96  int m_minLevel{};
97 
99 
100  //1. Input data structures on GPU
101 
102  float* d_sp_params{};//spacepoint parameters x, y, z, w
103  int* d_layer_info{};
104  float* d_layer_geo{};
105 
106  //2. GBTS algorithm parameters
107 
108  float* d_algo_params{};
109 
110  //3. Graph nodes on GPU
111 
112  float* d_node_params{};//tau1, tau2, r, phi, z
113  int* d_node_index{};//original spacepoint index
114  int* d_eta_bin_views{};//views of the nodes
115  float* d_bin_rads{};//minimum and maximum r of nodes inside an eta-bin
116 
117  int* d_node_eta_index{};//for data binning
118  int* d_node_phi_index{};//for data binning
119 
120  unsigned int* d_eta_phi_histo{};//for data binning
121  unsigned int* d_phi_cusums{};//for data binning
122  unsigned int* d_eta_node_counter{};//for data binning
123 
124  int* h_eta_bin_views{};//eta-bin views of the node_params array
125  float* h_bin_rads{};
126 
127  unsigned int* h_bin_pair_views{};
128  unsigned int* d_bin_pair_views{};
129 
130  float* h_bin_pair_dphi{};
131  float* d_bin_pair_dphi{};
132 
133  int* d_edge_nodes{};
134  float* d_edge_params{};
135 
136  unsigned int* d_num_incoming_edges{};
137 
139 
140  int* d_edge_links{};
141 
142  unsigned char* d_num_neighbours{};
143  int* d_reIndexer{};
144  int* d_neighbours{};
145  unsigned int* d_counters{};
146 
147  // message-passing CCA
148 
149  int* d_active_edges{}; //holds indices of the edges that need more CCA iterations
150  char* d_levels{}; //d_levels[edge_idx] = the maxium length of seeds starting with this edge
151  int* d_level_views{}; //edge indices by level
152  int* d_level_boundaries{}; //number of edges for each level in the above
153 
154  // seed-extraction walkthrough
155 
156  int* d_mini_states{}; // edge_idx and prev mini_state forms a seeds uniuqe path through the graph
157  int* d_seed_proposals{}; // int quality and final mini_state_idx
158  float* d_state_store{}; // global overflow of live edgeStates
159  unsigned long long int* d_edge_bids{}; //first 32 bits are seed quality second 32 bits are seed_proposals index [int_m_J, prop_idx]
160  char* d_seed_ambiguity{}; //0 as default/is real seed, 1 as maybe seed, -1 as maybe not seed, -2 as fake
161 
162  //output stats
163 
164  unsigned int m_nEdges{};
165  unsigned int m_nLinks{};
166  unsigned int m_nUniqueEdges{};
167  unsigned int m_nSeeds{};
168 
169  //output array
170 
172 
174  //stores each edges node-pair, number of connections and the self-refrencing indexes of those connections
175 
176 private:
178 };
179 
180 
181 #endif
SeedMakingDeviceContext::m_stream
cudaStream_t m_stream
Definition: device_context.h:25
SeedMakingManagedDeviceContext::m_settings
unsigned char * m_settings
Definition: device_context.h:57
SeedMakingDeviceContext::d_spacepoints
unsigned char * d_spacepoints
Definition: device_context.h:29
SeedMakingDeviceContext::h_settings
unsigned char * h_settings
Definition: device_context.h:26
GbtsDeviceContext::d_active_edges
int * d_active_edges
Definition: device_context.h:149
SeedMakingManagedDeviceContext::managedSize
size_t managedSize()
Definition: device_context.h:51
GbtsDeviceContext::d_output_graph
int * d_output_graph
Definition: device_context.h:173
GbtsDeviceContext::m_minLevel
int m_minLevel
Definition: device_context.h:96
GbtsDeviceContext::hostSize
size_t hostSize()
Definition: device_context.h:83
CommonStructures.h
SeedMakingManagedDeviceContext::SeedMakingManagedDeviceContext
SeedMakingManagedDeviceContext()
Definition: device_context.h:48
GbtsDeviceContext::d_algo_params
float * d_algo_params
Definition: device_context.h:108
GbtsDeviceContext::d_edge_bids
unsigned long long int * d_edge_bids
Definition: device_context.h:159
GbtsDeviceContext::d_reIndexer
int * d_reIndexer
Definition: device_context.h:143
SeedMakingDeviceContext::hostSize
size_t hostSize()
Definition: device_context.h:21
GbtsDeviceContext::d_eta_bin_views
int * d_eta_bin_views
Definition: device_context.h:114
GbtsDeviceContext::h_size
size_t h_size
Definition: device_context.h:88
GbtsDeviceContext::h_eta_bin_views
int * h_eta_bin_views
Definition: device_context.h:124
SeedMakingDeviceContext::d_detmodel
unsigned char * d_detmodel
Definition: device_context.h:31
SeedMakingDeviceContext::m_gpuParams
GPU_PARAMETERS m_gpuParams
Definition: device_context.h:40
GbtsDeviceContext::d_eta_node_counter
unsigned int * d_eta_node_counter
Definition: device_context.h:122
GbtsDeviceContext::GbtsDeviceContext
GbtsDeviceContext()=default
SeedMakingManagedDeviceContext::d_doubletinfo
unsigned char * d_doubletinfo
Definition: device_context.h:71
GbtsDeviceContext::h_bin_rads
float * h_bin_rads
Definition: device_context.h:125
SeedMakingDeviceContext::d_settings
unsigned char * d_settings
Definition: device_context.h:27
SeedMakingManagedDeviceContext::m_spacepoints
unsigned char * m_spacepoints
Definition: device_context.h:60
GbtsDeviceContext::d_bin_rads
float * d_bin_rads
Definition: device_context.h:115
GbtsDeviceContext::m_useGPUseedExtraction
bool m_useGPUseedExtraction
Definition: device_context.h:98
GbtsDeviceContext::h_bin_pair_dphi
float * h_bin_pair_dphi
Definition: device_context.h:130
GbtsDeviceContext::d_num_neighbours
unsigned char * d_num_neighbours
Definition: device_context.h:142
GbtsDeviceContext::GbtsDeviceContext
GbtsDeviceContext(const GbtsDeviceContext &sc)
Definition: device_context.h:177
GbtsDeviceContext::d_node_phi_index
int * d_node_phi_index
Definition: device_context.h:118
SeedMakingManagedDeviceContext::m_gpuParams
GPU_PARAMETERS m_gpuParams
Definition: device_context.h:74
SeedMakingDeviceContext::d_doubletinfo
unsigned char * d_doubletinfo
Definition: device_context.h:37
GbtsDeviceContext::deviceSize
size_t deviceSize()
Definition: device_context.h:84
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SeedMakingManagedDeviceContext::h_size
size_t h_size
Definition: device_context.h:73
SeedMakingDeviceContext::SeedMakingDeviceContext
SeedMakingDeviceContext()
Definition: device_context.h:20
GbtsDeviceContext::d_seed_proposals
int * d_seed_proposals
Definition: device_context.h:157
GbtsDeviceContext::d_level_boundaries
int * d_level_boundaries
Definition: device_context.h:152
SeedMakingDeviceContext::deviceSize
size_t deviceSize()
Definition: device_context.h:22
GbtsDeviceContext::m_nLayers
int m_nLayers
Definition: device_context.h:90
GbtsDeviceContext::m_deviceId
int m_deviceId
Definition: device_context.h:86
GbtsDeviceContext::d_neighbours
int * d_neighbours
Definition: device_context.h:144
SeedMakingManagedDeviceContext::m_outputseeds
unsigned char * m_outputseeds
Definition: device_context.h:67
GbtsDeviceContext::d_node_eta_index
int * d_node_eta_index
Definition: device_context.h:117
GbtsDeviceContext::m_maxEtaBin
int m_maxEtaBin
Definition: device_context.h:92
SeedMakingManagedDeviceContext::m_size
size_t m_size
Definition: device_context.h:73
GbtsDeviceContext::m_nSeeds
unsigned int m_nSeeds
Definition: device_context.h:167
SeedMakingManagedDeviceContext::m_stream
cudaStream_t m_stream
Definition: device_context.h:54
TrigAccel::ITk::Tracklet
Definition: TrigITkAccelEDM.h:165
SeedMakingManagedDeviceContext::deviceSize
size_t deviceSize()
Definition: device_context.h:50
GbtsDeviceContext::d_phi_cusums
unsigned int * d_phi_cusums
Definition: device_context.h:121
GbtsDeviceContext::d_mini_states
int * d_mini_states
Definition: device_context.h:156
SeedMakingManagedDeviceContext::d_detmodel
unsigned char * d_detmodel
Definition: device_context.h:62
GbtsDeviceContext::d_eta_phi_histo
unsigned int * d_eta_phi_histo
Definition: device_context.h:120
GbtsDeviceContext::d_link_counters
int * d_link_counters
Definition: device_context.h:138
GbtsDeviceContext::d_levels
char * d_levels
Definition: device_context.h:150
GbtsDeviceContext::d_level_views
int * d_level_views
Definition: device_context.h:151
SeedMakingDeviceContext::h_spacepoints
unsigned char * h_spacepoints
Definition: device_context.h:28
GbtsDeviceContext::m_stream
cudaStream_t m_stream
Definition: device_context.h:87
GbtsDeviceContext::d_seed_ambiguity
char * d_seed_ambiguity
Definition: device_context.h:160
GbtsDeviceContext::d_counters
unsigned int * d_counters
Definition: device_context.h:145
SeedMakingDeviceContext::h_size
size_t h_size
Definition: device_context.h:39
SeedMakingManagedDeviceContext::SeedMakingManagedDeviceContext
SeedMakingManagedDeviceContext(const SeedMakingManagedDeviceContext &sc)
Definition: device_context.h:77
GbtsDeviceContext::d_layer_info
int * d_layer_info
Definition: device_context.h:103
GbtsDeviceContext::d_state_store
float * d_state_store
Definition: device_context.h:158
GbtsDeviceContext::d_size
size_t d_size
Definition: device_context.h:88
GbtsDeviceContext::d_edge_nodes
int * d_edge_nodes
Definition: device_context.h:133
SeedMakingDeviceContext::SeedMakingDeviceContext
SeedMakingDeviceContext(const SeedMakingDeviceContext &sc)
Definition: device_context.h:43
GbtsDeviceContext::h_bin_pair_views
unsigned int * h_bin_pair_views
Definition: device_context.h:127
SeedMakingManagedDeviceContext::hostSize
size_t hostSize()
Definition: device_context.h:49
gpuParameters
Definition: CommonStructures.h:6
GbtsDeviceContext::d_bin_pair_dphi
float * d_bin_pair_dphi
Definition: device_context.h:131
SeedMakingDeviceContext::d_doubletstorage
unsigned char * d_doubletstorage
Definition: device_context.h:36
TrigITkAccelEDM.h
SeedMakingManagedDeviceContext::d_doubletstorage
unsigned char * d_doubletstorage
Definition: device_context.h:70
GbtsDeviceContext::d_edge_links
int * d_edge_links
Definition: device_context.h:140
GbtsDeviceContext::d_node_params
float * d_node_params
Definition: device_context.h:112
SeedMakingManagedDeviceContext::d_size
size_t d_size
Definition: device_context.h:73
GbtsDeviceContext::m_nNodes
int m_nNodes
Definition: device_context.h:93
GbtsDeviceContext::m_nUniqueEdges
unsigned int m_nUniqueEdges
Definition: device_context.h:166
SeedMakingDeviceContext::d_size
size_t d_size
Definition: device_context.h:39
GbtsDeviceContext::m_nLinks
unsigned int m_nLinks
Definition: device_context.h:165
GbtsDeviceContext::d_seeds
TrigAccel::ITk::Tracklet * d_seeds
Definition: device_context.h:171
GbtsDeviceContext
Definition: device_context.h:80
SeedMakingDeviceContext::h_outputseeds
unsigned char * h_outputseeds
Definition: device_context.h:33
GbtsDeviceContext::d_node_index
int * d_node_index
Definition: device_context.h:113
GbtsDeviceContext::d_layer_geo
float * d_layer_geo
Definition: device_context.h:104
SeedMakingManagedDeviceContext
Definition: device_context.h:46
SeedMakingDeviceContext
Definition: device_context.h:18
GbtsDeviceContext::d_num_incoming_edges
unsigned int * d_num_incoming_edges
Definition: device_context.h:136
GbtsDeviceContext::d_edge_params
float * d_edge_params
Definition: device_context.h:134
GbtsDeviceContext::m_nBinPairs
int m_nBinPairs
Definition: device_context.h:91
SeedMakingDeviceContext::m_deviceId
int m_deviceId
Definition: device_context.h:24
SeedMakingDeviceContext::d_outputseeds
unsigned char * d_outputseeds
Definition: device_context.h:34
GbtsDeviceContext::m_nMaxEdges
unsigned int m_nMaxEdges
Definition: device_context.h:94
GbtsDeviceContext::d_sp_params
float * d_sp_params
Definition: device_context.h:102
SeedMakingManagedDeviceContext::m_deviceId
int m_deviceId
Definition: device_context.h:53
SeedMakingManagedDeviceContext::m_confirmedseeds
unsigned char * m_confirmedseeds
Definition: device_context.h:68
TrigInDetAccelEDM.h
GbtsDeviceContext::d_bin_pair_views
unsigned int * d_bin_pair_views
Definition: device_context.h:128
GbtsDeviceContext::m_nEdges
unsigned int m_nEdges
Definition: device_context.h:164