Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Export various vendor extension device attributes to python.
  • Loading branch information
Shane-J-Latham committed Jun 11, 2016
1 parent 8758099 commit fd9f311
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 1 deletion.
22 changes: 22 additions & 0 deletions doc/make_constants.py
Expand Up @@ -27,11 +27,16 @@
fission = ("cl_ext_device_fission", "2011.1")
nv_devattr = ("cl_nv_device_attribute_query", "0.92")
gl_sharing = ("cl_khr_gl_sharing", "0.92")
cl_spir_devattr = ("cl_khr_spir", "2016.2")
cl_11 = ("CL_1.1", "0.92")
cl_12 = ("CL_1.2", "2011.2")
cl_12_2015 = ("CL_1.2", "2015.2")
cl_20 = ("CL_2.0", "2015.2")
amd_devattr = ("cl_amd_device_attribute_query", "2013.2")
qcom_hp_devattr = ("cl_qcom_ext_host_ptr", "2016.2")
intel_me_devattr = ("cl_intel_advanced_motion_estimation", "2016.2")
intel_ss_devattr = ("cl_intel_simultaneous_sharing", "2016.2")
altera_temp_devattr = ("cl_altera_device_temperature", "2016.2")


def get_extra_lines(tup):
Expand Down Expand Up @@ -90,13 +95,17 @@ def get_extra_lines(tup):
"NATIVE_VECTOR_WIDTH_DOUBLE": cl_11,
"NATIVE_VECTOR_WIDTH_HALF": cl_11,
"OPENCL_C_VERSION": cl_11,
"SPIR_VERSIONS": cl_spir_devattr,
"COMPUTE_CAPABILITY_MAJOR_NV": nv_devattr,
"COMPUTE_CAPABILITY_MINOR_NV": nv_devattr,
"REGISTERS_PER_BLOCK_NV": nv_devattr,
"WARP_SIZE_NV": nv_devattr,
"GPU_OVERLAP_NV": nv_devattr,
"KERNEL_EXEC_TIMEOUT_NV": nv_devattr,
"INTEGRATED_MEMORY_NV": nv_devattr,
"ATTRIBUTE_ASYNC_ENGINE_COUNT_NV": nv_devattr,
"PCI_BUS_ID_NV": nv_devattr,
"PCI_BUS_SLOT_NV": nv_devattr,

"DOUBLE_FP_CONFIG":
("cl_khr_fp64", "2011.1"),
Expand All @@ -116,6 +125,19 @@ def get_extra_lines(tup):
"GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD": amd_devattr,
"LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD": amd_devattr,
"LOCAL_MEM_BANKS_AMD": amd_devattr,
"THREAD_TRACE_SUPPORTED_AMD": amd_devattr,
"GFXIP_MAJOR_AMD": amd_devattr,
"GFXIP_MINOR_AMD": amd_devattr,
"AVAILABLE_ASYNC_QUEUES_AMD": amd_devattr,

"ME_VERSION_INTEL": intel_me_devattr,
"SIMULTANEOUS_INTEROPS_INTEL": intel_ss_devattr,
"NUM_SIMULTANEOUS_INTEROPS_INTEL": intel_ss_devattr,

"EXT_MEM_PADDING_IN_BYTES_QCOM": qcom_hp_devattr,
"PAGE_SIZE_QCOM": qcom_devattr,

"CORE_TEMPERATURE_ALTERA": altera_temp_devattr,

"MAX_ATOMIC_COUNTERS_EXT":
("cl_ext_atomic_counters_64", "2013.2"),
Expand Down
48 changes: 47 additions & 1 deletion src/c_wrapper/device.cpp
Expand Up @@ -143,6 +143,15 @@ device::get_info(cl_uint param_name) const
case CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV:
case CL_DEVICE_REGISTERS_PER_BLOCK_NV:
case CL_DEVICE_WARP_SIZE_NV:
#ifdef CL_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT_NV
case CL_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT_NV:
#endif
#ifdef CL_DEVICE_PCI_BUS_ID_NV
case CL_DEVICE_PCI_BUS_ID_NV:
#endif
#ifdef CL_DEVICE_PCI_SLOT_ID_NV
case CL_DEVICE_PCI_SLOT_ID_NV:
#endif
return DEV_GET_INT_INF(cl_uint);
case CL_DEVICE_GPU_OVERLAP_NV:
case CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV:
Expand Down Expand Up @@ -223,6 +232,10 @@ device::get_info(cl_uint param_name) const
case CL_DEVICE_TOPOLOGY_AMD:
#endif
*/
#ifdef CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD
case CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD:
return DEV_GET_INT_INF(cl_bool);
#endif
#ifdef CL_DEVICE_BOARD_NAME_AMD
case CL_DEVICE_BOARD_NAME_AMD: ;
return pyopencl_get_str_info(Device, PYOPENCL_CL_CASTABLE_THIS, param_name);
Expand Down Expand Up @@ -259,12 +272,45 @@ device::get_info(cl_uint param_name) const
#ifdef CL_DEVICE_LOCAL_MEM_BANKS_AMD
case CL_DEVICE_LOCAL_MEM_BANKS_AMD:
#endif

