Provided by: libpapi-dev_7.0.0-3_amd64 bug

NAME

       PAPI_get_dev_attr -

       returns device attributes

SYNOPSIS

Detailed Description

       Return values:
           ENOSUPP invalid/unsupported attribute

       Parameters:
           handle opaque handle for device, obtained through PAPI_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);
                       ...
                   }
               }
           }

            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_type

           PAPI_get_dev_attr

Author

       Generated automatically by Doxygen for PAPI from the source code.