PAPI 7.1.0.0
Loading...
Searching...
No Matches
sysdetect.c File Reference

This is a system info detection component, it provides general hardware information across the system, additionally to CPU, such as GPU, Network, installed runtime libraries, etc. More...

Include dependency graph for sysdetect.c:

Go to the source code of this file.

Data Structures

struct  dev_fn_ptr_vector
 

Functions

static int _sysdetect_enum_dev_type (int enum_modifier, void **handle)
 
static int _sysdetect_get_dev_type_attr (void *handle, PAPI_dev_type_attr_e attr, void *val)
 
static int _sysdetect_get_dev_attr (void *handle, int id, PAPI_dev_attr_e attr, void *val)
 
static void get_num_threads_per_numa (_sysdetect_cpu_info_t *cpu_info)
 
static void init_dev_info (void)
 
static void cleanup_dev_info (void)
 
static int _sysdetect_init_component (int cidx)
 
static int _sysdetect_init_thread (hwd_context_t *ctx __attribute__((unused)))
 
static int _sysdetect_shutdown_component (void)
 
static int _sysdetect_shutdown_thread (hwd_context_t *ctx __attribute__((unused)))
 
static void _sysdetect_init_private (void)
 
int _sysdetect_user (int unused __attribute__((unused)), void *in, void *out)
 

Variables

papi_vector_t _sysdetect_vector
 
dev_fn_ptr_vector dev_fn_vector [PAPI_DEV_TYPE_ID__MAX_NUM]
 
static _sysdetect_dev_type_info_t dev_type_info_arr [PAPI_DEV_TYPE_ID__MAX_NUM]
 

Detailed Description

Author
Giuseppe Congiu gcong.nosp@m.iu@i.nosp@m.cl.ut.nosp@m.k.ed.nosp@m.u

Definition in file sysdetect.c.

Function Documentation

◆ _sysdetect_enum_dev_type()

int _sysdetect_enum_dev_type ( int  enum_modifier,
void **  handle 
)
static

Definition at line 169 of file sysdetect.c.

170{
171 static int dev_type_id;
172
173 if (PAPI_DEV_TYPE_ENUM__FIRST == enum_modifier) {
174 dev_type_id = 0;
175 *(void **) handle = &dev_type_info_arr[dev_type_id];
176 return PAPI_OK;
177 }
178
179 int not_found = 1;
180 while (not_found && dev_type_id < PAPI_DEV_TYPE_ID__MAX_NUM) {
181 if ((1 << dev_type_info_arr[dev_type_id].id) & enum_modifier) {
182 *handle = &dev_type_info_arr[dev_type_id];
183 not_found = 0;
184 }
185 ++dev_type_id;
186 }
187
188 if (not_found) {
189 *handle = NULL;
190 dev_type_id = 0;
191 return PAPI_EINVAL;
192 }
193
194 return PAPI_OK;
195}
static papi_handle_t handle
Definition: Gamum.c:21
#define PAPI_OK
Definition: f90papi.h:73
#define PAPI_EINVAL
Definition: f90papi.h:115
#define PAPI_DEV_TYPE_ENUM__FIRST
Definition: f90papi.h:90
#define PAPI_DEV_TYPE_ID__MAX_NUM
Definition: f90papi.h:161
static _sysdetect_dev_type_info_t dev_type_info_arr[PAPI_DEV_TYPE_ID__MAX_NUM]
Definition: sysdetect.c:46
Here is the caller graph for this function:

◆ _sysdetect_get_dev_attr()

int _sysdetect_get_dev_attr ( void *  handle,
int  id,
PAPI_dev_attr_e  attr,
void *  val 
)
static

Definition at line 229 of file sysdetect.c.

230{
231 int papi_errno = PAPI_OK;
232
233 _sysdetect_dev_type_info_t *dev_type_info =
235 /* there is only one cpu vendor/model per system, hence id = 0 */
236 _sysdetect_cpu_info_t *cpu_info =
237 (_sysdetect_cpu_info_t *) &dev_type_info->dev_info_arr[0];
238 _sysdetect_gpu_info_u *gpu_info =
239 (_sysdetect_gpu_info_u *) (dev_type_info->dev_info_arr) + id;
240
241 switch(attr) {
242 /* CPU attributes */
244 *(unsigned int *) val = cpu_info->clevel[0].cache[0].size;
245 break;
247 *(unsigned int *) val = cpu_info->clevel[0].cache[1].size;
248 break;
250 *(unsigned int *) val = cpu_info->clevel[1].cache[0].size;
251 break;
253 *(unsigned int *) val = cpu_info->clevel[2].cache[0].size;
254 break;
256 *(unsigned int *) val = cpu_info->clevel[0].cache[0].line_size;
257 break;
259 *(unsigned int *) val = cpu_info->clevel[0].cache[1].line_size;
260 break;
262 *(unsigned int *) val = cpu_info->clevel[1].cache[0].line_size;
263 break;
265 *(unsigned int *) val = cpu_info->clevel[2].cache[0].line_size;
266 break;
268 *(unsigned int *) val = cpu_info->clevel[0].cache[0].num_lines;
269 break;
271 *(unsigned int *) val = cpu_info->clevel[0].cache[1].num_lines;
272 break;
274 *(unsigned int *) val = cpu_info->clevel[1].cache[0].num_lines;
275 break;
277 *(unsigned int *) val = cpu_info->clevel[2].cache[0].num_lines;
278 break;
280 *(unsigned int *) val = cpu_info->clevel[0].cache[0].associativity;
281 break;
283 *(unsigned int *) val = cpu_info->clevel[0].cache[1].associativity;
284 break;
286 *(unsigned int *) val = cpu_info->clevel[1].cache[0].associativity;
287 break;
289 *(unsigned int *) val = cpu_info->clevel[2].cache[0].associativity;
290 break;
292 *(const char **) val = cpu_info->name;
293 break;
295 *(unsigned int *) val = cpu_info->cpuid_family;
296 break;
298 *(unsigned int *) val = cpu_info->cpuid_model;
299 break;
301 *(unsigned int *) val = cpu_info->cpuid_stepping;
302 break;
304 *(unsigned int *) val = cpu_info->sockets;
305 break;
307 *(unsigned int *) val = cpu_info->numas;
308 break;
310 *(int *) val = cpu_info->cores;
311 break;
313 *(int *) val = cpu_info->threads * cpu_info->cores * cpu_info->sockets;
314 break;
316 *(int *) val = cpu_info->numa_affinity[id];
317 break;
319 get_num_threads_per_numa(cpu_info);
320 *(int *) val = cpu_info->num_threads_per_numa[id];
321 break;
323 *(unsigned int *) val = (cpu_info->numa_memory[id] >> 10);
324 break;
325 /* NVIDIA GPU attributes */
327 *(unsigned long *) val = gpu_info->nvidia.uid;
328 break;
330 *(const char **) val = gpu_info->nvidia.name;
331 break;
333 *(unsigned int *) val = gpu_info->nvidia.warp_size;
334 break;
336 *(unsigned int *) val = gpu_info->nvidia.max_threads_per_block;
337 break;
339 *(unsigned int *) val = gpu_info->nvidia.max_blocks_per_multi_proc;
340 break;
342 *(unsigned int *) val = gpu_info->nvidia.max_shmmem_per_block;
343 break;
345 *(unsigned int *) val = gpu_info->nvidia.max_shmmem_per_multi_proc;
346 break;
348 *(unsigned int *) val = gpu_info->nvidia.max_block_dim_x;
349 break;
351 *(unsigned int *) val = gpu_info->nvidia.max_block_dim_y;
352 break;
354 *(unsigned int *) val = gpu_info->nvidia.max_block_dim_z;
355 break;
357 *(unsigned int *) val = gpu_info->nvidia.max_grid_dim_x;
358 break;
360 *(unsigned int *) val = gpu_info->nvidia.max_grid_dim_y;
361 break;
363 *(unsigned int *) val = gpu_info->nvidia.max_grid_dim_z;
364 break;
366 *(unsigned int *) val = gpu_info->nvidia.multi_processor_count;
367 break;
369 *(unsigned int *) val = gpu_info->nvidia.multi_kernel_per_ctx;
370 break;
372 *(unsigned int *) val = gpu_info->nvidia.can_map_host_mem;
373 break;
375 *(unsigned int *) val = gpu_info->nvidia.can_overlap_comp_and_data_xfer;
376 break;
378 *(unsigned int *) val = gpu_info->nvidia.unified_addressing;
379 break;
381 *(unsigned int *) val = gpu_info->nvidia.managed_memory;
382 break;
384 *(unsigned int *) val = gpu_info->nvidia.major;
385 break;
387 *(unsigned int *) val = gpu_info->nvidia.minor;
388 break;
389 /* AMD GPU attributes */
391 *(unsigned long *) val = gpu_info->amd.uid;
392 break;
394 *(const char **) val = gpu_info->amd.name;
395 break;
397 *(unsigned int *) val = gpu_info->amd.simd_per_compute_unit;
398 break;
400 *(unsigned int *) val = gpu_info->amd.max_threads_per_workgroup;
401 break;
403 *(unsigned int *) val = gpu_info->amd.wavefront_size;
404 break;
406 *(unsigned int *) val = gpu_info->amd.max_waves_per_compute_unit;
407 break;
409 *(unsigned int *) val = gpu_info->amd.max_shmmem_per_workgroup;
410 break;
412 *(unsigned int *) val = gpu_info->amd.max_workgroup_dim_x;
413 break;
415 *(unsigned int *) val = gpu_info->amd.max_workgroup_dim_y;
416 break;
418 *(unsigned int *) val = gpu_info->amd.max_workgroup_dim_z;
419 break;
421 *(unsigned int *) val = gpu_info->amd.max_grid_dim_x;
422 break;
424 *(unsigned int *) val = gpu_info->amd.max_grid_dim_y;
425 break;
427 *(unsigned int *) val = gpu_info->amd.max_grid_dim_z;
428 break;
430 *(unsigned int *) val = gpu_info->amd.compute_unit_count;
431 break;
433 *(unsigned int *) val = gpu_info->amd.major;
434 break;
436 *(unsigned int *) val = gpu_info->amd.minor;
437 break;
438 default:
439 papi_errno = PAPI_ENOSUPP;
440 }
441
442 return papi_errno;
443}
#define PAPI_DEV_ATTR__ROCM_UINT_WG_DIM_Y
Definition: f90papi.h:169
#define PAPI_DEV_ATTR__CUDA_UINT_THR_PER_BLK
Definition: f90papi.h:226
#define PAPI_DEV_ATTR__CUDA_UINT_WARP_SIZE
Definition: f90papi.h:114
#define PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_LINE_COUNT
Definition: f90papi.h:32
#define PAPI_DEV_ATTR__ROCM_UINT_GRD_DIM_Y
Definition: f90papi.h:258
#define PAPI_DEV_ATTR__ROCM_UINT_WAVE_PER_CU
Definition: f90papi.h:163
#define PAPI_DEV_ATTR__CUDA_UINT_BLK_PER_SM
Definition: f90papi.h:156
#define PAPI_DEV_ATTR__CUDA_ULONG_UID
Definition: f90papi.h:192
#define PAPI_DEV_ATTR__CPU_UINT_FAMILY
Definition: f90papi.h:142
#define PAPI_DEV_ATTR__CPU_UINT_SOCKET_COUNT
Definition: f90papi.h:125
#define PAPI_DEV_ATTR__CPU_UINT_THR_PER_NUMA
Definition: f90papi.h:155
#define PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_LINE_SIZE
Definition: f90papi.h:213
#define PAPI_DEV_ATTR__CUDA_UINT_BLK_DIM_Z
Definition: f90papi.h:117
#define PAPI_DEV_ATTR__ROCM_UINT_WAVEFRONT_SIZE
Definition: f90papi.h:252
#define PAPI_DEV_ATTR__CUDA_UINT_UNIFIED_ADDR
Definition: f90papi.h:279
#define PAPI_DEV_ATTR__CUDA_UINT_SM_COUNT
Definition: f90papi.h:249
#define PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_ASSOC
Definition: f90papi.h:35
#define PAPI_DEV_ATTR__CUDA_UINT_GRD_DIM_Y
Definition: f90papi.h:106
#define PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_SIZE
Definition: f90papi.h:251
#define PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_LINE_SIZE
Definition: f90papi.h:128
#define PAPI_DEV_ATTR__CPU_UINT_THREAD_COUNT
Definition: f90papi.h:181
#define PAPI_DEV_ATTR__CPU_UINT_NUMA_COUNT
Definition: f90papi.h:18
#define PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_LINE_COUNT
Definition: f90papi.h:56
#define PAPI_DEV_ATTR__CUDA_UINT_MANAGED_MEM
Definition: f90papi.h:183
#define PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_SIZE
Definition: f90papi.h:259
#define PAPI_DEV_ATTR__ROCM_UINT_COMP_CAP_MINOR
Definition: f90papi.h:228
#define PAPI_ENOSUPP
Definition: f90papi.h:244
#define PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_SIZE
Definition: f90papi.h:31
#define PAPI_DEV_ATTR__CUDA_UINT_BLK_DIM_Y
Definition: f90papi.h:217
#define PAPI_DEV_ATTR__ROCM_CHAR_DEVICE_NAME
Definition: f90papi.h:84
#define PAPI_DEV_ATTR__CUDA_UINT_SHM_PER_BLK
Definition: f90papi.h:216
#define PAPI_DEV_ATTR__ROCM_UINT_WORKGROUP_SIZE
Definition: f90papi.h:118
#define PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_LINE_COUNT
Definition: f90papi.h:15
#define PAPI_DEV_ATTR__ROCM_UINT_COMP_CAP_MAJOR
Definition: f90papi.h:34
#define PAPI_DEV_ATTR__CPU_CHAR_NAME
Definition: f90papi.h:246
#define PAPI_DEV_ATTR__CUDA_UINT_GRD_DIM_X
Definition: f90papi.h:42
#define PAPI_DEV_ATTR__ROCM_ULONG_UID
Definition: f90papi.h:28
#define PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_LINE_COUNT
Definition: f90papi.h:182
#define PAPI_DEV_ATTR__CUDA_UINT_MEMCPY_OVERLAP
Definition: f90papi.h:273
#define PAPI_DEV_ATTR__ROCM_UINT_SHM_PER_WG
Definition: f90papi.h:33
#define PAPI_DEV_ATTR__CUDA_UINT_COMP_CAP_MINOR
Definition: f90papi.h:135
#define PAPI_DEV_ATTR__CUDA_UINT_MAP_HOST_MEM
Definition: f90papi.h:151
#define PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_ASSOC
Definition: f90papi.h:23
#define PAPI_DEV_ATTR__CUDA_UINT_SHM_PER_SM
Definition: f90papi.h:218
#define PAPI_DEV_ATTR__CPU_UINT_STEPPING
Definition: f90papi.h:153
#define PAPI_DEV_ATTR__ROCM_UINT_CU_COUNT
Definition: f90papi.h:191
#define PAPI_DEV_ATTR__CPU_UINT_THR_NUMA_AFFINITY
Definition: f90papi.h:29
#define PAPI_DEV_ATTR__CUDA_UINT_BLK_DIM_X
Definition: f90papi.h:166
#define PAPI_DEV_ATTR__CPU_UINT_NUMA_MEM_SIZE
Definition: f90papi.h:221
#define PAPI_DEV_ATTR__ROCM_UINT_SIMD_PER_CU
Definition: f90papi.h:92
#define PAPI_DEV_ATTR__ROCM_UINT_WG_DIM_X
Definition: f90papi.h:145
#define PAPI_DEV_ATTR__CUDA_UINT_MULTI_KERNEL
Definition: f90papi.h:55
#define PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_ASSOC
Definition: f90papi.h:207
#define PAPI_DEV_ATTR__CUDA_UINT_GRD_DIM_Z
Definition: f90papi.h:267
#define PAPI_DEV_ATTR__ROCM_UINT_GRD_DIM_X
Definition: f90papi.h:49
#define PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_SIZE
Definition: f90papi.h:184
#define PAPI_DEV_ATTR__CPU_UINT_MODEL
Definition: f90papi.h:98
#define PAPI_DEV_ATTR__ROCM_UINT_WG_DIM_Z
Definition: f90papi.h:241
#define PAPI_DEV_ATTR__ROCM_UINT_GRD_DIM_Z
Definition: f90papi.h:20
#define PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_LINE_SIZE
Definition: f90papi.h:232
#define PAPI_DEV_ATTR__CPU_UINT_CORE_COUNT
Definition: f90papi.h:41
#define PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_ASSOC
Definition: f90papi.h:47
#define PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_LINE_SIZE
Definition: f90papi.h:205
#define PAPI_DEV_ATTR__CUDA_CHAR_DEVICE_NAME
Definition: f90papi.h:81
#define PAPI_DEV_ATTR__CUDA_UINT_COMP_CAP_MAJOR
Definition: f90papi.h:69
PAPI_mh_cache_info_t cache[PAPI_MH_MAX_LEVELS]
Definition: sysdetect.h:57
_sysdetect_cache_level_info_t clevel[PAPI_MAX_MEM_HIERARCHY_LEVELS]
Definition: sysdetect.h:70
int numa_affinity[PAPI_MAX_NUM_THREADS]
Definition: sysdetect.h:74
char name[PAPI_MAX_STR_LEN]
Definition: sysdetect.h:61
int numa_memory[PAPI_MAX_NUM_NODES]
Definition: sysdetect.h:72
int num_threads_per_numa[PAPI_MAX_THREADS_PER_NUMA]
Definition: sysdetect.h:76
_sysdetect_dev_info_u * dev_info_arr
Definition: sysdetect.h:90
static void get_num_threads_per_numa(_sysdetect_cpu_info_t *cpu_info)
Definition: sysdetect.c:446
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _sysdetect_get_dev_type_attr()

