diff --git a/src/inference/src/os/lin/lin_system_conf.cpp b/src/inference/src/os/lin/lin_system_conf.cpp index a0eec2e701b..854dc46ea3d 100644 --- a/src/inference/src/os/lin/lin_system_conf.cpp +++ b/src/inference/src/os/lin/lin_system_conf.cpp @@ -23,24 +23,79 @@ CPU::CPU() { std::vector> system_info_table; _num_threads = parallel_get_max_threads(); - auto GetCatchInfoLinux = [&]() { - _processors = sysconf(_SC_NPROCESSORS_ONLN); - system_info_table.resize(_processors, std::vector(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 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 file_name = {"/topology/core_cpus_list", + "/topology/physical_package_id", + "/cpufreq/cpuinfo_max_freq"}; + int num_of_files = file_name.size(); + std::vector 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 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>().swap(system_info_table); } -void parse_processor_info_linux(const int _processors, - const std::vector> system_info_table, - int& _sockets, - int& _cores, - std::vector>& _proc_type_table, - std::vector>& _cpu_mapping_table) { +void parse_cache_info_linux(const std::vector> system_info_table, + int& _processors, + int& _sockets, + int& _cores, + std::vector>& _proc_type_table, + std::vector>& _cpu_mapping_table) { int n_group = 0; + _processors = system_info_table.size(); _cpu_mapping_table.resize(_processors, std::vector(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> system_info_table, + int& _processors, + int& _sockets, + int& _cores, + std::vector>& _proc_type_table, + std::vector>& _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(CPU_MAP_TABLE_SIZE, -1)); + + std::vector 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(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(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 diff --git a/src/inference/src/streams_executor.hpp b/src/inference/src/streams_executor.hpp index c695106ce07..e887b72cdfa 100644 --- a/src/inference/src/streams_executor.hpp +++ b/src/inference/src/streams_executor.hpp @@ -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> _system_info_table, - int& _sockets, - int& _cores, - std::vector>& _proc_type_table, - std::vector>& _cpu_mapping_table); +void parse_cache_info_linux(const std::vector> _system_info_table, + int& _processors, + int& _sockets, + int& _cores, + std::vector>& _proc_type_table, + std::vector>& _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> _system_info_table, + int& _processors, + int& _sockets, + int& _cores, + std::vector>& _proc_type_table, + std::vector>& _cpu_mapping_table); #endif #if defined(_WIN32) diff --git a/src/inference/tests/unit/cpu_map_parser.cpp b/src/inference/tests/unit/cpu_map_parser.cpp index 9150600f147..0008bcec4d0 100644 --- a/src/inference/tests/unit/cpu_map_parser.cpp +++ b/src/inference/tests/unit/cpu_map_parser.cpp @@ -25,24 +25,26 @@ struct LinuxCpuMapTestCase { std::vector> system_info_table; }; -class LinuxCpuMapParserTests : public CommonTestUtils::TestsCommon, - public testing::WithParamInterface> { +class LinuxCpuMapCacheParserTests : public CommonTestUtils::TestsCommon, + public testing::WithParamInterface> { 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> test_proc_type_table; std::vector> 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> { +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> test_proc_type_table; + std::vector> 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) diff --git a/src/plugins/intel_cpu/src/plugin.cpp b/src/plugins/intel_cpu/src/plugin.cpp index 2c5e536d907..ffcc4e70930 100644 --- a/src/plugins/intel_cpu/src/plugin.cpp +++ b/src/plugins/intel_cpu/src/plugin.cpp @@ -292,6 +292,11 @@ void Engine::GetPerformanceStreams(Config& config, const std::shared_ptr