mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-10 15:12:56 +08:00
Update zesFrequencySetRange implementation
While setting max frequency also clamp boost frequency to max frequency. Clamping boost frequency to max, will ensure that with workload execution, max frequency that we are setting would not be violated. Related-To: LOCI-3075 Signed-off-by: Jitendra Sharma <jitendra.sharma@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
54eee2a88b
commit
34028355af
@@ -227,7 +227,7 @@ ze_result_t LinuxFrequencyImp::setMax(double max) {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return ZE_RESULT_SUCCESS;
|
||||
return pSysfsAccess->write(boostFreqFile, max);
|
||||
}
|
||||
|
||||
ze_result_t LinuxFrequencyImp::getRequest(double &request) {
|
||||
@@ -319,6 +319,7 @@ void LinuxFrequencyImp::init() {
|
||||
if (pSysfsAccess->directoryExists(baseDir)) {
|
||||
minFreqFile = baseDir + "rps_min_freq_mhz";
|
||||
maxFreqFile = baseDir + "rps_max_freq_mhz";
|
||||
boostFreqFile = baseDir + "rps_boost_freq_mhz";
|
||||
requestFreqFile = baseDir + "punit_req_freq_mhz";
|
||||
tdpFreqFile = baseDir + "rapl_PL1_freq_mhz";
|
||||
actualFreqFile = baseDir + "rps_act_freq_mhz";
|
||||
@@ -333,6 +334,7 @@ void LinuxFrequencyImp::init() {
|
||||
} else {
|
||||
minFreqFile = "gt_min_freq_mhz";
|
||||
maxFreqFile = "gt_max_freq_mhz";
|
||||
boostFreqFile = "gt_boost_freq_mhz";
|
||||
requestFreqFile = "gt_cur_freq_mhz";
|
||||
tdpFreqFile = "rapl_PL1_freq_mhz";
|
||||
actualFreqFile = "gt_act_freq_mhz";
|
||||
|
||||
@@ -54,6 +54,7 @@ class LinuxFrequencyImp : public OsFrequency, NEO::NonCopyableOrMovableClass {
|
||||
private:
|
||||
std::string minFreqFile;
|
||||
std::string maxFreqFile;
|
||||
std::string boostFreqFile;
|
||||
std::string requestFreqFile;
|
||||
std::string tdpFreqFile;
|
||||
std::string actualFreqFile;
|
||||
|
||||
@@ -245,7 +245,7 @@ ze_result_t LinuxFrequencyImp::setMax(double max) {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return ZE_RESULT_SUCCESS;
|
||||
return pSysfsAccess->write(boostFreqFile, max);
|
||||
}
|
||||
|
||||
ze_result_t LinuxFrequencyImp::getRequest(double &request) {
|
||||
@@ -338,6 +338,7 @@ void LinuxFrequencyImp::init() {
|
||||
minFreqFile = baseDir + "rps_min_freq_mhz";
|
||||
minDefaultFreqFile = baseDir + ".defaults/rps_min_freq_mhz";
|
||||
maxFreqFile = baseDir + "rps_max_freq_mhz";
|
||||
boostFreqFile = baseDir + "rps_boost_freq_mhz";
|
||||
maxDefaultFreqFile = baseDir + ".defaults/rps_max_freq_mhz";
|
||||
requestFreqFile = baseDir + "punit_req_freq_mhz";
|
||||
tdpFreqFile = baseDir + "rapl_PL1_freq_mhz";
|
||||
@@ -353,6 +354,7 @@ void LinuxFrequencyImp::init() {
|
||||
} else {
|
||||
minFreqFile = "gt_min_freq_mhz";
|
||||
maxFreqFile = "gt_max_freq_mhz";
|
||||
boostFreqFile = "gt_boost_freq_mhz";
|
||||
requestFreqFile = "gt_cur_freq_mhz";
|
||||
tdpFreqFile = "rapl_PL1_freq_mhz";
|
||||
actualFreqFile = "gt_act_freq_mhz";
|
||||
|
||||
@@ -55,6 +55,7 @@ class LinuxFrequencyImp : public OsFrequency, NEO::NonCopyableOrMovableClass {
|
||||
private:
|
||||
std::string minFreqFile;
|
||||
std::string maxFreqFile;
|
||||
std::string boostFreqFile;
|
||||
std::string minDefaultFreqFile;
|
||||
std::string maxDefaultFreqFile;
|
||||
std::string requestFreqFile;
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace ult {
|
||||
|
||||
const std::string minFreqFile("gt/gt0/rps_min_freq_mhz");
|
||||
const std::string maxFreqFile("gt/gt0/rps_max_freq_mhz");
|
||||
const std::string boostFreqFile("gt/gt0/rps_boost_freq_mhz");
|
||||
const std::string requestFreqFile("gt/gt0/punit_req_freq_mhz");
|
||||
const std::string tdpFreqFile("gt/gt0/rapl_PL1_freq_mhz");
|
||||
const std::string actualFreqFile("gt/gt0/rps_act_freq_mhz");
|
||||
@@ -27,6 +28,7 @@ const std::string throttleReasonThermalFile("gt/gt0/throttle_reason_thermal");
|
||||
|
||||
const std::string minFreqFileLegacy("gt_min_freq_mhz");
|
||||
const std::string maxFreqFileLegacy("gt_max_freq_mhz");
|
||||
const std::string boostFreqFileLegacy("gt_boost_freq_mhz");
|
||||
const std::string requestFreqFileLegacy("gt_cur_freq_mhz");
|
||||
const std::string tdpFreqFileLegacy("rapl_PL1_freq_mhz");
|
||||
const std::string actualFreqFileLegacy("gt_act_freq_mhz");
|
||||
@@ -45,6 +47,7 @@ template <>
|
||||
struct Mock<FrequencySysfsAccess> : public FrequencySysfsAccess {
|
||||
double mockMin = 0;
|
||||
double mockMax = 0;
|
||||
double mockBoost = 0;
|
||||
double mockRequest = 0;
|
||||
double mockTdp = 0;
|
||||
double mockActual = 0;
|
||||
@@ -265,28 +268,26 @@ struct Mock<FrequencySysfsAccess> : public FrequencySysfsAccess {
|
||||
ze_result_t setValLegacy(const std::string file, const double val) {
|
||||
if (file.compare(minFreqFileLegacy) == 0) {
|
||||
mockMin = val;
|
||||
}
|
||||
if (file.compare(maxFreqFileLegacy) == 0) {
|
||||
} else if (file.compare(maxFreqFileLegacy) == 0) {
|
||||
mockMax = val;
|
||||
}
|
||||
if (file.compare(requestFreqFileLegacy) == 0) {
|
||||
} else if (file.compare(boostFreqFileLegacy) == 0) {
|
||||
mockBoost = val;
|
||||
} else if (file.compare(requestFreqFileLegacy) == 0) {
|
||||
mockRequest = val;
|
||||
}
|
||||
if (file.compare(tdpFreqFileLegacy) == 0) {
|
||||
} else if (file.compare(tdpFreqFileLegacy) == 0) {
|
||||
mockTdp = val;
|
||||
}
|
||||
if (file.compare(actualFreqFileLegacy) == 0) {
|
||||
} else if (file.compare(actualFreqFileLegacy) == 0) {
|
||||
mockActual = val;
|
||||
}
|
||||
if (file.compare(efficientFreqFileLegacy) == 0) {
|
||||
} else if (file.compare(efficientFreqFileLegacy) == 0) {
|
||||
mockEfficient = val;
|
||||
}
|
||||
if (file.compare(maxValFreqFileLegacy) == 0) {
|
||||
} else if (file.compare(maxValFreqFileLegacy) == 0) {
|
||||
mockMaxVal = val;
|
||||
}
|
||||
if (file.compare(minValFreqFileLegacy) == 0) {
|
||||
} else if (file.compare(minValFreqFileLegacy) == 0) {
|
||||
mockMinVal = val;
|
||||
} else {
|
||||
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
|
||||
}
|
||||
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -325,6 +326,9 @@ struct Mock<FrequencySysfsAccess> : public FrequencySysfsAccess {
|
||||
if (file.compare(maxFreqFile) == 0) {
|
||||
mockMax = val;
|
||||
}
|
||||
if (file.compare(boostFreqFile) == 0) {
|
||||
mockBoost = val;
|
||||
}
|
||||
if (file.compare(requestFreqFile) == 0) {
|
||||
mockRequest = val;
|
||||
}
|
||||
|
||||
@@ -277,6 +277,7 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFreq
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFrequencyGetRange(handle, &limits));
|
||||
EXPECT_DOUBLE_EQ(minFreq, limits.min);
|
||||
EXPECT_DOUBLE_EQ(newMax, limits.max);
|
||||
EXPECT_DOUBLE_EQ(pSysfsAccess->mockBoost, limits.max);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -296,6 +297,7 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFreq
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFrequencyGetRange(handle, &limits));
|
||||
EXPECT_DOUBLE_EQ(newMin, limits.min);
|
||||
EXPECT_DOUBLE_EQ(maxFreq, limits.max);
|
||||
EXPECT_DOUBLE_EQ(pSysfsAccess->mockBoost, limits.max);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -580,7 +582,7 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFreq
|
||||
EXPECT_EQ(setAllThrottleReasonsExceptPL2, state.throttleReasons);
|
||||
}
|
||||
|
||||
TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFrequencyGetRangeWithLegacyPathThenVerifyzesFrequencyGetRangeTestCallSucceeds) {
|
||||
TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeWithLegacyPathThenVerifyzesFrequencySetRangeTestCallSucceeds) {
|
||||
ON_CALL(*pSysfsAccess.get(), read(_, Matcher<double &>(_)))
|
||||
.WillByDefault(::testing::Invoke(pSysfsAccess.get(), &Mock<FrequencySysfsAccess>::getValLegacy));
|
||||
ON_CALL(*pSysfsAccess.get(), write(_, _))
|
||||
@@ -602,6 +604,8 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFreq
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFrequencyGetRange(handle, &limits));
|
||||
EXPECT_DOUBLE_EQ(minFreqLegacy, limits.min);
|
||||
EXPECT_DOUBLE_EQ(maxFreqLegacy, limits.max);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFrequencySetRange(handle, &limits));
|
||||
EXPECT_DOUBLE_EQ(pSysfsAccess->mockBoost, limits.max);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user