int _sysdetect_get_dev_type_attr ( void *  handle,
PAPI_dev_type_attr_e  attr,
void *  val 
)
static

Definition at line 198 of file sysdetect.c.

199{
200 int papi_errno = PAPI_OK;
201
202 _sysdetect_dev_type_info_t *dev_type_info =
204
205 switch(attr) {
207 *(int *) val = dev_type_info->id;
208 break;
210 *(int *) val = dev_type_info->vendor_id;
211 break;
213 *(const char **) val = dev_type_info->vendor;
214 break;
216 *(int *) val = dev_type_info->num_devices;
217 break;
219 *(const char **) val = dev_type_info->status;
220 break;
221 default:
222 papi_errno = PAPI_ENOSUPP;
223 }
224
225 return papi_errno;
226}
#define PAPI_DEV_TYPE_ATTR__INT_PAPI_ID
Definition: f90papi.h:59
#define PAPI_DEV_TYPE_ATTR__INT_COUNT
Definition: f90papi.h:140
#define PAPI_DEV_TYPE_ATTR__INT_VENDOR_ID
Definition: f90papi.h:116
#define PAPI_DEV_TYPE_ATTR__CHAR_NAME
Definition: f90papi.h:126
#define PAPI_DEV_TYPE_ATTR__CHAR_STATUS
Definition: f90papi.h:239
char status[PAPI_MAX_STR_LEN]
Definition: sysdetect.h:88
char vendor[PAPI_MAX_STR_LEN]
Definition: sysdetect.h:86
PAPI_dev_type_id_e id
Definition: sysdetect.h:85
Here is the caller graph for this function:

