PAPI_get_dev_attr(3)
okay bestie, welcome to PAPI_get_dev_attr(3) from the PAPI manual π this page is giving βdevice attributes, but make it cuteβ and weβre gonna keep every single detail, no cap β¨
π NAME π
PAPI_get_dev_attr β returns device attributes π
πΈ SYNOPSIS πΈ
the synopsis energy lives in the detailed description below, bestie β keep scrolling πβ¨
β¨ Detailed Description β¨
so this whole page is literally about returning device attributes π«Ά hereβs the tea on the return values and parameters π
π Return values π
ENOSUPPβ invalid/unsupported attribute π
π Parameters π
handleβ opaque handle for device, obtained throughPAPI_enum_dev_typeπidβ integer identifier of queried device π’attrβ device attribute to query πvalβ value of the requested device attribute π
π§ Example: π§
typedef enum {
PAPI_DEV_ATTR__CPU_CHAR_NAME,
PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_SIZE,
PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_SIZE,
PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_SIZE,
PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_SIZE,
PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_LINE_SIZE,
PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_LINE_SIZE,
PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_LINE_SIZE,
PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_LINE_SIZE,
PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_LINE_COUNT,
PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_LINE_COUNT,
PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_LINE_COUNT,
PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_LINE_COUNT,
PAPI_DEV_ATTR__CPU_UINT_L1I_CACHE_ASSOC,
PAPI_DEV_ATTR__CPU_UINT_L1D_CACHE_ASSOC,
PAPI_DEV_ATTR__CPU_UINT_L2U_CACHE_ASSOC,
PAPI_DEV_ATTR__CPU_UINT_L3U_CACHE_ASSOC,
PAPI_DEV_ATTR__CPU_UINT_SOCKET_COUNT,
PAPI_DEV_ATTR__CPU_UINT_NUMA_COUNT,
PAPI_DEV_ATTR__CPU_UINT_CORE_COUNT,
PAPI_DEV_ATTR__CPU_UINT_THREAD_COUNT,
PAPI_DEV_ATTR__CPU_UINT_FAMILY,
PAPI_DEV_ATTR__CPU_UINT_MODEL,
PAPI_DEV_ATTR__CPU_UINT_STEPPING,
PAPI_DEV_ATTR__CPU_UINT_NUMA_MEM_SIZE,
PAPI_DEV_ATTR__CPU_UINT_THR_NUMA_AFFINITY,
PAPI_DEV_ATTR__CPU_UINT_THR_PER_NUMA,
PAPI_DEV_ATTR__CUDA_ULONG_UID,
PAPI_DEV_ATTR__CUDA_CHAR_DEVICE_NAME,
PAPI_DEV_ATTR__CUDA_UINT_WARP_SIZE,
PAPI_DEV_ATTR__CUDA_UINT_SHM_PER_BLK,
PAPI_DEV_ATTR__CUDA_UINT_SHM_PER_SM,
PAPI_DEV_ATTR__CUDA_UINT_BLK_DIM_X,
PAPI_DEV_ATTR__CUDA_UINT_BLK_DIM_Y,
PAPI_DEV_ATTR__CUDA_UINT_BLK_DIM_Z,
PAPI_DEV_ATTR__CUDA_UINT_GRD_DIM_X,
PAPI_DEV_ATTR__CUDA_UINT_GRD_DIM_Y,
PAPI_DEV_ATTR__CUDA_UINT_GRD_DIM_Z,
PAPI_DEV_ATTR__CUDA_UINT_THR_PER_BLK,
PAPI_DEV_ATTR__CUDA_UINT_SM_COUNT,
PAPI_DEV_ATTR__CUDA_UINT_MULTI_KERNEL,
PAPI_DEV_ATTR__CUDA_UINT_MAP_HOST_MEM,
PAPI_DEV_ATTR__CUDA_UINT_MEMCPY_OVERLAP,
PAPI_DEV_ATTR__CUDA_UINT_UNIFIED_ADDR,
PAPI_DEV_ATTR__CUDA_UINT_MANAGED_MEM,
PAPI_DEV_ATTR__CUDA_UINT_COMP_CAP_MAJOR,
PAPI_DEV_ATTR__CUDA_UINT_COMP_CAP_MINOR,
PAPI_DEV_ATTR__CUDA_UINT_BLK_PER_SM,
PAPI_DEV_ATTR__ROCM_ULONG_UID,
PAPI_DEV_ATTR__ROCM_CHAR_DEVICE_NAME,
PAPI_DEV_ATTR__ROCM_UINT_WAVEFRONT_SIZE,
PAPI_DEV_ATTR__ROCM_UINT_WORKGROUP_SIZE,
PAPI_DEV_ATTR__ROCM_UINT_WAVE_PER_CU,
PAPI_DEV_ATTR__ROCM_UINT_SHM_PER_WG,
PAPI_DEV_ATTR__ROCM_UINT_WG_DIM_X,
PAPI_DEV_ATTR__ROCM_UINT_WG_DIM_Y,
PAPI_DEV_ATTR__ROCM_UINT_WG_DIM_Z,
PAPI_DEV_ATTR__ROCM_UINT_GRD_DIM_X,
PAPI_DEV_ATTR__ROCM_UINT_GRD_DIM_Y,
PAPI_DEV_ATTR__ROCM_UINT_GRD_DIM_Z,
PAPI_DEV_ATTR__ROCM_UINT_CU_COUNT,
PAPI_DEV_ATTR__ROCM_UINT_SIMD_PER_CU,
PAPI_DEV_ATTR__ROCM_UINT_COMP_CAP_MAJOR,
PAPI_DEV_ATTR__ROCM_UINT_COMP_CAP_MINOR,
} PAPI_dev_attr_e;
void *handle;
int id;
int count;
int enum_modifier = PAPI_DEV_TYPE_ENUM__CPU | PAPI_DEV_TYPE_ENUM__CUDA;
while (PAPI_OK == PAPI_enum_dev_type(enum_modifier, &handle)) {
PAPI_get_dev_type_attr(handle, PAPI_DEV_TYPE_ATTR__INT_PAPI_ID, &id);
PAPI_get_dev_type_attr(handle, PAPI_DEV_TYPE_ATTR__INT_COUNT, &count);
if (PAPI_DEV_TYPE_ID__CUDA == id) {
for (int i = 0; i < count; ++i) {
unsigned int warp_size;
unsigned int cc_major, cc_minor;
PAPI_get_dev_attr(handle, i, PAPI_DEV_ATTR__CUDA_UINT_WARP_SIZE, &warp_size);
PAPI_get_dev_attr(handle, i, PAPI_DEV_ATTR__CUDA_UINT_COMP_CAP_MAJOR, &cc_major);
PAPI_get_dev_attr(handle, i, PAPI_DEV_ATTR__CUDA_UINT_COMP_CAP_MINOR, &cc_minor);
...
}
}
}
also lowkey important, bestie: PAPI_get_dev_type_attr() allows the user to query all device type attributes. It takes a device type handle, returned by PAPI_enum_dev_type, the device sequential id and an attribute to be queried for the device and returns the attribute value πβ¨
π See also π
PAPI_enum_dev_typePAPI_get_dev_attr
π Author π
Generated automatically by Doxygen for PAPI from the source code.
π«Ά Version π«Ά
Version 7.2.0.0 β Wed Jun 25 2025 19:30:48 π thatβs the whole page, bestie β generated automatically by Doxygen for PAPI from the source code, periodt π
β¨
π¦ where this page comes from
- nixos 26.05: papi 7.2.0
- nixpkgs unstable: papi 7.2.0
- opensuse-leap 16.0: papi-devel 7.2.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: papi-devel 7.2.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: papi-devel 7.2.0-160000.2.2 Β· BSD-3-Clause
- ubuntu resolute: libpapi-dev 7.2.0-2 Β· BSD-3-Clause
- ubuntu stonking: libpapi-dev 7.2.0-2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms