Update cl_profile_amd.h header to add support for stable GPU clocks
diff --git a/3-0/include/CL/internal/cl_profile_amd.h b/3-0/include/CL/internal/cl_profile_amd.h index 1c6e281..24d542c 100755 --- a/3-0/include/CL/internal/cl_profile_amd.h +++ b/3-0/include/CL/internal/cl_profile_amd.h
@@ -99,22 +99,50 @@ extern "C" { #endif /*__cplusplus*/ -typedef struct _cl_perfcounter_amd * cl_perfcounter_amd; +typedef struct _cl_perfcounter_amd* cl_perfcounter_amd; typedef cl_ulong cl_perfcounter_property; typedef cl_uint cl_perfcounter_info; /* cl_perfcounter_info */ -enum PerfcounterInfo -{ - CL_PERFCOUNTER_NONE = 0x0, - CL_PERFCOUNTER_REFERENCE_COUNT = 0x1, - CL_PERFCOUNTER_DATA = 0x2, - CL_PERFCOUNTER_GPU_BLOCK_INDEX = 0x3, - CL_PERFCOUNTER_GPU_COUNTER_INDEX = 0x4, - CL_PERFCOUNTER_GPU_EVENT_INDEX = 0x5, - CL_PERFCOUNTER_LAST +enum PerfcounterInfo { + CL_PERFCOUNTER_NONE = 0x0, + CL_PERFCOUNTER_REFERENCE_COUNT = 0x1, + CL_PERFCOUNTER_DATA = 0x2, + CL_PERFCOUNTER_GPU_BLOCK_INDEX = 0x3, + CL_PERFCOUNTER_GPU_COUNTER_INDEX = 0x4, + CL_PERFCOUNTER_GPU_EVENT_INDEX = 0x5, + CL_PERFCOUNTER_LAST }; +/********************************* +* Set device clock mode data +*********************************/ +enum cl_DeviceClockMode_AMD { + CL_DEVICE_CLOCK_MODE_DEFAULT_AMD = 0x0, /*Device clocks and other power settings are restored to default*/ + CL_DEVICE_CLOCK_MODE_QUERY_AMD = 0x1, /*Queries the current device clock ratios. Leaves the clock mode of the device unchanged*/ + CL_DEVICE_CLOCK_MODE_PROFILING_AMD = 0x2, /*Scale down from peak ratio*/ + CL_DEVICE_CLOCK_MODE_MINIMUMMEMORY_AMD = 0x3, /* Memory clock is set to the lowest available level*/ + CL_DEVICE_CLOCK_MODE_MINIMUMENGINE_AMD = 0x4, /*Engine clock is set to the lowest available level*/ + CL_DEVICE_CLOCK_MODE_PEAK_AMD = 0x5, /*Clocks set to maximum when possible. Fan set to maximum.*/ + CL_DEVICE_CLOCK_MODE_QUERYPROFILING_AMD = 0x6, /*Queries the profiling device clock ratios. Leaves the clock mode of the device unchanged*/ + CL_DEVICE_CLOCK_MODE_QUERYPEAK_AMD = 0x7, /*Queries the peak device clock ratios.Leaves the clock mode of the device unchanged*/ + CL_DEVICE_CLOCK_MODE_COUNT_AMD = 0x8, /*Maxmium count of device clock mode*/ +}; + +typedef struct _cl_set_device_clock_mode_input_amd +{ + /* specify the clock mode for AMD GPU device*/ + cl_DeviceClockMode_AMD clock_mode; +} cl_set_device_clock_mode_input_amd; + +typedef struct _cl_set_device_clock_mode_output_amd +{ + /*Ratio of current mem clock to peak clock as obtained from DeviceProperties::maxGpuClock*/ + cl_float memory_clock_ratio_to_peak; + /*Ratio of current gpu core clock to peak clock as obtained from DeviceProperties::maxGpuClock*/ + cl_float engine_clock_ratio_to_peak; +} cl_set_device_clock_mode_output_amd; + /*! \brief Creates a new HW performance counter * for the specified OpenCL context. * @@ -129,12 +157,9 @@ * * \return the created perfcounter object */ -extern CL_API_ENTRY cl_perfcounter_amd CL_API_CALL -clCreatePerfCounterAMD( - cl_device_id /* device */, - cl_perfcounter_property* /* properties */, - cl_int* /* errcode_ret */ -) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_perfcounter_amd CL_API_CALL clCreatePerfCounterAMD( + cl_device_id /* device */, cl_perfcounter_property* /* properties */, cl_int* /* errcode_ret */ + ) CL_API_SUFFIX__VERSION_1_0; /*! \brief Destroy a performance counter object. * @@ -144,10 +169,8 @@ * - CL_SUCCESS if the function is executed successfully. * - CL_INVALID_OPERATION if we failed to release the object */ -extern CL_API_ENTRY cl_int CL_API_CALL -clReleasePerfCounterAMD( - cl_perfcounter_amd /* perf_counter */ -) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleasePerfCounterAMD(cl_perfcounter_amd /* perf_counter */ + ) CL_API_SUFFIX__VERSION_1_0; /*! \brief Increments the perfcounter object reference count. * @@ -157,10 +180,8 @@ * - CL_SUCCESS if the function is executed successfully. * - CL_INVALID_OPERATION if we failed to release the object */ -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainPerfCounterAMD( - cl_perfcounter_amd /* perf_counter */ -) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainPerfCounterAMD(cl_perfcounter_amd /* perf_counter */ + ) CL_API_SUFFIX__VERSION_1_0; /*! \brief Enqueues the begin command for the specified counters. * @@ -174,15 +195,11 @@ * - CL_SUCCESS if the function is executed successfully. * - CL_INVALID_OPERATION if we failed to enqueue the begin operation */ -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBeginPerfCounterAMD( - cl_command_queue /* command_queue */, - cl_uint /* num_perf_counters */, - cl_perfcounter_amd* /* perf_counters */, - cl_uint /* num_events_in_wait_list */, - const cl_event* /* event_wait_list */, - cl_event* /* event */ -) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueBeginPerfCounterAMD( + cl_command_queue /* command_queue */, cl_uint /* num_perf_counters */, + cl_perfcounter_amd* /* perf_counters */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */ + ) CL_API_SUFFIX__VERSION_1_0; /*! \brief Enqueues the end command for the specified counters. * @@ -198,15 +215,11 @@ * - CL_SUCCESS if the function is executed successfully. * - CL_INVALID_OPERATION if we failed to enqueue the end operation */ -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueEndPerfCounterAMD( - cl_command_queue /* command_queue */, - cl_uint /* num_perf_counters */, - cl_perfcounter_amd* /* perf_counters */, - cl_uint /* num_events_in_wait_list */, - const cl_event* /* event_wait_list */, - cl_event* /* event */ -) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueEndPerfCounterAMD( + cl_command_queue /* command_queue */, cl_uint /* num_perf_counters */, + cl_perfcounter_amd* /* perf_counters */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */ + ) CL_API_SUFFIX__VERSION_1_0; /*! \brief Retrieves the results from the counter objects. * @@ -231,17 +244,18 @@ * - CL_PROFILING_INFO_NOT_AVAILABLE if event isn't finished. * - CL_INVALID_OPERATION if we failed to get the data */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPerfCounterInfoAMD( - cl_perfcounter_amd /* perf_counter */, - cl_perfcounter_info /* param_name */, - size_t /* param_value_size */, - void* /* param_value */, - size_t* /* param_value_size_ret */ -) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetPerfCounterInfoAMD( + cl_perfcounter_amd /* perf_counter */, cl_perfcounter_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, size_t* /* param_value_size_ret */ + ) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clSetDeviceClockModeAMD( + cl_device_id /* device*/, cl_set_device_clock_mode_input_amd /* Clock_Mode_Input */, + cl_set_device_clock_mode_output_amd* /* Clock_Mode_Output */ + ) CL_API_SUFFIX__VERSION_1_0; #ifdef __cplusplus } /*extern "C"*/ #endif /*__cplusplus*/ -#endif /*__CL_PROFILE_AMD_H*/ +#endif /*__CL_PROFILE_AMD_H*/