◆ _sysdetect_init_component()

static int _sysdetect_init_component ( int  cidx)
static

Initialize hardware counters, setup the function vector table and get hardware information, this routine is called when the PAPI process is initialized (IE PAPI_library_init)

Definition at line 80 of file sysdetect.c.

81{
82
83 SUBDBG( "_sysdetect_init_component..." );
84
85 /* Export the component id */
87
88 return PAPI_OK;
89}
#define SUBDBG(format, args...)
Definition: papi_debug.h:64
static int cidx
PAPI_component_info_t cmp_info
Definition: papi_vector.h:20
papi_vector_t _sysdetect_vector
Definition: sysdetect.c:24

◆ _sysdetect_init_private()

static void _sysdetect_init_private ( void  )
static

Definition at line 116 of file sysdetect.c.

117{
118 static int initialized;
119
120 if (initialized) {
121 return;
122 }
123
124 init_dev_info( );
125
126 initialized = 1;
127}
static void init_dev_info(void)
Definition: sysdetect.c:56
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _sysdetect_init_thread()

static int _sysdetect_init_thread ( hwd_context_t *ctx   __attribute__(unused))
static

Definition at line 92 of file sysdetect.c.

93{
94 return PAPI_OK;
95}

◆ _sysdetect_shutdown_component()