#ifdef CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT
case CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT:
#endif
#ifdef CL_DEVICE_GFXIP_MAJOR_AMD
case CL_DEVICE_GFXIP_MAJOR_AMD:
#endif
#ifdef CL_DEVICE_GFXIP_MINOR_AMD
case CL_DEVICE_GFXIP_MINOR_AMD:
#endif
#ifdef CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD
case CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD:
#endif
return DEV_GET_INT_INF(cl_uint);
// }}}
#ifdef CL_DEVICE_ME_VERSION_INTEL
case CL_DEVICE_ME_VERSION_INTEL:
#endif
#ifdef CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM
case CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM:
#endif
#ifdef CL_DEVICE_PAGE_SIZE_QCOM
case CL_DEVICE_PAGE_SIZE_QCOM:
#endif
#ifdef CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL
case CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL:
#endif
return DEV_GET_INT_INF(cl_uint);
#ifdef CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL
case CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL:
return pyopencl_get_array_info(cl_uint, Device, PYOPENCL_CL_CASTABLE_THIS, param_name);
#endif
#ifdef CL_DEVICE_SPIR_VERSIONS
case CL_DEVICE_SPIR_VERSIONS:
return pyopencl_get_str_info(Device, PYOPENCL_CL_CASTABLE_THIS, param_name);
#endif
#ifdef CL_DEVICE_CORE_TEMPERATURE_ALTERA
case CL_DEVICE_CORE_TEMPERATURE_ALTERA:
return DEV_GET_INT_INF(cl_int);
#endif

default:
throw clerror("Device.get_info", CL_INVALID_VALUE);
Expand Down
52 changes: 52 additions & 0 deletions src/c_wrapper/wrap_constants.cpp
Expand Up @@ -201,6 +201,16 @@ void populate_constants(void(*add)(const char*, const char*, int64_t value))
ADD_ATTR("device_info", DEVICE_, GPU_OVERLAP_NV);
ADD_ATTR("device_info", DEVICE_, KERNEL_EXEC_TIMEOUT_NV);
ADD_ATTR("device_info", DEVICE_, INTEGRATED_MEMORY_NV);
// Nvidia specific device attributes, not defined in Khronos CL/cl_ext.h
#ifdef CL_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT_NV
ADD_ATTR("device_info", DEVICE_, ATTRIBUTE_ASYNC_ENGINE_COUNT_NV);
#endif
#ifdef CL_DEVICE_PCI_BUS_ID_NV
ADD_ATTR("device_info", DEVICE_, PCI_BUS_ID_NV);
#endif
#ifdef CL_DEVICE_PCI_SLOT_ID_NV
ADD_ATTR("device_info", DEVICE_, PCI_SLOT_ID_NV);
#endif
#endif
#ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD
ADD_ATTR("device_info", DEVICE_, PROFILING_TIMER_OFFSET_AMD);
Expand Down Expand Up @@ -242,6 +252,19 @@ void populate_constants(void(*add)(const char*, const char*, int64_t value))
ADD_ATTR("device_info", DEVICE_, LOCAL_MEM_BANKS_AMD);
#endif

#ifdef CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD
ADD_ATTR("device_info", DEVICE_, THREAD_TRACE_SUPPORTED_AMD);
#endif
#ifdef CL_DEVICE_GFXIP_MAJOR_AMD
ADD_ATTR("device_info", DEVICE_, GFXIP_MAJOR_AMD);
#endif
#ifdef CL_DEVICE_GFXIP_MINOR_AMD
ADD_ATTR("device_info", DEVICE_, GFXIP_MINOR_AMD);
#endif
#ifdef CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD
ADD_ATTR("device_info", DEVICE_, AVAILABLE_ASYNC_QUEUES_AMD);
#endif

#ifdef CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT
ADD_ATTR("device_info", DEVICE_, MAX_ATOMIC_COUNTERS_EXT);
#endif
Expand Down Expand Up @@ -280,7 +303,36 @@ void populate_constants(void(*add)(const char*, const char*, int64_t value))
ADD_ATTR("device_info", DEVICE_, PREFERRED_GLOBAL_ATOMIC_ALIGNMENT);
ADD_ATTR("device_info", DEVICE_, PREFERRED_LOCAL_ATOMIC_ALIGNMENT);
#endif
/* cl_intel_advanced_motion_estimation */
#ifdef CL_DEVICE_ME_VERSION_INTEL
ADD_ATTR("device_info", DEVICE_, ME_VERSION_INTEL);
#endif

/* cl_qcom_ext_host_ptr */
#ifdef CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM
ADD_ATTR("device_info", DEVICE_, EXT_MEM_PADDING_IN_BYTES_QCOM);
#endif
#ifdef CL_DEVICE_PAGE_SIZE_QCOM
ADD_ATTR("device_info", DEVICE_, PAGE_SIZE_QCOM);
#endif

/* cl_khr_spir */
#ifdef CL_DEVICE_SPIR_VERSIONS
ADD_ATTR("device_info", DEVICE_, SPIR_VERSIONS);
#endif

/* cl_altera_device_temperature */
#ifdef CL_DEVICE_CORE_TEMPERATURE_ALTERA
ADD_ATTR("device_info", DEVICE_, CORE_TEMPERATURE_ALTERA);
#endif

/* cl_intel_simultaneous_sharing */
#ifdef CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL
ADD_ATTR("device_info", DEVICE_, SIMULTANEOUS_INTEROPS_INTEL);
#endif
#ifdef CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL
ADD_ATTR("device_info", DEVICE_, NUM_SIMULTANEOUS_INTEROPS_INTEL);
#endif

// device_fp_config
ADD_ATTR("device_fp_config", FP_, DENORM);
Expand Down

0 comments on commit fd9f311

Please sign in to comment.