enable CPU map and multiple streams for ARM Linux (#17450)

* enable CPU map for ARM Linux based on freqency information

* fix code style issue

* fix code style issue

* remove 'streams = 1' WA for ARM linux

* update for typo and comments

* update for comments

* keep  WA

* keep WA of streams = 1 for ARM Linux

* update num_streams WA for ARM Linux in test case

* update for comments

* update for comments

* update for comments

* update for comments

* update for merge conflict

* update and add test case for MTL
This commit is contained in:
Wanglei Shen
2023-06-03 17:07:02 +08:00
committed by GitHub
parent ec0daa5b10
commit a0c8fdbd86
4 changed files with 939 additions and 67 deletions

View File

@@ -23,24 +23,79 @@ CPU::CPU() {
std::vector<std::vector<std::string>> system_info_table;
_num_threads = parallel_get_max_threads();
auto GetCatchInfoLinux = [&]() {
_processors = sysconf(_SC_NPROCESSORS_ONLN);
system_info_table.resize(_processors, std::vector<std::string>(3));
auto get_cache_info_linux = [&]() {
int cpu_index = 0;
int cache_index = 0;
int cache_files = 3;
for (int n = 0; n < _processors; n++) {
for (int m = 0; m < 3; m++) {
int Ln = (m == 0) ? m : m + 1;
std::vector<std::string> one_info(cache_files);
std::ifstream cache_file("/sys/devices/system/cpu/cpu" + std::to_string(n) + "/cache/index" +
std::to_string(Ln) + "/shared_cpu_list");
while (1) {
for (int n = 0; n < cache_files; n++) {
cache_index = (n == 0) ? n : n + 1;
std::ifstream cache_file("/sys/devices/system/cpu/cpu" + std::to_string(cpu_index) + "/cache/index" +
std::to_string(cache_index) + "/shared_cpu_list");
if (!cache_file.is_open()) {
return -1;
cache_index = -1;
break;
}
std::string cache_info;
std::getline(cache_file, cache_info);
system_info_table[n][m] += cache_info;
one_info[n] = cache_info;
}
if (cache_index == -1) {
if (cpu_index == 0) {
return -1;
} else {
return 0;
}
} else {
system_info_table.push_back(one_info);
cpu_index++;
}
}
return 0;
};
auto get_freq_info_linux = [&]() {
int cpu_index = 0;
int cache_index = 0;
std::vector<std::string> file_name = {"/topology/core_cpus_list",
"/topology/physical_package_id",
"/cpufreq/cpuinfo_max_freq"};
int num_of_files = file_name.size();
std::vector<std::string> one_info(num_of_files);
while (1) {
for (int n = 0; n < num_of_files; n++) {
cache_index = n;
std::ifstream cache_file("/sys/devices/system/cpu/cpu" + std::to_string(cpu_index) + file_name[n]);
if (!cache_file.is_open()) {
cache_index = -1;
break;
}
std::string cache_info;
std::getline(cache_file, cache_info);
one_info[n] = cache_info;
}
if (cache_index == -1) {
if (cpu_index == 0) {
return -1;
} else {
return 0;
}
} else {
system_info_table.push_back(one_info);
cpu_index++;
}
}
return 0;
};
@@ -116,17 +171,27 @@ CPU::CPU() {
}
};
if (!GetCatchInfoLinux()) {
parse_processor_info_linux(_processors,
system_info_table,
_numa_nodes,
_cores,
_proc_type_table,
_cpu_mapping_table);
if (check_valid_cpu() < 0) {
OPENVINO_THROW("CPU affinity check failed. No CPU is eligible to run inference.");
};
} else {
if (!get_cache_info_linux()) {
parse_cache_info_linux(system_info_table,
_processors,
_numa_nodes,
_cores,
_proc_type_table,
_cpu_mapping_table);
}
if ((_proc_type_table.size() == 0) || (_proc_type_table[0][MAIN_CORE_PROC] == 0)) {
if (!get_freq_info_linux()) {
parse_freq_info_linux(system_info_table,
_processors,
_numa_nodes,
_cores,
_proc_type_table,
_cpu_mapping_table);
}
}
if ((_proc_type_table.size() == 0) || (_proc_type_table[0][MAIN_CORE_PROC] == 0)) {
/*Previous CPU resource based on calculation*/
std::ifstream cpuinfo("/proc/cpuinfo");
std::vector<int> processors;
@@ -158,21 +223,26 @@ CPU::CPU() {
if (_cores == 0) {
_cores = _processors;
}
} else {
if (check_valid_cpu() < 0) {
OPENVINO_THROW("CPU affinity check failed. No CPU is eligible to run inference.");
};
}
std::vector<std::vector<std::string>>().swap(system_info_table);
}
void parse_processor_info_linux(const int _processors,
const std::vector<std::vector<std::string>> system_info_table,
int& _sockets,
int& _cores,
std::vector<std::vector<int>>& _proc_type_table,
std::vector<std::vector<int>>& _cpu_mapping_table) {
void parse_cache_info_linux(const std::vector<std::vector<std::string>> system_info_table,
int& _processors,
int& _sockets,
int& _cores,
std::vector<std::vector<int>>& _proc_type_table,
std::vector<std::vector<int>>& _cpu_mapping_table) {
int n_group = 0;
_processors = system_info_table.size();
_cpu_mapping_table.resize(_processors, std::vector<int>(CPU_MAP_TABLE_SIZE, -1));
auto UpdateProcMapping = [&](const int nproc) {
auto update_proc_map_info = [&](const int nproc) {
if (-1 == _cpu_mapping_table[nproc][CPU_MAP_CORE_ID]) {
int core_1 = 0;
int core_2 = 0;
@@ -209,7 +279,6 @@ void parse_processor_info_linux(const int _processors,
_proc_type_table[0][ALL_PROC] += 2;
_proc_type_table[0][MAIN_CORE_PROC]++;
_proc_type_table[0][HYPER_THREADING_PROC]++;
} else if ((endpos = system_info_table[nproc][1].find('-', pos)) != std::string::npos) {
sub_str = system_info_table[nproc][1].substr(pos, endpos);
core_1 = std::stoi(sub_str);
@@ -229,7 +298,6 @@ void parse_processor_info_linux(const int _processors,
}
n_group++;
} else {
core_1 = std::stoi(system_info_table[nproc][0]);
@@ -275,14 +343,13 @@ void parse_processor_info_linux(const int _processors,
for (int m = core_1; m <= core_2; m++) {
_cpu_mapping_table[m][CPU_MAP_SOCKET_ID] = _sockets;
UpdateProcMapping(m);
update_proc_map_info(m);
}
} else if (pos != std::string::npos) {
sub_str = system_info_table[n][2].substr(pos);
core_1 = std::stoi(sub_str);
_cpu_mapping_table[core_1][CPU_MAP_SOCKET_ID] = _sockets;
UpdateProcMapping(core_1);
update_proc_map_info(core_1);
endpos = pos;
}
@@ -307,4 +374,103 @@ void parse_processor_info_linux(const int _processors,
}
};
void parse_freq_info_linux(const std::vector<std::vector<std::string>> system_info_table,
int& _processors,
int& _sockets,
int& _cores,
std::vector<std::vector<int>>& _proc_type_table,
std::vector<std::vector<int>>& _cpu_mapping_table) {
int freq_max = 0;
bool ecore_enabled = false;
bool ht_enabled = false;
_processors = system_info_table.size();
_sockets = 0;
_cores = 0;
_cpu_mapping_table.resize(_processors, std::vector<int>(CPU_MAP_TABLE_SIZE, -1));
std::vector<int> line_value_0(PROC_TYPE_TABLE_SIZE, 0);
for (int n = 0; n < _processors; n++) {
if (-1 == _cpu_mapping_table[n][CPU_MAP_SOCKET_ID]) {
std::string::size_type pos = 0;
std::string::size_type endpos1 = 0;
std::string::size_type endpos2 = 0;
std::string sub_str;
int core_1 = 0;
int core_2 = 0;
if (((endpos1 = system_info_table[n][0].find(',', pos)) != std::string::npos) ||
((endpos2 = system_info_table[n][0].find('-', pos)) != std::string::npos)) {
endpos1 = (endpos1 != std::string::npos) ? endpos1 : endpos2;
sub_str = system_info_table[n][0].substr(pos, endpos1);
core_1 = std::stoi(sub_str);
sub_str = system_info_table[n][0].substr(endpos1 + 1);
core_2 = std::stoi(sub_str);
_cpu_mapping_table[core_1][CPU_MAP_PROCESSOR_ID] = core_1;
_cpu_mapping_table[core_1][CPU_MAP_SOCKET_ID] = std::stoi(system_info_table[core_1][1]);
_cpu_mapping_table[core_1][CPU_MAP_CORE_ID] = _cores;
_cpu_mapping_table[core_1][CPU_MAP_CORE_TYPE] = HYPER_THREADING_PROC;
_cpu_mapping_table[core_1][CPU_MAP_GROUP_ID] = _cores;
_cpu_mapping_table[core_2][CPU_MAP_PROCESSOR_ID] = core_2;
_cpu_mapping_table[core_2][CPU_MAP_SOCKET_ID] = _cpu_mapping_table[core_1][CPU_MAP_SOCKET_ID];
_cpu_mapping_table[core_2][CPU_MAP_CORE_ID] = _cpu_mapping_table[core_1][CPU_MAP_CORE_ID];
_cpu_mapping_table[core_2][CPU_MAP_CORE_TYPE] = MAIN_CORE_PROC;
_cpu_mapping_table[core_2][CPU_MAP_GROUP_ID] = _cpu_mapping_table[core_1][CPU_MAP_GROUP_ID];
ht_enabled = true;
int core_freq = std::stoi(system_info_table[core_1][2]);
freq_max = std::max(core_freq, freq_max);
} else if (system_info_table[n][0].size() > 0) {
core_1 = std::stoi(system_info_table[n][0]);
_cpu_mapping_table[core_1][CPU_MAP_PROCESSOR_ID] = core_1;
_cpu_mapping_table[core_1][CPU_MAP_SOCKET_ID] = std::stoi(system_info_table[core_1][1]);
_cpu_mapping_table[core_1][CPU_MAP_CORE_ID] = _cores;
int core_freq = std::stoi(system_info_table[core_1][2]);
if (((0 == freq_max) || (core_freq >= freq_max * 0.95)) && (!ht_enabled)) {
freq_max = std::max(core_freq, freq_max);
_cpu_mapping_table[core_1][CPU_MAP_CORE_TYPE] = MAIN_CORE_PROC;
} else {
_cpu_mapping_table[core_1][CPU_MAP_CORE_TYPE] = EFFICIENT_CORE_PROC;
ecore_enabled = true;
}
_cpu_mapping_table[core_1][CPU_MAP_GROUP_ID] = _cores;
}
_sockets = std::max(_sockets, _cpu_mapping_table[core_1][CPU_MAP_SOCKET_ID]);
_cores++;
}
}
if ((_sockets >= 1) && (ecore_enabled)) {
_sockets = 0;
}
if (_sockets >= 1) {
_proc_type_table.resize(_sockets + 2, std::vector<int>(PROC_TYPE_TABLE_SIZE, 0));
for (int n = 0; n < _processors; n++) {
_proc_type_table[0][ALL_PROC]++;
_proc_type_table[_cpu_mapping_table[n][CPU_MAP_SOCKET_ID] + 1][ALL_PROC]++;
_proc_type_table[0][_cpu_mapping_table[n][CPU_MAP_CORE_TYPE]]++;
_proc_type_table[_cpu_mapping_table[n][CPU_MAP_SOCKET_ID] + 1][_cpu_mapping_table[n][CPU_MAP_CORE_TYPE]]++;
}
_sockets++;
} else {
_proc_type_table.resize(1, std::vector<int>(PROC_TYPE_TABLE_SIZE, 0));
for (int n = 0; n < _processors; n++) {
_proc_type_table[0][ALL_PROC]++;
_proc_type_table[0][_cpu_mapping_table[n][CPU_MAP_CORE_TYPE]]++;
_cpu_mapping_table[n][CPU_MAP_SOCKET_ID] = 0;
}
_sockets = 1;
}
};
} // namespace ov

View File

@@ -35,21 +35,38 @@ CPU& cpu_info();
#ifdef __linux__
/**
* @brief Parse processors infomation on Linux
* @param[in] _processors total number for processors in system.
* @brief Parse CPU cache infomation on Linux
* @param[in] _system_info_table system information for this platform.
* @param[out] _processors total number for processors in system.
* @param[out] _sockets total number for sockets in system
* @param[out] _cores total number for physical CPU cores in system
* @param[out] _proc_type_table summary table of number of processors per type
* @param[out] _cpu_mapping_table CPU mapping table for each processor
* @return
*/
void parse_processor_info_linux(const int _processors,
const std::vector<std::vector<std::string>> _system_info_table,
int& _sockets,
int& _cores,
std::vector<std::vector<int>>& _proc_type_table,
std::vector<std::vector<int>>& _cpu_mapping_table);
void parse_cache_info_linux(const std::vector<std::vector<std::string>> _system_info_table,
int& _processors,
int& _sockets,
int& _cores,
std::vector<std::vector<int>>& _proc_type_table,
std::vector<std::vector<int>>& _cpu_mapping_table);
/**
* @brief Parse CPU frequency infomation on Linux
* @param[in] _system_info_table system information for this platform.
* @param[out] _processors total number for processors in system.
* @param[out] _sockets total number for sockets in system
* @param[out] _cores total number for physical CPU cores in system
* @param[out] _proc_type_table summary table of number of processors per type
* @param[out] _cpu_mapping_table CPU mapping table for each processor
* @return
*/
void parse_freq_info_linux(const std::vector<std::vector<std::string>> _system_info_table,
int& _processors,
int& _sockets,
int& _cores,
std::vector<std::vector<int>>& _proc_type_table,
std::vector<std::vector<int>>& _cpu_mapping_table);
#endif
#if defined(_WIN32)

View File

@@ -25,24 +25,26 @@ struct LinuxCpuMapTestCase {
std::vector<std::vector<std::string>> system_info_table;
};
class LinuxCpuMapParserTests : public CommonTestUtils::TestsCommon,
public testing::WithParamInterface<std::tuple<LinuxCpuMapTestCase>> {
class LinuxCpuMapCacheParserTests : public CommonTestUtils::TestsCommon,
public testing::WithParamInterface<std::tuple<LinuxCpuMapTestCase>> {
public:
void SetUp() override {
const auto& test_data = std::get<0>(GetParam());
int test_processors = 0;
int test_sockets = 0;
int test_cores = 0;
std::vector<std::vector<int>> test_proc_type_table;
std::vector<std::vector<int>> test_cpu_mapping_table;
ov::parse_processor_info_linux(test_data._processors,
test_data.system_info_table,
test_sockets,
test_cores,
test_proc_type_table,
test_cpu_mapping_table);
ov::parse_cache_info_linux(test_data.system_info_table,
test_processors,
test_sockets,
test_cores,
test_proc_type_table,
test_cpu_mapping_table);
ASSERT_EQ(test_data._processors, test_processors);
ASSERT_EQ(test_data._sockets, test_sockets);
ASSERT_EQ(test_data._cores, test_cores);
ASSERT_EQ(test_data._proc_type_table, test_proc_type_table);
@@ -50,7 +52,7 @@ public:
}
};
LinuxCpuMapTestCase _2sockets_104cores_hyperthreading = {
LinuxCpuMapTestCase cache_2sockets_104cores_hyperthreading = {
208,
2,
104,
@@ -268,7 +270,7 @@ LinuxCpuMapTestCase _2sockets_104cores_hyperthreading = {
{{"102,206"}, {"102,206"}, {"52-103,156-207"}}, {{"103,207"}, {"103,207"}, {"52-103,156-207"}},
},
};
LinuxCpuMapTestCase _2sockets_24cores_hyperthreading = {
LinuxCpuMapTestCase cache_2sockets_24cores_hyperthreading = {
48,
2,
24,
@@ -350,7 +352,7 @@ LinuxCpuMapTestCase _2sockets_24cores_hyperthreading = {
{{"23,47"}, {"23,47"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}},
},
};
LinuxCpuMapTestCase _2sockets_48cores = {
LinuxCpuMapTestCase cache_2sockets_48cores = {
48,
2,
48,
@@ -392,7 +394,7 @@ LinuxCpuMapTestCase _2sockets_48cores = {
{{"45"}, {"45"}, {"24-47"}}, {{"46"}, {"46"}, {"24-47"}}, {{"47"}, {"47"}, {"24-47"}},
},
};
LinuxCpuMapTestCase _2sockets_20cores_hyperthreading = {
LinuxCpuMapTestCase cache_2sockets_20cores_hyperthreading = {
40,
2,
20,
@@ -442,7 +444,7 @@ LinuxCpuMapTestCase _2sockets_20cores_hyperthreading = {
{{"18,38"}, {"18,38"}, {"10-19,30-39"}}, {{"19,39"}, {"19,39"}, {"10-19,30-39"}},
},
};
LinuxCpuMapTestCase _1sockets_14cores_hyperthreading = {
LinuxCpuMapTestCase cache_1sockets_14cores_hyperthreading = {
20,
1,
14,
@@ -469,7 +471,7 @@ LinuxCpuMapTestCase _1sockets_14cores_hyperthreading = {
{{"18"}, {"16-19"}, {"0-19"}}, {{"19"}, {"16-19"}, {"0-19"}},
},
};
LinuxCpuMapTestCase _1sockets_10cores_hyperthreading{
LinuxCpuMapTestCase cache_1sockets_10cores_hyperthreading{
12,
1,
10,
@@ -503,7 +505,7 @@ LinuxCpuMapTestCase _1sockets_10cores_hyperthreading{
{{"11"}, {"8-11"}, {"0-11"}},
},
};
LinuxCpuMapTestCase _1sockets_8cores_hyperthreading = {
LinuxCpuMapTestCase cache_1sockets_8cores_hyperthreading = {
12,
1,
8,
@@ -537,7 +539,7 @@ LinuxCpuMapTestCase _1sockets_8cores_hyperthreading = {
{{"11"}, {"8-11"}, {"0-11"}},
},
};
LinuxCpuMapTestCase _1sockets_6cores_hyperthreading = {
LinuxCpuMapTestCase cache_1sockets_6cores_hyperthreading = {
12,
1,
6,
@@ -572,18 +574,700 @@ LinuxCpuMapTestCase _1sockets_6cores_hyperthreading = {
},
};
TEST_P(LinuxCpuMapParserTests, LinuxCpuMap) {}
TEST_P(LinuxCpuMapCacheParserTests, LinuxCpuMapCache) {}
INSTANTIATE_TEST_SUITE_P(CPUMap,
LinuxCpuMapParserTests,
testing::Values(_2sockets_104cores_hyperthreading,
_2sockets_24cores_hyperthreading,
_2sockets_48cores,
_2sockets_20cores_hyperthreading,
_1sockets_14cores_hyperthreading,
_1sockets_10cores_hyperthreading,
_1sockets_8cores_hyperthreading,
_1sockets_6cores_hyperthreading));
LinuxCpuMapCacheParserTests,
testing::Values(cache_2sockets_104cores_hyperthreading,
cache_2sockets_24cores_hyperthreading,
cache_2sockets_48cores,
cache_2sockets_20cores_hyperthreading,
cache_1sockets_14cores_hyperthreading,
cache_1sockets_10cores_hyperthreading,
cache_1sockets_8cores_hyperthreading,
cache_1sockets_6cores_hyperthreading));
class LinuxCpuMapFreqParserTests : public CommonTestUtils::TestsCommon,
public testing::WithParamInterface<std::tuple<LinuxCpuMapTestCase>> {
public:
void SetUp() override {
const auto& test_data = std::get<0>(GetParam());
int test_processors = 0;
int test_sockets = 0;
int test_cores = 0;
std::vector<std::vector<int>> test_proc_type_table;
std::vector<std::vector<int>> test_cpu_mapping_table;
ov::parse_freq_info_linux(test_data.system_info_table,
test_processors,
test_sockets,
test_cores,
test_proc_type_table,
test_cpu_mapping_table);
ASSERT_EQ(test_data._processors, test_processors);
ASSERT_EQ(test_data._sockets, test_sockets);
ASSERT_EQ(test_data._cores, test_cores);
ASSERT_EQ(test_data._proc_type_table, test_proc_type_table);
ASSERT_EQ(test_data._cpu_mapping_table, test_cpu_mapping_table);
}
};
LinuxCpuMapTestCase freq_2sockets_112cores_hyperthreading = {
224,
2,
112,
{{224, 112, 0, 112}, {112, 56, 0, 56}, {112, 56, 0, 56}},
{
{0, 0, 0, HYPER_THREADING_PROC, 0, -1}, {1, 0, 1, HYPER_THREADING_PROC, 1, -1},
{2, 0, 2, HYPER_THREADING_PROC, 2, -1}, {3, 0, 3, HYPER_THREADING_PROC, 3, -1},
{4, 0, 4, HYPER_THREADING_PROC, 4, -1}, {5, 0, 5, HYPER_THREADING_PROC, 5, -1},
{6, 0, 6, HYPER_THREADING_PROC, 6, -1}, {7, 0, 7, HYPER_THREADING_PROC, 7, -1},
{8, 0, 8, HYPER_THREADING_PROC, 8, -1}, {9, 0, 9, HYPER_THREADING_PROC, 9, -1},
{10, 0, 10, HYPER_THREADING_PROC, 10, -1}, {11, 0, 11, HYPER_THREADING_PROC, 11, -1},
{12, 0, 12, HYPER_THREADING_PROC, 12, -1}, {13, 0, 13, HYPER_THREADING_PROC, 13, -1},
{14, 0, 14, HYPER_THREADING_PROC, 14, -1}, {15, 0, 15, HYPER_THREADING_PROC, 15, -1},
{16, 0, 16, HYPER_THREADING_PROC, 16, -1}, {17, 0, 17, HYPER_THREADING_PROC, 17, -1},
{18, 0, 18, HYPER_THREADING_PROC, 18, -1}, {19, 0, 19, HYPER_THREADING_PROC, 19, -1},
{20, 0, 20, HYPER_THREADING_PROC, 20, -1}, {21, 0, 21, HYPER_THREADING_PROC, 21, -1},
{22, 0, 22, HYPER_THREADING_PROC, 22, -1}, {23, 0, 23, HYPER_THREADING_PROC, 23, -1},
{24, 0, 24, HYPER_THREADING_PROC, 24, -1}, {25, 0, 25, HYPER_THREADING_PROC, 25, -1},
{26, 0, 26, HYPER_THREADING_PROC, 26, -1}, {27, 0, 27, HYPER_THREADING_PROC, 27, -1},
{28, 0, 28, HYPER_THREADING_PROC, 28, -1}, {29, 0, 29, HYPER_THREADING_PROC, 29, -1},
{30, 0, 30, HYPER_THREADING_PROC, 30, -1}, {31, 0, 31, HYPER_THREADING_PROC, 31, -1},
{32, 0, 32, HYPER_THREADING_PROC, 32, -1}, {33, 0, 33, HYPER_THREADING_PROC, 33, -1},
{34, 0, 34, HYPER_THREADING_PROC, 34, -1}, {35, 0, 35, HYPER_THREADING_PROC, 35, -1},
{36, 0, 36, HYPER_THREADING_PROC, 36, -1}, {37, 0, 37, HYPER_THREADING_PROC, 37, -1},
{38, 0, 38, HYPER_THREADING_PROC, 38, -1}, {39, 0, 39, HYPER_THREADING_PROC, 39, -1},
{40, 0, 40, HYPER_THREADING_PROC, 40, -1}, {41, 0, 41, HYPER_THREADING_PROC, 41, -1},
{42, 0, 42, HYPER_THREADING_PROC, 42, -1}, {43, 0, 43, HYPER_THREADING_PROC, 43, -1},
{44, 0, 44, HYPER_THREADING_PROC, 44, -1}, {45, 0, 45, HYPER_THREADING_PROC, 45, -1},
{46, 0, 46, HYPER_THREADING_PROC, 46, -1}, {47, 0, 47, HYPER_THREADING_PROC, 47, -1},
{48, 0, 48, HYPER_THREADING_PROC, 48, -1}, {49, 0, 49, HYPER_THREADING_PROC, 49, -1},
{50, 0, 50, HYPER_THREADING_PROC, 50, -1}, {51, 0, 51, HYPER_THREADING_PROC, 51, -1},
{52, 0, 52, HYPER_THREADING_PROC, 52, -1}, {53, 0, 53, HYPER_THREADING_PROC, 53, -1},
{54, 0, 54, HYPER_THREADING_PROC, 54, -1}, {55, 0, 55, HYPER_THREADING_PROC, 55, -1},
{56, 1, 56, HYPER_THREADING_PROC, 56, -1}, {57, 1, 57, HYPER_THREADING_PROC, 57, -1},
{58, 1, 58, HYPER_THREADING_PROC, 58, -1}, {59, 1, 59, HYPER_THREADING_PROC, 59, -1},
{60, 1, 60, HYPER_THREADING_PROC, 60, -1}, {61, 1, 61, HYPER_THREADING_PROC, 61, -1},
{62, 1, 62, HYPER_THREADING_PROC, 62, -1}, {63, 1, 63, HYPER_THREADING_PROC, 63, -1},
{64, 1, 64, HYPER_THREADING_PROC, 64, -1}, {65, 1, 65, HYPER_THREADING_PROC, 65, -1},
{66, 1, 66, HYPER_THREADING_PROC, 66, -1}, {67, 1, 67, HYPER_THREADING_PROC, 67, -1},
{68, 1, 68, HYPER_THREADING_PROC, 68, -1}, {69, 1, 69, HYPER_THREADING_PROC, 69, -1},
{70, 1, 70, HYPER_THREADING_PROC, 70, -1}, {71, 1, 71, HYPER_THREADING_PROC, 71, -1},
{72, 1, 72, HYPER_THREADING_PROC, 72, -1}, {73, 1, 73, HYPER_THREADING_PROC, 73, -1},
{74, 1, 74, HYPER_THREADING_PROC, 74, -1}, {75, 1, 75, HYPER_THREADING_PROC, 75, -1},
{76, 1, 76, HYPER_THREADING_PROC, 76, -1}, {77, 1, 77, HYPER_THREADING_PROC, 77, -1},
{78, 1, 78, HYPER_THREADING_PROC, 78, -1}, {79, 1, 79, HYPER_THREADING_PROC, 79, -1},
{80, 1, 80, HYPER_THREADING_PROC, 80, -1}, {81, 1, 81, HYPER_THREADING_PROC, 81, -1},
{82, 1, 82, HYPER_THREADING_PROC, 82, -1}, {83, 1, 83, HYPER_THREADING_PROC, 83, -1},
{84, 1, 84, HYPER_THREADING_PROC, 84, -1}, {85, 1, 85, HYPER_THREADING_PROC, 85, -1},
{86, 1, 86, HYPER_THREADING_PROC, 86, -1}, {87, 1, 87, HYPER_THREADING_PROC, 87, -1},
{88, 1, 88, HYPER_THREADING_PROC, 88, -1}, {89, 1, 89, HYPER_THREADING_PROC, 89, -1},
{90, 1, 90, HYPER_THREADING_PROC, 90, -1}, {91, 1, 91, HYPER_THREADING_PROC, 91, -1},
{92, 1, 92, HYPER_THREADING_PROC, 92, -1}, {93, 1, 93, HYPER_THREADING_PROC, 93, -1},
{94, 1, 94, HYPER_THREADING_PROC, 94, -1}, {95, 1, 95, HYPER_THREADING_PROC, 95, -1},
{96, 1, 96, HYPER_THREADING_PROC, 96, -1}, {97, 1, 97, HYPER_THREADING_PROC, 97, -1},
{98, 1, 98, HYPER_THREADING_PROC, 98, -1}, {99, 1, 99, HYPER_THREADING_PROC, 99, -1},
{100, 1, 100, HYPER_THREADING_PROC, 100, -1}, {101, 1, 101, HYPER_THREADING_PROC, 101, -1},
{102, 1, 102, HYPER_THREADING_PROC, 102, -1}, {103, 1, 103, HYPER_THREADING_PROC, 103, -1},
{104, 1, 104, HYPER_THREADING_PROC, 104, -1}, {105, 1, 105, HYPER_THREADING_PROC, 105, -1},
{106, 1, 106, HYPER_THREADING_PROC, 106, -1}, {107, 1, 107, HYPER_THREADING_PROC, 107, -1},
{108, 1, 108, HYPER_THREADING_PROC, 108, -1}, {109, 1, 109, HYPER_THREADING_PROC, 109, -1},
{110, 1, 110, HYPER_THREADING_PROC, 110, -1}, {111, 1, 111, HYPER_THREADING_PROC, 111, -1},
{112, 0, 0, MAIN_CORE_PROC, 0, -1}, {113, 0, 1, MAIN_CORE_PROC, 1, -1},
{114, 0, 2, MAIN_CORE_PROC, 2, -1}, {115, 0, 3, MAIN_CORE_PROC, 3, -1},
{116, 0, 4, MAIN_CORE_PROC, 4, -1}, {117, 0, 5, MAIN_CORE_PROC, 5, -1},
{118, 0, 6, MAIN_CORE_PROC, 6, -1}, {119, 0, 7, MAIN_CORE_PROC, 7, -1},
{120, 0, 8, MAIN_CORE_PROC, 8, -1}, {121, 0, 9, MAIN_CORE_PROC, 9, -1},
{122, 0, 10, MAIN_CORE_PROC, 10, -1}, {123, 0, 11, MAIN_CORE_PROC, 11, -1},
{124, 0, 12, MAIN_CORE_PROC, 12, -1}, {125, 0, 13, MAIN_CORE_PROC, 13, -1},
{126, 0, 14, MAIN_CORE_PROC, 14, -1}, {127, 0, 15, MAIN_CORE_PROC, 15, -1},
{128, 0, 16, MAIN_CORE_PROC, 16, -1}, {129, 0, 17, MAIN_CORE_PROC, 17, -1},
{130, 0, 18, MAIN_CORE_PROC, 18, -1}, {131, 0, 19, MAIN_CORE_PROC, 19, -1},
{132, 0, 20, MAIN_CORE_PROC, 20, -1}, {133, 0, 21, MAIN_CORE_PROC, 21, -1},
{134, 0, 22, MAIN_CORE_PROC, 22, -1}, {135, 0, 23, MAIN_CORE_PROC, 23, -1},
{136, 0, 24, MAIN_CORE_PROC, 24, -1}, {137, 0, 25, MAIN_CORE_PROC, 25, -1},
{138, 0, 26, MAIN_CORE_PROC, 26, -1}, {139, 0, 27, MAIN_CORE_PROC, 27, -1},
{140, 0, 28, MAIN_CORE_PROC, 28, -1}, {141, 0, 29, MAIN_CORE_PROC, 29, -1},
{142, 0, 30, MAIN_CORE_PROC, 30, -1}, {143, 0, 31, MAIN_CORE_PROC, 31, -1},
{144, 0, 32, MAIN_CORE_PROC, 32, -1}, {145, 0, 33, MAIN_CORE_PROC, 33, -1},
{146, 0, 34, MAIN_CORE_PROC, 34, -1}, {147, 0, 35, MAIN_CORE_PROC, 35, -1},
{148, 0, 36, MAIN_CORE_PROC, 36, -1}, {149, 0, 37, MAIN_CORE_PROC, 37, -1},
{150, 0, 38, MAIN_CORE_PROC, 38, -1}, {151, 0, 39, MAIN_CORE_PROC, 39, -1},
{152, 0, 40, MAIN_CORE_PROC, 40, -1}, {153, 0, 41, MAIN_CORE_PROC, 41, -1},
{154, 0, 42, MAIN_CORE_PROC, 42, -1}, {155, 0, 43, MAIN_CORE_PROC, 43, -1},
{156, 0, 44, MAIN_CORE_PROC, 44, -1}, {157, 0, 45, MAIN_CORE_PROC, 45, -1},
{158, 0, 46, MAIN_CORE_PROC, 46, -1}, {159, 0, 47, MAIN_CORE_PROC, 47, -1},
{160, 0, 48, MAIN_CORE_PROC, 48, -1}, {161, 0, 49, MAIN_CORE_PROC, 49, -1},
{162, 0, 50, MAIN_CORE_PROC, 50, -1}, {163, 0, 51, MAIN_CORE_PROC, 51, -1},
{164, 0, 52, MAIN_CORE_PROC, 52, -1}, {165, 0, 53, MAIN_CORE_PROC, 53, -1},
{166, 0, 54, MAIN_CORE_PROC, 54, -1}, {167, 0, 55, MAIN_CORE_PROC, 55, -1},
{168, 1, 56, MAIN_CORE_PROC, 56, -1}, {169, 1, 57, MAIN_CORE_PROC, 57, -1},
{170, 1, 58, MAIN_CORE_PROC, 58, -1}, {171, 1, 59, MAIN_CORE_PROC, 59, -1},
{172, 1, 60, MAIN_CORE_PROC, 60, -1}, {173, 1, 61, MAIN_CORE_PROC, 61, -1},
{174, 1, 62, MAIN_CORE_PROC, 62, -1}, {175, 1, 63, MAIN_CORE_PROC, 63, -1},
{176, 1, 64, MAIN_CORE_PROC, 64, -1}, {177, 1, 65, MAIN_CORE_PROC, 65, -1},
{178, 1, 66, MAIN_CORE_PROC, 66, -1}, {179, 1, 67, MAIN_CORE_PROC, 67, -1},
{180, 1, 68, MAIN_CORE_PROC, 68, -1}, {181, 1, 69, MAIN_CORE_PROC, 69, -1},
{182, 1, 70, MAIN_CORE_PROC, 70, -1}, {183, 1, 71, MAIN_CORE_PROC, 71, -1},
{184, 1, 72, MAIN_CORE_PROC, 72, -1}, {185, 1, 73, MAIN_CORE_PROC, 73, -1},
{186, 1, 74, MAIN_CORE_PROC, 74, -1}, {187, 1, 75, MAIN_CORE_PROC, 75, -1},
{188, 1, 76, MAIN_CORE_PROC, 76, -1}, {189, 1, 77, MAIN_CORE_PROC, 77, -1},
{190, 1, 78, MAIN_CORE_PROC, 78, -1}, {191, 1, 79, MAIN_CORE_PROC, 79, -1},
{192, 1, 80, MAIN_CORE_PROC, 80, -1}, {193, 1, 81, MAIN_CORE_PROC, 81, -1},
{194, 1, 82, MAIN_CORE_PROC, 82, -1}, {195, 1, 83, MAIN_CORE_PROC, 83, -1},
{196, 1, 84, MAIN_CORE_PROC, 84, -1}, {197, 1, 85, MAIN_CORE_PROC, 85, -1},
{198, 1, 86, MAIN_CORE_PROC, 86, -1}, {199, 1, 87, MAIN_CORE_PROC, 87, -1},
{200, 1, 88, MAIN_CORE_PROC, 88, -1}, {201, 1, 89, MAIN_CORE_PROC, 89, -1},
{202, 1, 90, MAIN_CORE_PROC, 90, -1}, {203, 1, 91, MAIN_CORE_PROC, 91, -1},
{204, 1, 92, MAIN_CORE_PROC, 92, -1}, {205, 1, 93, MAIN_CORE_PROC, 93, -1},
{206, 1, 94, MAIN_CORE_PROC, 94, -1}, {207, 1, 95, MAIN_CORE_PROC, 95, -1},
{208, 1, 96, MAIN_CORE_PROC, 96, -1}, {209, 1, 97, MAIN_CORE_PROC, 97, -1},
{210, 1, 98, MAIN_CORE_PROC, 98, -1}, {211, 1, 99, MAIN_CORE_PROC, 99, -1},
{212, 1, 100, MAIN_CORE_PROC, 100, -1}, {213, 1, 101, MAIN_CORE_PROC, 101, -1},
{214, 1, 102, MAIN_CORE_PROC, 102, -1}, {215, 1, 103, MAIN_CORE_PROC, 103, -1},
{216, 1, 104, MAIN_CORE_PROC, 104, -1}, {217, 1, 105, MAIN_CORE_PROC, 105, -1},
{218, 1, 106, MAIN_CORE_PROC, 106, -1}, {219, 1, 107, MAIN_CORE_PROC, 107, -1},
{220, 1, 108, MAIN_CORE_PROC, 108, -1}, {221, 1, 109, MAIN_CORE_PROC, 109, -1},
{222, 1, 110, MAIN_CORE_PROC, 110, -1}, {223, 1, 111, MAIN_CORE_PROC, 111, -1},
},
{
{"0,112", "0", "2001000"}, {"1,113", "0", "2001000"}, {"2,114", "0", "2001000"},
{"3,115", "0", "2001000"}, {"4,116", "0", "2001000"}, {"5,117", "0", "2001000"},
{"6,118", "0", "2001000"}, {"7,119", "0", "2001000"}, {"8,120", "0", "2001000"},
{"9,121", "0", "2001000"}, {"10,122", "0", "2001000"}, {"11,123", "0", "2001000"},
{"12,124", "0", "2001000"}, {"13,125", "0", "2001000"}, {"14,126", "0", "2001000"},
{"15,127", "0", "2001000"}, {"16,128", "0", "2001000"}, {"17,129", "0", "2001000"},
{"18,130", "0", "2001000"}, {"19,131", "0", "2001000"}, {"20,132", "0", "2001000"},
{"21,133", "0", "2001000"}, {"22,134", "0", "2001000"}, {"23,135", "0", "2001000"},
{"24,136", "0", "2001000"}, {"25,137", "0", "2001000"}, {"26,138", "0", "2001000"},
{"27,139", "0", "2001000"}, {"28,140", "0", "2001000"}, {"29,141", "0", "2001000"},
{"30,142", "0", "2001000"}, {"31,143", "0", "2001000"}, {"32,144", "0", "2001000"},
{"33,145", "0", "2001000"}, {"34,146", "0", "2001000"}, {"35,147", "0", "2001000"},
{"36,148", "0", "2001000"}, {"37,149", "0", "2001000"}, {"38,150", "0", "2001000"},
{"39,151", "0", "2001000"}, {"40,152", "0", "2001000"}, {"41,153", "0", "2001000"},
{"42,154", "0", "2001000"}, {"43,155", "0", "2001000"}, {"44,156", "0", "2001000"},
{"45,157", "0", "2001000"}, {"46,158", "0", "2001000"}, {"47,159", "0", "2001000"},
{"48,160", "0", "2001000"}, {"49,161", "0", "2001000"}, {"50,162", "0", "2001000"},
{"51,163", "0", "2001000"}, {"52,164", "0", "2001000"}, {"53,165", "0", "2001000"},
{"54,166", "0", "2001000"}, {"55,167", "0", "2001000"}, {"56,168", "1", "2001000"},
{"57,169", "1", "2001000"}, {"58,170", "1", "2001000"}, {"59,171", "1", "2001000"},
{"60,172", "1", "2001000"}, {"61,173", "1", "2001000"}, {"62,174", "1", "2001000"},
{"63,175", "1", "2001000"}, {"64,176", "1", "2001000"}, {"65,177", "1", "2001000"},
{"66,178", "1", "2001000"}, {"67,179", "1", "2001000"}, {"68,180", "1", "2001000"},
{"69,181", "1", "2001000"}, {"70,182", "1", "2001000"}, {"71,183", "1", "2001000"},
{"72,184", "1", "2001000"}, {"73,185", "1", "2001000"}, {"74,186", "1", "2001000"},
{"75,187", "1", "2001000"}, {"76,188", "1", "2001000"}, {"77,189", "1", "2001000"},
{"78,190", "1", "2001000"}, {"79,191", "1", "2001000"}, {"80,192", "1", "2001000"},
{"81,193", "1", "2001000"}, {"82,194", "1", "2001000"}, {"83,195", "1", "2001000"},
{"84,196", "1", "2001000"}, {"85,197", "1", "2001000"}, {"86,198", "1", "2001000"},
{"87,199", "1", "2001000"}, {"88,200", "1", "2001000"}, {"89,201", "1", "2001000"},
{"90,202", "1", "2001000"}, {"91,203", "1", "2001000"}, {"92,204", "1", "2001000"},
{"93,205", "1", "2001000"}, {"94,206", "1", "2001000"}, {"95,207", "1", "2001000"},
{"96,208", "1", "2001000"}, {"97,209", "1", "2001000"}, {"98,210", "1", "2001000"},
{"99,211", "1", "2001000"}, {"100,212", "1", "2001000"}, {"101,213", "1", "2001000"},
{"102,214", "1", "2001000"}, {"103,215", "1", "2001000"}, {"104,216", "1", "2001000"},
{"105,217", "1", "2001000"}, {"106,218", "1", "2001000"}, {"107,219", "1", "2001000"},
{"108,220", "1", "2001000"}, {"109,221", "1", "2001000"}, {"110,222", "1", "2001000"},
{"111,223", "1", "2001000"}, {"0,112", "0", "2001000"}, {"1,113", "0", "2001000"},
{"2,114", "0", "2001000"}, {"3,115", "0", "2001000"}, {"4,116", "0", "2001000"},
{"5,117", "0", "2001000"}, {"6,118", "0", "2001000"}, {"7,119", "0", "2001000"},
{"8,120", "0", "2001000"}, {"9,121", "0", "2001000"}, {"10,122", "0", "2001000"},
{"11,123", "0", "2001000"}, {"12,124", "0", "2001000"}, {"13,125", "0", "2001000"},
{"14,126", "0", "2001000"}, {"15,127", "0", "2001000"}, {"16,128", "0", "2001000"},
{"17,129", "0", "2001000"}, {"18,130", "0", "2001000"}, {"19,131", "0", "2001000"},
{"20,132", "0", "2001000"}, {"21,133", "0", "2001000"}, {"22,134", "0", "2001000"},
{"23,135", "0", "2001000"}, {"24,136", "0", "2001000"}, {"25,137", "0", "2001000"},
{"26,138", "0", "2001000"}, {"27,139", "0", "2001000"}, {"28,140", "0", "2001000"},
{"29,141", "0", "2001000"}, {"30,142", "0", "2001000"}, {"31,143", "0", "2001000"},
{"32,144", "0", "2001000"}, {"33,145", "0", "2001000"}, {"34,146", "0", "2001000"},
{"35,147", "0", "2001000"}, {"36,148", "0", "2001000"}, {"37,149", "0", "2001000"},
{"38,150", "0", "2001000"}, {"39,151", "0", "2001000"}, {"40,152", "0", "2001000"},
{"41,153", "0", "2001000"}, {"42,154", "0", "2001000"}, {"43,155", "0", "2001000"},
{"44,156", "0", "2001000"}, {"45,157", "0", "2001000"}, {"46,158", "0", "2001000"},
{"47,159", "0", "2001000"}, {"48,160", "0", "2001000"}, {"49,161", "0", "2001000"},
{"50,162", "0", "2001000"}, {"51,163", "0", "2001000"}, {"52,164", "0", "2001000"},
{"53,165", "0", "2001000"}, {"54,166", "0", "2001000"}, {"55,167", "0", "2001000"},
{"56,168", "1", "2001000"}, {"57,169", "1", "2001000"}, {"58,170", "1", "2001000"},
{"59,171", "1", "2001000"}, {"60,172", "1", "2001000"}, {"61,173", "1", "2001000"},
{"62,174", "1", "2001000"}, {"63,175", "1", "2001000"}, {"64,176", "1", "2001000"},
{"65,177", "1", "2001000"}, {"66,178", "1", "2001000"}, {"67,179", "1", "2001000"},
{"68,180", "1", "2001000"}, {"69,181", "1", "2001000"}, {"70,182", "1", "2001000"},
{"71,183", "1", "2001000"}, {"72,184", "1", "2001000"}, {"73,185", "1", "2001000"},
{"74,186", "1", "2001000"}, {"75,187", "1", "2001000"}, {"76,188", "1", "2001000"},
{"77,189", "1", "2001000"}, {"78,190", "1", "2001000"}, {"79,191", "1", "2001000"},
{"80,192", "1", "2001000"}, {"81,193", "1", "2001000"}, {"82,194", "1", "2001000"},
{"83,195", "1", "2001000"}, {"84,196", "1", "2001000"}, {"85,197", "1", "2001000"},
{"86,198", "1", "2001000"}, {"87,199", "1", "2001000"}, {"88,200", "1", "2001000"},
{"89,201", "1", "2001000"}, {"90,202", "1", "2001000"}, {"91,203", "1", "2001000"},
{"92,204", "1", "2001000"}, {"93,205", "1", "2001000"}, {"94,206", "1", "2001000"},
{"95,207", "1", "2001000"}, {"96,208", "1", "2001000"}, {"97,209", "1", "2001000"},
{"98,210", "1", "2001000"}, {"99,211", "1", "2001000"}, {"100,212", "1", "2001000"},
{"101,213", "1", "2001000"}, {"102,214", "1", "2001000"}, {"103,215", "1", "2001000"},
{"104,216", "1", "2001000"}, {"105,217", "1", "2001000"}, {"106,218", "1", "2001000"},
{"107,219", "1", "2001000"}, {"108,220", "1", "2001000"}, {"109,221", "1", "2001000"},
{"110,222", "1", "2001000"}, {"111,223", "1", "2001000"},
},
};
LinuxCpuMapTestCase freq_2sockets_48cores_hyperthreading = {
96,
2,
48,
{{96, 48, 0, 48}, {48, 24, 0, 24}, {48, 24, 0, 24}},
{
{0, 0, 0, HYPER_THREADING_PROC, 0, -1}, {1, 0, 1, HYPER_THREADING_PROC, 1, -1},
{2, 0, 2, HYPER_THREADING_PROC, 2, -1}, {3, 0, 3, HYPER_THREADING_PROC, 3, -1},
{4, 0, 4, HYPER_THREADING_PROC, 4, -1}, {5, 0, 5, HYPER_THREADING_PROC, 5, -1},
{6, 0, 6, HYPER_THREADING_PROC, 6, -1}, {7, 0, 7, HYPER_THREADING_PROC, 7, -1},
{8, 0, 8, HYPER_THREADING_PROC, 8, -1}, {9, 0, 9, HYPER_THREADING_PROC, 9, -1},
{10, 0, 10, HYPER_THREADING_PROC, 10, -1}, {11, 0, 11, HYPER_THREADING_PROC, 11, -1},
{12, 0, 12, HYPER_THREADING_PROC, 12, -1}, {13, 0, 13, HYPER_THREADING_PROC, 13, -1},
{14, 0, 14, HYPER_THREADING_PROC, 14, -1}, {15, 0, 15, HYPER_THREADING_PROC, 15, -1},
{16, 0, 16, HYPER_THREADING_PROC, 16, -1}, {17, 0, 17, HYPER_THREADING_PROC, 17, -1},
{18, 0, 18, HYPER_THREADING_PROC, 18, -1}, {19, 0, 19, HYPER_THREADING_PROC, 19, -1},
{20, 0, 20, HYPER_THREADING_PROC, 20, -1}, {21, 0, 21, HYPER_THREADING_PROC, 21, -1},
{22, 0, 22, HYPER_THREADING_PROC, 22, -1}, {23, 0, 23, HYPER_THREADING_PROC, 23, -1},
{24, 1, 24, HYPER_THREADING_PROC, 24, -1}, {25, 1, 25, HYPER_THREADING_PROC, 25, -1},
{26, 1, 26, HYPER_THREADING_PROC, 26, -1}, {27, 1, 27, HYPER_THREADING_PROC, 27, -1},
{28, 1, 28, HYPER_THREADING_PROC, 28, -1}, {29, 1, 29, HYPER_THREADING_PROC, 29, -1},
{30, 1, 30, HYPER_THREADING_PROC, 30, -1}, {31, 1, 31, HYPER_THREADING_PROC, 31, -1},
{32, 1, 32, HYPER_THREADING_PROC, 32, -1}, {33, 1, 33, HYPER_THREADING_PROC, 33, -1},
{34, 1, 34, HYPER_THREADING_PROC, 34, -1}, {35, 1, 35, HYPER_THREADING_PROC, 35, -1},
{36, 1, 36, HYPER_THREADING_PROC, 36, -1}, {37, 1, 37, HYPER_THREADING_PROC, 37, -1},
{38, 1, 38, HYPER_THREADING_PROC, 38, -1}, {39, 1, 39, HYPER_THREADING_PROC, 39, -1},
{40, 1, 40, HYPER_THREADING_PROC, 40, -1}, {41, 1, 41, HYPER_THREADING_PROC, 41, -1},
{42, 1, 42, HYPER_THREADING_PROC, 42, -1}, {43, 1, 43, HYPER_THREADING_PROC, 43, -1},
{44, 1, 44, HYPER_THREADING_PROC, 44, -1}, {45, 1, 45, HYPER_THREADING_PROC, 45, -1},
{46, 1, 46, HYPER_THREADING_PROC, 46, -1}, {47, 1, 47, HYPER_THREADING_PROC, 47, -1},
{48, 0, 0, MAIN_CORE_PROC, 0, -1}, {49, 0, 1, MAIN_CORE_PROC, 1, -1},
{50, 0, 2, MAIN_CORE_PROC, 2, -1}, {51, 0, 3, MAIN_CORE_PROC, 3, -1},
{52, 0, 4, MAIN_CORE_PROC, 4, -1}, {53, 0, 5, MAIN_CORE_PROC, 5, -1},
{54, 0, 6, MAIN_CORE_PROC, 6, -1}, {55, 0, 7, MAIN_CORE_PROC, 7, -1},
{56, 0, 8, MAIN_CORE_PROC, 8, -1}, {57, 0, 9, MAIN_CORE_PROC, 9, -1},
{58, 0, 10, MAIN_CORE_PROC, 10, -1}, {59, 0, 11, MAIN_CORE_PROC, 11, -1},
{60, 0, 12, MAIN_CORE_PROC, 12, -1}, {61, 0, 13, MAIN_CORE_PROC, 13, -1},
{62, 0, 14, MAIN_CORE_PROC, 14, -1}, {63, 0, 15, MAIN_CORE_PROC, 15, -1},
{64, 0, 16, MAIN_CORE_PROC, 16, -1}, {65, 0, 17, MAIN_CORE_PROC, 17, -1},
{66, 0, 18, MAIN_CORE_PROC, 18, -1}, {67, 0, 19, MAIN_CORE_PROC, 19, -1},
{68, 0, 20, MAIN_CORE_PROC, 20, -1}, {69, 0, 21, MAIN_CORE_PROC, 21, -1},
{70, 0, 22, MAIN_CORE_PROC, 22, -1}, {71, 0, 23, MAIN_CORE_PROC, 23, -1},
{72, 1, 24, MAIN_CORE_PROC, 24, -1}, {73, 1, 25, MAIN_CORE_PROC, 25, -1},
{74, 1, 26, MAIN_CORE_PROC, 26, -1}, {75, 1, 27, MAIN_CORE_PROC, 27, -1},
{76, 1, 28, MAIN_CORE_PROC, 28, -1}, {77, 1, 29, MAIN_CORE_PROC, 29, -1},
{78, 1, 30, MAIN_CORE_PROC, 30, -1}, {79, 1, 31, MAIN_CORE_PROC, 31, -1},
{80, 1, 32, MAIN_CORE_PROC, 32, -1}, {81, 1, 33, MAIN_CORE_PROC, 33, -1},
{82, 1, 34, MAIN_CORE_PROC, 34, -1}, {83, 1, 35, MAIN_CORE_PROC, 35, -1},
{84, 1, 36, MAIN_CORE_PROC, 36, -1}, {85, 1, 37, MAIN_CORE_PROC, 37, -1},
{86, 1, 38, MAIN_CORE_PROC, 38, -1}, {87, 1, 39, MAIN_CORE_PROC, 39, -1},
{88, 1, 40, MAIN_CORE_PROC, 40, -1}, {89, 1, 41, MAIN_CORE_PROC, 41, -1},
{90, 1, 42, MAIN_CORE_PROC, 42, -1}, {91, 1, 43, MAIN_CORE_PROC, 43, -1},
{92, 1, 44, MAIN_CORE_PROC, 44, -1}, {93, 1, 45, MAIN_CORE_PROC, 45, -1},
{94, 1, 46, MAIN_CORE_PROC, 46, -1}, {95, 1, 47, MAIN_CORE_PROC, 47, -1},
},
{
{"0,48", "0", "3600000"}, {"1,49", "0", "3600000"}, {"2,50", "0", "3600000"}, {"3,51", "0", "3600000"},
{"4,52", "0", "3600000"}, {"5,53", "0", "3600000"}, {"6,54", "0", "3600000"}, {"7,55", "0", "3600000"},
{"8,56", "0", "3600000"}, {"9,57", "0", "3600000"}, {"10,58", "0", "3600000"}, {"11,59", "0", "3600000"},
{"12,60", "0", "3600000"}, {"13,61", "0", "3600000"}, {"14,62", "0", "3600000"}, {"15,63", "0", "3600000"},
{"16,64", "0", "3600000"}, {"17,65", "0", "3600000"}, {"18,66", "0", "3600000"}, {"19,67", "0", "3600000"},
{"20,68", "0", "3600000"}, {"21,69", "0", "3600000"}, {"22,70", "0", "3600000"}, {"23,71", "0", "3600000"},
{"24,72", "1", "3600000"}, {"25,73", "1", "3600000"}, {"26,74", "1", "3600000"}, {"27,75", "1", "3600000"},
{"28,76", "1", "3600000"}, {"29,77", "1", "3600000"}, {"30,78", "1", "3600000"}, {"31,79", "1", "3600000"},
{"32,80", "1", "3600000"}, {"33,81", "1", "3600000"}, {"34,82", "1", "3600000"}, {"35,83", "1", "3600000"},
{"36,84", "1", "3600000"}, {"37,85", "1", "3600000"}, {"38,86", "1", "3600000"}, {"39,87", "1", "3600000"},
{"40,88", "1", "3600000"}, {"41,89", "1", "3600000"}, {"42,90", "1", "3600000"}, {"43,91", "1", "3600000"},
{"44,92", "1", "3600000"}, {"45,93", "1", "3600000"}, {"46,94", "1", "3600000"}, {"47,95", "1", "3600000"},
{"0,48", "0", "3600000"}, {"1,49", "0", "3600000"}, {"2,50", "0", "3600000"}, {"3,51", "0", "3600000"},
{"4,52", "0", "3600000"}, {"5,53", "0", "3600000"}, {"6,54", "0", "3600000"}, {"7,55", "0", "3600000"},
{"8,56", "0", "3600000"}, {"9,57", "0", "3600000"}, {"10,58", "0", "3600000"}, {"11,59", "0", "3600000"},
{"12,60", "0", "3600000"}, {"13,61", "0", "3600000"}, {"14,62", "0", "3600000"}, {"15,63", "0", "3600000"},
{"16,64", "0", "3600000"}, {"17,65", "0", "3600000"}, {"18,66", "0", "3600000"}, {"19,67", "0", "3600000"},
{"20,68", "0", "3600000"}, {"21,69", "0", "3600000"}, {"22,70", "0", "3600000"}, {"23,71", "0", "3600000"},
{"24,72", "1", "3600000"}, {"25,73", "1", "3600000"}, {"26,74", "1", "3600000"}, {"27,75", "1", "3600000"},
{"28,76", "1", "3600000"}, {"29,77", "1", "3600000"}, {"30,78", "1", "3600000"}, {"31,79", "1", "3600000"},
{"32,80", "1", "3600000"}, {"33,81", "1", "3600000"}, {"34,82", "1", "3600000"}, {"35,83", "1", "3600000"},
{"36,84", "1", "3600000"}, {"37,85", "1", "3600000"}, {"38,86", "1", "3600000"}, {"39,87", "1", "3600000"},
{"40,88", "1", "3600000"}, {"41,89", "1", "3600000"}, {"42,90", "1", "3600000"}, {"43,91", "1", "3600000"},
{"44,92", "1", "3600000"}, {"45,93", "1", "3600000"}, {"46,94", "1", "3600000"}, {"47,95", "1", "3600000"},
},
};
LinuxCpuMapTestCase freq_2sockets_20cores_hyperthreading = {
40,
2,
20,
{{40, 20, 0, 20}, {20, 10, 0, 10}, {20, 10, 0, 10}},
{
{0, 0, 0, HYPER_THREADING_PROC, 0, -1}, {1, 0, 1, HYPER_THREADING_PROC, 1, -1},
{2, 0, 2, HYPER_THREADING_PROC, 2, -1}, {3, 0, 3, HYPER_THREADING_PROC, 3, -1},
{4, 0, 4, HYPER_THREADING_PROC, 4, -1}, {5, 0, 5, HYPER_THREADING_PROC, 5, -1},
{6, 0, 6, HYPER_THREADING_PROC, 6, -1}, {7, 0, 7, HYPER_THREADING_PROC, 7, -1},
{8, 0, 8, HYPER_THREADING_PROC, 8, -1}, {9, 0, 9, HYPER_THREADING_PROC, 9, -1},
{10, 1, 10, HYPER_THREADING_PROC, 10, -1}, {11, 1, 11, HYPER_THREADING_PROC, 11, -1},
{12, 1, 12, HYPER_THREADING_PROC, 12, -1}, {13, 1, 13, HYPER_THREADING_PROC, 13, -1},
{14, 1, 14, HYPER_THREADING_PROC, 14, -1}, {15, 1, 15, HYPER_THREADING_PROC, 15, -1},
{16, 1, 16, HYPER_THREADING_PROC, 16, -1}, {17, 1, 17, HYPER_THREADING_PROC, 17, -1},
{18, 1, 18, HYPER_THREADING_PROC, 18, -1}, {19, 1, 19, HYPER_THREADING_PROC, 19, -1},
{20, 0, 0, MAIN_CORE_PROC, 0, -1}, {21, 0, 1, MAIN_CORE_PROC, 1, -1},
{22, 0, 2, MAIN_CORE_PROC, 2, -1}, {23, 0, 3, MAIN_CORE_PROC, 3, -1},
{24, 0, 4, MAIN_CORE_PROC, 4, -1}, {25, 0, 5, MAIN_CORE_PROC, 5, -1},
{26, 0, 6, MAIN_CORE_PROC, 6, -1}, {27, 0, 7, MAIN_CORE_PROC, 7, -1},
{28, 0, 8, MAIN_CORE_PROC, 8, -1}, {29, 0, 9, MAIN_CORE_PROC, 9, -1},
{30, 1, 10, MAIN_CORE_PROC, 10, -1}, {31, 1, 11, MAIN_CORE_PROC, 11, -1},
{32, 1, 12, MAIN_CORE_PROC, 12, -1}, {33, 1, 13, MAIN_CORE_PROC, 13, -1},
{34, 1, 14, MAIN_CORE_PROC, 14, -1}, {35, 1, 15, MAIN_CORE_PROC, 15, -1},
{36, 1, 16, MAIN_CORE_PROC, 16, -1}, {37, 1, 17, MAIN_CORE_PROC, 17, -1},
{38, 1, 18, MAIN_CORE_PROC, 18, -1}, {39, 1, 19, MAIN_CORE_PROC, 19, -1},
},
{
{"0,20", "0", "3000000"}, {"1,21", "0", "3000000"}, {"2,22", "0", "3000000"}, {"3,23", "0", "3000000"},
{"4,24", "0", "3000000"}, {"5,25", "0", "3000000"}, {"6,26", "0", "3000000"}, {"7,27", "0", "3000000"},
{"8,28", "0", "3000000"}, {"9,29", "0", "3000000"}, {"10,30", "1", "3000000"}, {"11,31", "1", "3000000"},
{"12,32", "1", "3000000"}, {"13,33", "1", "3000000"}, {"14,34", "1", "3000000"}, {"15,35", "1", "3000000"},
{"16,36", "1", "3000000"}, {"17,37", "1", "3000000"}, {"18,38", "1", "3000000"}, {"19,39", "1", "3000000"},
{"0,20", "0", "3000000"}, {"1,21", "0", "3000000"}, {"2,22", "0", "3000000"}, {"3,23", "0", "3000000"},
{"4,24", "0", "3000000"}, {"5,25", "0", "3000000"}, {"6,26", "0", "3000000"}, {"7,27", "0", "3000000"},
{"8,28", "0", "3000000"}, {"9,29", "0", "3000000"}, {"10,30", "1", "3000000"}, {"11,31", "1", "3000000"},
{"12,32", "1", "3000000"}, {"13,33", "1", "3000000"}, {"14,34", "1", "3000000"}, {"15,35", "1", "3000000"},
{"16,36", "1", "3000000"}, {"17,37", "1", "3000000"}, {"18,38", "1", "3000000"}, {"19,39", "1", "3000000"},
},
};
LinuxCpuMapTestCase freq_2sockets_20cores = {
20,
2,
20,
{{20, 20, 0, 0}, {10, 10, 0, 0}, {10, 10, 0, 0}},
{
{0, 0, 0, MAIN_CORE_PROC, 0, -1}, {1, 0, 1, MAIN_CORE_PROC, 1, -1}, {2, 0, 2, MAIN_CORE_PROC, 2, -1},
{3, 0, 3, MAIN_CORE_PROC, 3, -1}, {4, 0, 4, MAIN_CORE_PROC, 4, -1}, {5, 0, 5, MAIN_CORE_PROC, 5, -1},
{6, 0, 6, MAIN_CORE_PROC, 6, -1}, {7, 0, 7, MAIN_CORE_PROC, 7, -1}, {8, 0, 8, MAIN_CORE_PROC, 8, -1},
{9, 0, 9, MAIN_CORE_PROC, 9, -1}, {10, 1, 10, MAIN_CORE_PROC, 10, -1}, {11, 1, 11, MAIN_CORE_PROC, 11, -1},
{12, 1, 12, MAIN_CORE_PROC, 12, -1}, {13, 1, 13, MAIN_CORE_PROC, 13, -1}, {14, 1, 14, MAIN_CORE_PROC, 14, -1},
{15, 1, 15, MAIN_CORE_PROC, 15, -1}, {16, 1, 16, MAIN_CORE_PROC, 16, -1}, {17, 1, 17, MAIN_CORE_PROC, 17, -1},
{18, 1, 18, MAIN_CORE_PROC, 18, -1}, {19, 1, 19, MAIN_CORE_PROC, 19, -1},
},
{
{"0", "0", "3000000"}, {"1", "0", "3000000"}, {"2", "0", "3000000"}, {"3", "0", "3000000"},
{"4", "0", "3000000"}, {"5", "0", "3000000"}, {"6", "0", "3000000"}, {"7", "0", "3000000"},
{"8", "0", "3000000"}, {"9", "0", "3000000"}, {"10", "1", "3000000"}, {"11", "1", "3000000"},
{"12", "1", "3000000"}, {"13", "1", "3000000"}, {"14", "1", "3000000"}, {"15", "1", "3000000"},
{"16", "1", "3000000"}, {"17", "1", "3000000"}, {"18", "1", "3000000"}, {"19", "1", "3000000"},
},
};
LinuxCpuMapTestCase freq_1sockets_32cores_hyperthreading = {
64,
1,
32,
{{64, 32, 0, 32}},
{
{0, 0, 0, HYPER_THREADING_PROC, 0, -1}, {1, 0, 1, HYPER_THREADING_PROC, 1, -1},
{2, 0, 2, HYPER_THREADING_PROC, 2, -1}, {3, 0, 3, HYPER_THREADING_PROC, 3, -1},
{4, 0, 4, HYPER_THREADING_PROC, 4, -1}, {5, 0, 5, HYPER_THREADING_PROC, 5, -1},
{6, 0, 6, HYPER_THREADING_PROC, 6, -1}, {7, 0, 7, HYPER_THREADING_PROC, 7, -1},
{8, 0, 8, HYPER_THREADING_PROC, 8, -1}, {9, 0, 9, HYPER_THREADING_PROC, 9, -1},
{10, 0, 10, HYPER_THREADING_PROC, 10, -1}, {11, 0, 11, HYPER_THREADING_PROC, 11, -1},
{12, 0, 12, HYPER_THREADING_PROC, 12, -1}, {13, 0, 13, HYPER_THREADING_PROC, 13, -1},
{14, 0, 14, HYPER_THREADING_PROC, 14, -1}, {15, 0, 15, HYPER_THREADING_PROC, 15, -1},
{16, 0, 16, HYPER_THREADING_PROC, 16, -1}, {17, 0, 17, HYPER_THREADING_PROC, 17, -1},
{18, 0, 18, HYPER_THREADING_PROC, 18, -1}, {19, 0, 19, HYPER_THREADING_PROC, 19, -1},
{20, 0, 20, HYPER_THREADING_PROC, 20, -1}, {21, 0, 21, HYPER_THREADING_PROC, 21, -1},
{22, 0, 22, HYPER_THREADING_PROC, 22, -1}, {23, 0, 23, HYPER_THREADING_PROC, 23, -1},
{24, 0, 24, HYPER_THREADING_PROC, 24, -1}, {25, 0, 25, HYPER_THREADING_PROC, 25, -1},
{26, 0, 26, HYPER_THREADING_PROC, 26, -1}, {27, 0, 27, HYPER_THREADING_PROC, 27, -1},
{28, 0, 28, HYPER_THREADING_PROC, 28, -1}, {29, 0, 29, HYPER_THREADING_PROC, 29, -1},
{30, 0, 30, HYPER_THREADING_PROC, 30, -1}, {31, 0, 31, HYPER_THREADING_PROC, 31, -1},
{32, 0, 0, MAIN_CORE_PROC, 0, -1}, {33, 0, 1, MAIN_CORE_PROC, 1, -1},
{34, 0, 2, MAIN_CORE_PROC, 2, -1}, {35, 0, 3, MAIN_CORE_PROC, 3, -1},
{36, 0, 4, MAIN_CORE_PROC, 4, -1}, {37, 0, 5, MAIN_CORE_PROC, 5, -1},
{38, 0, 6, MAIN_CORE_PROC, 6, -1}, {39, 0, 7, MAIN_CORE_PROC, 7, -1},
{40, 0, 8, MAIN_CORE_PROC, 8, -1}, {41, 0, 9, MAIN_CORE_PROC, 9, -1},
{42, 0, 10, MAIN_CORE_PROC, 10, -1}, {43, 0, 11, MAIN_CORE_PROC, 11, -1},
{44, 0, 12, MAIN_CORE_PROC, 12, -1}, {45, 0, 13, MAIN_CORE_PROC, 13, -1},
{46, 0, 14, MAIN_CORE_PROC, 14, -1}, {47, 0, 15, MAIN_CORE_PROC, 15, -1},
{48, 0, 16, MAIN_CORE_PROC, 16, -1}, {49, 0, 17, MAIN_CORE_PROC, 17, -1},
{50, 0, 18, MAIN_CORE_PROC, 18, -1}, {51, 0, 19, MAIN_CORE_PROC, 19, -1},
{52, 0, 20, MAIN_CORE_PROC, 20, -1}, {53, 0, 21, MAIN_CORE_PROC, 21, -1},
{54, 0, 22, MAIN_CORE_PROC, 22, -1}, {55, 0, 23, MAIN_CORE_PROC, 23, -1},
{56, 0, 24, MAIN_CORE_PROC, 24, -1}, {57, 0, 25, MAIN_CORE_PROC, 25, -1},
{58, 0, 26, MAIN_CORE_PROC, 26, -1}, {59, 0, 27, MAIN_CORE_PROC, 27, -1},
{60, 0, 28, MAIN_CORE_PROC, 28, -1}, {61, 0, 29, MAIN_CORE_PROC, 29, -1},
{62, 0, 30, MAIN_CORE_PROC, 30, -1}, {63, 0, 31, MAIN_CORE_PROC, 31, -1},
},
{
{"0,32", "0", "3400000"}, {"1,33", "0", "3400000"}, {"2,34", "0", "3400000"}, {"3,35", "0", "3400000"},
{"4,36", "0", "3400000"}, {"5,37", "0", "3400000"}, {"6,38", "0", "3400000"}, {"7,39", "0", "3400000"},
{"8,40", "0", "3400000"}, {"9,41", "0", "3400000"}, {"10,42", "0", "3400000"}, {"11,43", "0", "3400000"},
{"12,44", "0", "3400000"}, {"13,45", "0", "3400000"}, {"14,46", "0", "3400000"}, {"15,47", "0", "3400000"},
{"16,48", "0", "3400000"}, {"17,49", "0", "3400000"}, {"18,50", "0", "3400000"}, {"19,51", "0", "3400000"},
{"20,52", "0", "3400000"}, {"21,53", "0", "3400000"}, {"22,54", "0", "3400000"}, {"23,55", "0", "3400000"},
{"24,56", "0", "3400000"}, {"25,57", "0", "3400000"}, {"26,58", "0", "3400000"}, {"27,59", "0", "3400000"},
{"28,60", "0", "3400000"}, {"29,61", "0", "3400000"}, {"30,62", "0", "3400000"}, {"31,63", "0", "3400000"},
{"0,32", "0", "3400000"}, {"1,33", "0", "3400000"}, {"2,34", "0", "3400000"}, {"3,35", "0", "3400000"},
{"4,36", "0", "3400000"}, {"5,37", "0", "3400000"}, {"6,38", "0", "3400000"}, {"7,39", "0", "3400000"},
{"8,40", "0", "3400000"}, {"9,41", "0", "3400000"}, {"10,42", "0", "3400000"}, {"11,43", "0", "3400000"},
{"12,44", "0", "3400000"}, {"13,45", "0", "3400000"}, {"14,46", "0", "3400000"}, {"15,47", "0", "3400000"},
{"16,48", "0", "3400000"}, {"17,49", "0", "3400000"}, {"18,50", "0", "3400000"}, {"19,51", "0", "3400000"},
{"20,52", "0", "3400000"}, {"21,53", "0", "3400000"}, {"22,54", "0", "3400000"}, {"23,55", "0", "3400000"},
{"24,56", "0", "3400000"}, {"25,57", "0", "3400000"}, {"26,58", "0", "3400000"}, {"27,59", "0", "3400000"},
{"28,60", "0", "3400000"}, {"29,61", "0", "3400000"}, {"30,62", "0", "3400000"}, {"31,63", "0", "3400000"},
},
};
LinuxCpuMapTestCase freq_1sockets_16cores_hyperthreading = {
24,
1,
16,
{{24, 8, 8, 8}},
{
{0, 0, 0, HYPER_THREADING_PROC, 0, -1}, {1, 0, 0, MAIN_CORE_PROC, 0, -1},
{2, 0, 1, HYPER_THREADING_PROC, 1, -1}, {3, 0, 1, MAIN_CORE_PROC, 1, -1},
{4, 0, 2, HYPER_THREADING_PROC, 2, -1}, {5, 0, 2, MAIN_CORE_PROC, 2, -1},
{6, 0, 3, HYPER_THREADING_PROC, 3, -1}, {7, 0, 3, MAIN_CORE_PROC, 3, -1},
{8, 0, 4, HYPER_THREADING_PROC, 4, -1}, {9, 0, 4, MAIN_CORE_PROC, 4, -1},
{10, 0, 5, HYPER_THREADING_PROC, 5, -1}, {11, 0, 5, MAIN_CORE_PROC, 5, -1},
{12, 0, 6, HYPER_THREADING_PROC, 6, -1}, {13, 0, 6, MAIN_CORE_PROC, 6, -1},
{14, 0, 7, HYPER_THREADING_PROC, 7, -1}, {15, 0, 7, MAIN_CORE_PROC, 7, -1},
{16, 0, 8, EFFICIENT_CORE_PROC, 8, -1}, {17, 0, 9, EFFICIENT_CORE_PROC, 9, -1},
{18, 0, 10, EFFICIENT_CORE_PROC, 10, -1}, {19, 0, 11, EFFICIENT_CORE_PROC, 11, -1},
{20, 0, 12, EFFICIENT_CORE_PROC, 12, -1}, {21, 0, 13, EFFICIENT_CORE_PROC, 13, -1},
{22, 0, 14, EFFICIENT_CORE_PROC, 14, -1}, {23, 0, 15, EFFICIENT_CORE_PROC, 15, -1},
},
{
{"0-1", "0", "5376760"}, {"0-1", "0", "5376760"}, {"2-3", "0", "5376760"}, {"2-3", "0", "5376760"},
{"4-5", "0", "5376760"}, {"4-5", "0", "5376760"}, {"6-7", "0", "5376760"}, {"6-7", "0", "5376760"},
{"8-9", "0", "5400000"}, {"8-9", "0", "5400000"}, {"10-11", "0", "5400000"}, {"10-11", "0", "5400000"},
{"12-13", "0", "5376760"}, {"12-13", "0", "5376760"}, {"14-15", "0", "5376760"}, {"14-15", "0", "5376760"},
{"16", "0", "4200000"}, {"17", "0", "4200000"}, {"18", "0", "4200000"}, {"19", "0", "4200000"},
{"20", "0", "4200000"}, {"21", "0", "4200000"}, {"22", "0", "4200000"}, {"23", "0", "4200000"},
},
};
LinuxCpuMapTestCase freq_1sockets_16cores = {
16,
1,
16,
{{16, 8, 8, 0}},
{
{0, 0, 0, MAIN_CORE_PROC, 0, -1},
{1, 0, 1, MAIN_CORE_PROC, 1, -1},
{2, 0, 2, MAIN_CORE_PROC, 2, -1},
{3, 0, 3, MAIN_CORE_PROC, 3, -1},
{4, 0, 4, MAIN_CORE_PROC, 4, -1},
{5, 0, 5, MAIN_CORE_PROC, 5, -1},
{6, 0, 6, MAIN_CORE_PROC, 6, -1},
{7, 0, 7, MAIN_CORE_PROC, 7, -1},
{8, 0, 8, EFFICIENT_CORE_PROC, 8, -1},
{9, 0, 9, EFFICIENT_CORE_PROC, 9, -1},
{10, 0, 10, EFFICIENT_CORE_PROC, 10, -1},
{11, 0, 11, EFFICIENT_CORE_PROC, 11, -1},
{12, 0, 12, EFFICIENT_CORE_PROC, 12, -1},
{13, 0, 13, EFFICIENT_CORE_PROC, 13, -1},
{14, 0, 14, EFFICIENT_CORE_PROC, 14, -1},
{15, 0, 15, EFFICIENT_CORE_PROC, 15, -1},
},
{
{"0", "0", "5376760"},
{"1", "0", "5376760"},
{"2", "0", "5376760"},
{"3", "0", "5376760"},
{"4", "0", "5400000"},
{"5", "0", "5400000"},
{"6", "0", "5376760"},
{"7", "0", "5376760"},
{"8", "0", "4200000"},
{"9", "0", "4200000"},
{"10", "0", "4200000"},
{"11", "0", "4200000"},
{"12", "0", "4200000"},
{"13", "0", "4200000"},
{"14", "0", "4200000"},
{"15", "0", "4200000"},
},
};
LinuxCpuMapTestCase freq_1sockets_16cores_1_hyperthreading = {
22,
1,
16,
{{22, 6, 10, 6}},
{
{0, 0, 0, HYPER_THREADING_PROC, 0, -1}, {1, 0, 0, MAIN_CORE_PROC, 0, -1},
{2, 0, 1, HYPER_THREADING_PROC, 1, -1}, {3, 0, 1, MAIN_CORE_PROC, 1, -1},
{4, 0, 2, HYPER_THREADING_PROC, 2, -1}, {5, 0, 2, MAIN_CORE_PROC, 2, -1},
{6, 0, 3, HYPER_THREADING_PROC, 3, -1}, {7, 0, 3, MAIN_CORE_PROC, 3, -1},
{8, 0, 4, HYPER_THREADING_PROC, 4, -1}, {9, 0, 4, MAIN_CORE_PROC, 4, -1},
{10, 0, 5, HYPER_THREADING_PROC, 5, -1}, {11, 0, 5, MAIN_CORE_PROC, 5, -1},
{12, 0, 6, EFFICIENT_CORE_PROC, 6, -1}, {13, 0, 7, EFFICIENT_CORE_PROC, 7, -1},
{14, 0, 8, EFFICIENT_CORE_PROC, 8, -1}, {15, 0, 9, EFFICIENT_CORE_PROC, 9, -1},
{16, 0, 10, EFFICIENT_CORE_PROC, 10, -1}, {17, 0, 11, EFFICIENT_CORE_PROC, 11, -1},
{18, 0, 12, EFFICIENT_CORE_PROC, 12, -1}, {19, 0, 13, EFFICIENT_CORE_PROC, 13, -1},
{20, 0, 14, EFFICIENT_CORE_PROC, 14, -1}, {21, 0, 15, EFFICIENT_CORE_PROC, 15, -1},
},
{
{"0-1", "2", "3200040"}, {"0-1", "2", "3200040"}, {"2-3", "3", "3200040"}, {"2-3", "3", "3200040"},
{"4-5", "4", "3200040"}, {"4-5", "4", "3200040"}, {"6-7", "5", "3200040"}, {"6-7", "5", "3200040"},
{"8-9", "6", "3200040"}, {"8-9", "6", "3200040"}, {"10-11", "7", "3200040"}, {"10-11", "7", "3200040"},
{"12", "0", "3100000"}, {"13", "0", "3100000"}, {"14", "0", "3100000"}, {"15", "0", "3100000"},
{"16", "1", "3100000"}, {"17", "1", "3100000"}, {"18", "1", "3100000"}, {"19", "1", "3100000"},
{"20", "8", "1600011"}, {"21", "8", "1600011"},
},
};
LinuxCpuMapTestCase freq_1sockets_12cores_hyperthreading = {
14,
1,
12,
{{14, 2, 10, 2}},
{
{0, 0, 0, HYPER_THREADING_PROC, 0, -1},
{1, 0, 0, MAIN_CORE_PROC, 0, -1},
{2, 0, 1, HYPER_THREADING_PROC, 1, -1},
{3, 0, 1, MAIN_CORE_PROC, 1, -1},
{4, 0, 2, EFFICIENT_CORE_PROC, 2, -1},
{5, 0, 3, EFFICIENT_CORE_PROC, 3, -1},
{6, 0, 4, EFFICIENT_CORE_PROC, 4, -1},
{7, 0, 5, EFFICIENT_CORE_PROC, 5, -1},
{8, 0, 6, EFFICIENT_CORE_PROC, 6, -1},
{9, 0, 7, EFFICIENT_CORE_PROC, 7, -1},
{10, 0, 8, EFFICIENT_CORE_PROC, 8, -1},
{11, 0, 9, EFFICIENT_CORE_PROC, 9, -1},
{12, 0, 10, EFFICIENT_CORE_PROC, 10, -1},
{13, 0, 11, EFFICIENT_CORE_PROC, 11, -1},
},
{
{"0-1", "2", "4100000"},
{"0-1", "2", "4100000"},
{"2-3", "3", "4100000"},
{"2-3", "3", "4100000"},
{"4", "0", "3100000"},
{"5", "0", "3100000"},
{"6", "0", "3100000"},
{"7", "0", "3100000"},
{"8", "1", "3100000"},
{"9", "1", "3100000"},
{"10", "1", "3100000"},
{"11", "1", "3100000"},
{"12", "8", "2100000"},
{"13", "8", "2100000"},
},
};
LinuxCpuMapTestCase freq_1sockets_8cores_hyperthreading = {
16,
1,
8,
{{16, 8, 0, 8}},
{
{0, 0, 0, HYPER_THREADING_PROC, 0, -1},
{1, 0, 0, MAIN_CORE_PROC, 0, -1},
{2, 0, 1, HYPER_THREADING_PROC, 1, -1},
{3, 0, 1, MAIN_CORE_PROC, 1, -1},
{4, 0, 2, HYPER_THREADING_PROC, 2, -1},
{5, 0, 2, MAIN_CORE_PROC, 2, -1},
{6, 0, 3, HYPER_THREADING_PROC, 3, -1},
{7, 0, 3, MAIN_CORE_PROC, 3, -1},
{8, 0, 4, HYPER_THREADING_PROC, 4, -1},
{9, 0, 4, MAIN_CORE_PROC, 4, -1},
{10, 0, 5, HYPER_THREADING_PROC, 5, -1},
{11, 0, 5, MAIN_CORE_PROC, 5, -1},
{12, 0, 6, HYPER_THREADING_PROC, 6, -1},
{13, 0, 6, MAIN_CORE_PROC, 6, -1},
{14, 0, 7, HYPER_THREADING_PROC, 7, -1},
{15, 0, 7, MAIN_CORE_PROC, 7, -1},
},
{
{"0-1", "0", "6100000"},
{"0-1", "0", "6100000"},
{"2-3", "0", "6100000"},
{"2-3", "0", "6100000"},
{"4-5", "0", "6100000"},
{"4-5", "0", "6100000"},
{"6-7", "0", "6100000"},
{"6-7", "0", "6100000"},
{"8-9", "0", "6300000"},
{"8-9", "0", "6300000"},
{"10-11", "0", "6300000"},
{"10-11", "0", "6300000"},
{"12-13", "0", "6100000"},
{"12-13", "0", "6100000"},
{"14-15", "0", "6100000"},
{"14-15", "0", "6100000"},
},
};
LinuxCpuMapTestCase freq_1sockets_8cores_1_hyperthreading = {
16,
1,
8,
{{16, 8, 0, 8}},
{
{0, 0, 0, HYPER_THREADING_PROC, 0, -1},
{1, 0, 1, HYPER_THREADING_PROC, 1, -1},
{2, 0, 2, HYPER_THREADING_PROC, 2, -1},
{3, 0, 3, HYPER_THREADING_PROC, 3, -1},
{4, 0, 4, HYPER_THREADING_PROC, 4, -1},
{5, 0, 5, HYPER_THREADING_PROC, 5, -1},
{6, 0, 6, HYPER_THREADING_PROC, 6, -1},
{7, 0, 7, HYPER_THREADING_PROC, 7, -1},
{8, 0, 0, MAIN_CORE_PROC, 0, -1},
{9, 0, 1, MAIN_CORE_PROC, 1, -1},
{10, 0, 2, MAIN_CORE_PROC, 2, -1},
{11, 0, 3, MAIN_CORE_PROC, 3, -1},
{12, 0, 4, MAIN_CORE_PROC, 4, -1},
{13, 0, 5, MAIN_CORE_PROC, 5, -1},
{14, 0, 6, MAIN_CORE_PROC, 6, -1},
{15, 0, 7, MAIN_CORE_PROC, 7, -1},
},
{
{"0,8", "0", "4700000"},
{"1,9", "0", "4800000"},
{"2,10", "0", "4800000"},
{"3,11", "0", "4700000"},
{"4,12", "0", "4700000"},
{"5,13", "0", "4700000"},
{"6,14", "0", "4700000"},
{"7,15", "0", "4700000"},
{"0,8", "0", "4700000"},
{"1,9", "0", "4800000"},
{"2,10", "0", "4800000"},
{"3,11", "0", "4700000"},
{"4,12", "0", "4700000"},
{"5,13", "0", "4700000"},
{"6,14", "0", "4700000"},
{"7,15", "0", "4700000"},
},
};
LinuxCpuMapTestCase freq_1sockets_4cores = {
4,
1,
4,
{{4, 4, 0, 0}},
{
{0, 0, 0, MAIN_CORE_PROC, 0, -1},
{1, 0, 1, MAIN_CORE_PROC, 1, -1},
{2, 0, 2, MAIN_CORE_PROC, 2, -1},
{3, 0, 3, MAIN_CORE_PROC, 3, -1},
},
{
{"0", "0", "1800000"},
{"1", "0", "1800000"},
{"2", "0", "1800000"},
{"3", "0", "1800000"},
},
};
TEST_P(LinuxCpuMapFreqParserTests, LinuxCpuMapFreq) {}
INSTANTIATE_TEST_SUITE_P(CPUMap,
LinuxCpuMapFreqParserTests,
testing::Values(freq_2sockets_112cores_hyperthreading,
freq_2sockets_48cores_hyperthreading,
freq_2sockets_20cores_hyperthreading,
freq_2sockets_20cores,
freq_1sockets_32cores_hyperthreading,
freq_1sockets_16cores_hyperthreading,
freq_1sockets_16cores,
freq_1sockets_16cores_1_hyperthreading,
freq_1sockets_12cores_hyperthreading,
freq_1sockets_8cores_hyperthreading,
freq_1sockets_8cores_1_hyperthreading,
freq_1sockets_4cores));
#endif
#if defined(_WIN32)