static int _sysdetect_shutdown_component ( void  )
static

Triggered by PAPI_shutdown()

Definition at line 99 of file sysdetect.c.

100{
101
102 SUBDBG( "_sysdetect_shutdown_component..." );
103
105
106 return PAPI_OK;
107}
static void cleanup_dev_info(void)
Definition: sysdetect.c:66
Here is the call graph for this function:

◆ _sysdetect_shutdown_thread()

static int _sysdetect_shutdown_thread ( hwd_context_t *ctx   __attribute__(unused))
static

Definition at line 110 of file sysdetect.c.

111{
112 return PAPI_OK;
113}

◆ _sysdetect_user()

int _sysdetect_user ( int unused   __attribute__(unused),
void *  in,
void *  out 
)

Trigered by PAPI_{enum,get}_dev_xxx interfaces

Definition at line 131 of file sysdetect.c.

132{
133 int papi_errno = PAPI_OK;
134
136
138 int modifier;
139 void *handle;
140 int id;
141 PAPI_dev_type_attr_e dev_type_attr;
142 PAPI_dev_attr_e dev_attr;
143
144 switch (args->query_type) {
146 modifier = args->query.enumerate.modifier;
147 papi_errno = _sysdetect_enum_dev_type(modifier, out);
148 break;
150 handle = args->query.dev_type.handle;
151 dev_type_attr = args->query.dev_type.attr;
152 papi_errno = _sysdetect_get_dev_type_attr(handle, dev_type_attr,
153 out);
154 break;
156 handle = args->query.dev.handle;
157 id = args->query.dev.id;
158 dev_attr = args->query.dev.attr;
159 papi_errno = _sysdetect_get_dev_attr(handle, id, dev_attr, out);
160 break;
161 default:
162 papi_errno = PAPI_EMISC;
163 }
164
165 return papi_errno;
166}
#define PAPI_EMISC
Definition: f90papi.h:122
PAPI_dev_type_attr_e
Definition: papi.h:1049
PAPI_dev_attr_e
Definition: papi.h:1068
@ PAPI_SYSDETECT_QUERY__DEV_TYPE_ENUM
@ PAPI_SYSDETECT_QUERY__DEV_ATTR
@ PAPI_SYSDETECT_QUERY__DEV_TYPE_ATTR
struct _papi_hwi_sysdetect_t::@183::@185 dev_type
PAPI_dev_type_attr_e attr
struct _papi_hwi_sysdetect_t::@183::@186 dev
union _papi_hwi_sysdetect_t::@183 query
struct _papi_hwi_sysdetect_t::@183::@184 enumerate
static void _sysdetect_init_private(void)
Definition: sysdetect.c:116
static int _sysdetect_enum_dev_type(int enum_modifier, void **handle)
Definition: sysdetect.c:169
static int _sysdetect_get_dev_type_attr(void *handle, PAPI_dev_type_attr_e attr, void *val)
Definition: sysdetect.c:198
static int _sysdetect_get_dev_attr(void *handle, int id, PAPI_dev_attr_e attr, void *val)
Definition: sysdetect.c:229
Here is the call graph for this function:

