P4 to Git Change 1702079 by jujiang@JJ-OCL-w8 on 2018/11/02 16:01:11

SWDEV-155310 - Request for OpenCL extension function to set stable pstate

Affected files ...

... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_context.cpp#60 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_profile_amd.cpp#5 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_profile_amd.h#3 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#324 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#600 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#170 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.cpp#115 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.hpp#35 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.cpp#102 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.hpp#32 edit
Этот коммит содержится в:
foreman
2018-11-02 16:09:59 -04:00
родитель 9a9b44fa32
Коммит 1b6dee43bd
3 изменённых файлов: 52 добавлений и 0 удалений
+1
Просмотреть файл
@@ -574,6 +574,7 @@ CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddress(const char* func_na
break;
case 'S':
CL_EXTENSION_ENTRYPOINT_CHECK(clSetThreadTraceParamAMD);
CL_EXTENSION_ENTRYPOINT_CHECK(clSetDeviceClockModeAMD);
break;
case 'U':
CL_EXTENSION_ENTRYPOINT_CHECK(clUnloadPlatformAMD);
+17
Просмотреть файл
@@ -6,6 +6,7 @@
#include "platform/context.hpp"
#include "platform/command.hpp"
#include "platform/perfctr.hpp"
#include "device/device.hpp"
#include <cstring>
/*! \addtogroup API
@@ -347,6 +348,22 @@ RUNTIME_ENTRY(cl_int, clGetPerfCounterInfoAMD,
}
RUNTIME_EXIT
RUNTIME_ENTRY(cl_int, clSetDeviceClockModeAMD,
(cl_device_id device, cl_set_device_clock_mode_input_amd set_clock_mode_input,
cl_set_device_clock_mode_output_amd* set_clock_mode_output)) {
// Make sure we have a valid device object
if (!is_valid(device)) {
return CL_INVALID_DEVICE;
}
if (set_clock_mode_input.clock_mode >= CL_DEVICE_CLOCK_MODE_COUNT_AMD) {
return CL_INVALID_VALUE;
}
amd::Device* amdDevice = as_amd(device);
bool ret = amdDevice->SetClockMode(set_clock_mode_input, set_clock_mode_output);
return (ret == true)? CL_SUCCESS : CL_INVALID_OPERATION;
}
RUNTIME_EXIT
/*! @}
* @}
*/
+34
Просмотреть файл
@@ -114,6 +114,35 @@ enum PerfcounterInfo {
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.
*
@@ -220,6 +249,11 @@ extern CL_API_ENTRY cl_int CL_API_CALL clGetPerfCounterInfoAMD(
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*/