◆ cleanup_dev_info()

static void cleanup_dev_info ( void  )
static

Definition at line 66 of file sysdetect.c.

67{
68 int id;
69
70 for (id = 0; id < PAPI_DEV_TYPE_ID__MAX_NUM; ++id) {
72 }
73}
void(* close)(_sysdetect_dev_type_info_t *dev_type_info)
Definition: sysdetect.c:28
dev_fn_ptr_vector dev_fn_vector[PAPI_DEV_TYPE_ID__MAX_NUM]
Definition: sysdetect.c:31
Here is the caller graph for this function:

◆ get_num_threads_per_numa()

void get_num_threads_per_numa ( _sysdetect_cpu_info_t cpu_info)
static

Definition at line 446 of file sysdetect.c.

447{
448 static int initialized;
449 int k;
450
451 if (initialized) {
452 return;
453 }
454
455 int threads = cpu_info->threads * cpu_info->cores * cpu_info->sockets;
456 for (k = 0; k < threads; ++k) {
457 cpu_info->num_threads_per_numa[cpu_info->numa_affinity[k]]++;
458 }
459
460 initialized = 1;
461}
Here is the caller graph for this function:

◆ init_dev_info()

static void init_dev_info ( void  )
static

Definition at line 56 of file sysdetect.c.

57{
58 int id;
59
60 for (id = 0; id < PAPI_DEV_TYPE_ID__MAX_NUM; ++id) {
62 }
63}
void(* open)(_sysdetect_dev_type_info_t *dev_type_info)
Definition: sysdetect.c:27
Here is the caller graph for this function:

Variable Documentation

◆ _sysdetect_vector

papi_vector_t _sysdetect_vector
Initial value:
= {
.cmp_info = {
.name = "sysdetect",
.short_name = "sysdetect",
.description = "System info detection component",
.version = "1.0",
.support_version = "n/a",
.kernel_version = "n/a",
},
.init_component = _sysdetect_init_component,
.init_thread = _sysdetect_init_thread,
.shutdown_component = _sysdetect_shutdown_component,
.shutdown_thread = _sysdetect_shutdown_thread,
.user = _sysdetect_user,
}
static int _sysdetect_shutdown_thread(hwd_context_t *ctx __attribute__((unused)))
Definition: sysdetect.c:110
static int _sysdetect_init_component(int cidx)
Definition: sysdetect.c:80
static int _sysdetect_init_thread(hwd_context_t *ctx __attribute__((unused)))
Definition: sysdetect.c:92
int _sysdetect_user(int unused __attribute__((unused)), void *in, void *out)
Definition: sysdetect.c:131
static int _sysdetect_shutdown_component(void)
Definition: sysdetect.c:99

Vector that points to entry points for our component

Definition at line 24 of file sysdetect.c.

◆ dev_fn_vector

Initial value:
= {
{
},
{
},
{
},
}
void close_amd_gpu_dev_type(_sysdetect_dev_type_info_t *dev_type_info)
Definition: amd_gpu.c:421
void open_amd_gpu_dev_type(_sysdetect_dev_type_info_t *dev_type_info)
Definition: amd_gpu.c:369
void open_cpu_dev_type(_sysdetect_dev_type_info_t *dev_type_info)
Definition: cpu.c:130
void close_cpu_dev_type(_sysdetect_dev_type_info_t *dev_type_info)
Definition: cpu.c:150
void open_nvidia_gpu_dev_type(_sysdetect_dev_type_info_t *dev_type_info)
Definition: nvidia_gpu.c:337
void close_nvidia_gpu_dev_type(_sysdetect_dev_type_info_t *dev_type_info)
Definition: nvidia_gpu.c:386

Definition at line 31 of file sysdetect.c.

◆ dev_type_info_arr

Definition at line 46 of file sysdetect.c.