diff --git a/src/inference/dev_api/ie_system_conf.h b/src/inference/dev_api/ie_system_conf.h index 97edd3d136f..2ad18ab6e8e 100644 --- a/src/inference/dev_api/ie_system_conf.h +++ b/src/inference/dev_api/ie_system_conf.h @@ -10,6 +10,7 @@ #pragma once #include +#include #include #include "ie_api.h" @@ -136,12 +137,26 @@ INFERENCE_ENGINE_API_CPP(bool) with_cpu_x86_avx512_core_amx(); * @enum cpu_core_type_of_processor * @brief This enum contains defination of processor based on specific cpu core types. * Will extend to support other CPU core type like ARM. + * + * This enum are also defination of each columns in processor type table. Below are two example of processor type table. + * 1. Processor table of two socket CPUs XEON server + * + * ALL_PROC | MAIN_CORE_PROC | EFFICIENT_CORE_PROC | HYPER_THREADING_PROC + * 96 48 0 48 // Total number of two sockets + * 48 24 0 24 // Number of socket one + * 48 24 0 24 // Number of socket two + * + * 2. Processor table of one socket CPU desktop + * + * ALL_PROC | MAIN_CORE_PROC | EFFICIENT_CORE_PROC | HYPER_THREADING_PROC + * 32 8 16 8 // Total number of one socket */ typedef enum { ALL_PROC = 0, //!< All processors, regardless of backend cpu MAIN_CORE_PROC = 1, //!< Processor based on physical core of Intel Performance-cores - HYPER_THREADING_PROC = 2, //!< Processor based on logical core of Intel Performance-cores - EFFICIENT_CORE_PROC = 3 //!< Processor based on Intel Efficient-cores + EFFICIENT_CORE_PROC = 2, //!< Processor based on Intel Efficient-cores + HYPER_THREADING_PROC = 3, //!< Processor based on logical core of Intel Performance-cores + PROC_TYPE_TABLE_SIZE = 4 } cpu_core_type_of_processor; /** @@ -173,7 +188,28 @@ typedef enum { CPU_MAP_CORE_ID = 2, //!< column for hardware core id of the processor CPU_MAP_CORE_TYPE = 3, //!< column for CPU core type corresponding to the processor CPU_MAP_GROUP_ID = 4, //!< column for group id to the processor. Processors in one group have dependency. - CPU_MAP_USED_FLAG = 5 //!< column for resource management of the processor + CPU_MAP_USED_FLAG = 5, //!< column for resource management of the processor + CPU_MAP_TABLE_SIZE = 6 } column_of_cpu_mapping_table; +#ifdef __linux__ +/** + * @brief Parse processors infomation on Linux + * @ingroup ie_dev_api_system_conf + * @param[in] _processors total number for processors in system. + * @param[in] _system_info_table system information for this platform. + * @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); +#endif + } // namespace InferenceEngine diff --git a/src/inference/src/os/lin/lin_system_conf.cpp b/src/inference/src/os/lin/lin_system_conf.cpp index 888a0ed2ea2..d961d2025e6 100644 --- a/src/inference/src/os/lin/lin_system_conf.cpp +++ b/src/inference/src/os/lin/lin_system_conf.cpp @@ -24,137 +24,40 @@ struct CPU { int _sockets = 0; int _cores = 0; - std::vector _proc_type_table; + std::vector> _proc_type_table; std::vector> _cpu_mapping_table; CPU() { - std::ifstream cache_1_file("/sys/devices/system/cpu/cpu0/cache/index0/shared_cpu_list"); - std::ifstream cache_2_file("/sys/devices/system/cpu/cpu0/cache/index2/shared_cpu_list"); - std::ifstream cache_3_file("/sys/devices/system/cpu/cpu0/cache/index3/shared_cpu_list"); + std::vector> system_info_table; - if (cache_1_file.is_open() && cache_2_file.is_open() && cache_3_file.is_open()) { - /*New CPU resource based on CPU mapping table*/ + auto GetCatchInfoLinux = [&]() { _processors = sysconf(_SC_NPROCESSORS_ONLN); - _proc_type_table.resize(EFFICIENT_CORE_PROC + 1, 0); - _cpu_mapping_table.resize(_processors, std::vector(CPU_MAP_USED_FLAG + 1, -1)); - int n_group = 0; - - auto updateProcMapping = [&](const int nproc) { - if (-1 == _cpu_mapping_table[nproc][CPU_MAP_CORE_ID]) { - int core_1 = 0; - int core_2 = 0; - std::string::size_type pos = 0; - std::string::size_type endpos = 0; - std::string sub_str = ""; - std::ifstream cache_1_file("/sys/devices/system/cpu/cpu" + std::to_string(nproc) + - "/cache/index0/shared_cpu_list"); - std::ifstream cache_2_file("/sys/devices/system/cpu/cpu" + std::to_string(nproc) + - "/cache/index2/shared_cpu_list"); - std::string cache_1_info; - std::getline(cache_1_file, cache_1_info); - std::string cache_2_info; - std::getline(cache_2_file, cache_2_info); - - if (((endpos = cache_1_info.find(',', pos)) != std::string::npos) || - ((endpos = cache_1_info.find('-', pos)) != std::string::npos)) { - sub_str = cache_1_info.substr(pos, endpos); - core_1 = std::stoi(sub_str); - sub_str = cache_1_info.substr(endpos + 1); - core_2 = std::stoi(sub_str); - - _cpu_mapping_table[core_1][CPU_MAP_PROCESSOR_ID] = core_1; - _cpu_mapping_table[core_2][CPU_MAP_PROCESSOR_ID] = core_2; - _cpu_mapping_table[core_1][CPU_MAP_CORE_ID] = _cores; - _cpu_mapping_table[core_2][CPU_MAP_CORE_ID] = _cores; - /** - * Processor 0 need to handle system interception on Linux. So use second processor as physical - * core and first processor as logic core - */ - _cpu_mapping_table[core_1][CPU_MAP_CORE_TYPE] = HYPER_THREADING_PROC; - _cpu_mapping_table[core_2][CPU_MAP_CORE_TYPE] = MAIN_CORE_PROC; - _cpu_mapping_table[core_1][CPU_MAP_GROUP_ID] = n_group; - _cpu_mapping_table[core_2][CPU_MAP_GROUP_ID] = n_group; - - _cores++; - n_group++; - _proc_type_table[ALL_PROC] += 2; - _proc_type_table[MAIN_CORE_PROC]++; - _proc_type_table[HYPER_THREADING_PROC]++; - - } else if ((endpos = cache_2_info.find('-', pos)) != std::string::npos) { - sub_str = cache_2_info.substr(pos, endpos); - core_1 = std::stoi(sub_str); - sub_str = cache_2_info.substr(endpos + 1); - core_2 = std::stoi(sub_str); - - for (int m = core_1; m <= core_2; m++) { - _cpu_mapping_table[m][CPU_MAP_PROCESSOR_ID] = m; - _cpu_mapping_table[m][CPU_MAP_CORE_ID] = _cores; - _cpu_mapping_table[m][CPU_MAP_CORE_TYPE] = EFFICIENT_CORE_PROC; - _cpu_mapping_table[m][CPU_MAP_GROUP_ID] = n_group; - - _cores++; - _proc_type_table[ALL_PROC]++; - _proc_type_table[EFFICIENT_CORE_PROC]++; - } - n_group++; - - } else { - core_1 = std::stoi(cache_1_info); - - _cpu_mapping_table[core_1][CPU_MAP_CORE_ID] = _cores; - _cpu_mapping_table[core_1][CPU_MAP_CORE_TYPE] = MAIN_CORE_PROC; - _cpu_mapping_table[core_1][CPU_MAP_GROUP_ID] = n_group; - - _cores++; - n_group++; - _proc_type_table[ALL_PROC]++; - _proc_type_table[MAIN_CORE_PROC]++; - } - } - return; - }; + system_info_table.resize(_processors, std::vector(3)); for (int n = 0; n < _processors; n++) { - if (-1 == _cpu_mapping_table[n][CPU_MAP_SOCKET_ID]) { - std::ifstream cache_3_file("/sys/devices/system/cpu/cpu" + std::to_string(n) + - "/cache/index3/shared_cpu_list"); - std::string cache_3_info; - std::getline(cache_3_file, cache_3_info); - std::string::size_type pos = 0; - std::string::size_type endpos = 0; - std::string sub_str; - int core_1; - int core_2; + for (int m = 0; m < 3; m++) { + int Ln = (m == 0) ? m : m + 1; - while (1) { - if ((endpos = cache_3_info.find('-', pos)) != std::string::npos) { - sub_str = cache_3_info.substr(pos, endpos); - core_1 = std::stoi(sub_str); - sub_str = cache_3_info.substr(endpos + 1); - core_2 = std::stoi(sub_str); - - for (int m = core_1; m <= core_2; m++) { - _cpu_mapping_table[m][CPU_MAP_SOCKET_ID] = _sockets; - updateProcMapping(m); - } - } else if (pos != std::string::npos) { - sub_str = cache_3_info.substr(pos); - core_1 = std::stoi(sub_str); - _cpu_mapping_table[core_1][CPU_MAP_SOCKET_ID] = _sockets; - updateProcMapping(core_1); - endpos = pos; - } - - if ((pos = cache_3_info.find(',', endpos)) != std::string::npos) { - pos++; - } else { - break; - } + std::ifstream cache_file("/sys/devices/system/cpu/cpu" + std::to_string(n) + "/cache/index" + + std::to_string(Ln) + "/shared_cpu_list"); + if (!cache_file.is_open()) { + return -1; } - _sockets++; + std::string cache_info; + std::getline(cache_file, cache_info); + system_info_table[n][m] += cache_info; } } + return 0; + }; + + if (!GetCatchInfoLinux()) { + parse_processor_info_linux(_processors, + system_info_table, + _sockets, + _cores, + _proc_type_table, + _cpu_mapping_table); } else { /*Previous CPU resource based on calculation*/ std::ifstream cpuinfo("/proc/cpuinfo"); @@ -188,9 +91,155 @@ struct CPU { _cores = _processors; } } + std::vector>().swap(system_info_table); } }; static CPU cpu; + +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) { + int n_group = 0; + + _cpu_mapping_table.resize(_processors, std::vector(CPU_MAP_TABLE_SIZE, -1)); + + auto UpdateProcMapping = [&](const int nproc) { + if (-1 == _cpu_mapping_table[nproc][CPU_MAP_CORE_ID]) { + int core_1 = 0; + int core_2 = 0; + std::string::size_type pos = 0; + std::string::size_type endpos = 0; + std::string sub_str = ""; + + if (((endpos = system_info_table[nproc][0].find(',', pos)) != std::string::npos) || + ((endpos = system_info_table[nproc][0].find('-', pos)) != std::string::npos)) { + sub_str = system_info_table[nproc][0].substr(pos, endpos); + core_1 = std::stoi(sub_str); + sub_str = system_info_table[nproc][0].substr(endpos + 1); + core_2 = std::stoi(sub_str); + + _cpu_mapping_table[core_1][CPU_MAP_PROCESSOR_ID] = core_1; + _cpu_mapping_table[core_2][CPU_MAP_PROCESSOR_ID] = core_2; + + _cpu_mapping_table[core_1][CPU_MAP_CORE_ID] = _cores; + _cpu_mapping_table[core_2][CPU_MAP_CORE_ID] = _cores; + + /** + * Processor 0 need to handle system interception on Linux. So use second processor as physical core + * and first processor as logic core + */ + _cpu_mapping_table[core_1][CPU_MAP_CORE_TYPE] = HYPER_THREADING_PROC; + _cpu_mapping_table[core_2][CPU_MAP_CORE_TYPE] = MAIN_CORE_PROC; + + _cpu_mapping_table[core_1][CPU_MAP_GROUP_ID] = n_group; + _cpu_mapping_table[core_2][CPU_MAP_GROUP_ID] = n_group; + + _cores++; + n_group++; + + _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); + sub_str = system_info_table[nproc][1].substr(endpos + 1); + core_2 = std::stoi(sub_str); + + for (int m = core_1; m <= core_2; m++) { + _cpu_mapping_table[m][CPU_MAP_PROCESSOR_ID] = m; + _cpu_mapping_table[m][CPU_MAP_CORE_ID] = _cores; + _cpu_mapping_table[m][CPU_MAP_CORE_TYPE] = EFFICIENT_CORE_PROC; + _cpu_mapping_table[m][CPU_MAP_GROUP_ID] = n_group; + + _cores++; + + _proc_type_table[0][ALL_PROC]++; + _proc_type_table[0][EFFICIENT_CORE_PROC]++; + } + + n_group++; + + } else { + core_1 = std::stoi(system_info_table[nproc][0]); + + _cpu_mapping_table[core_1][CPU_MAP_CORE_ID] = _cores; + _cpu_mapping_table[core_1][CPU_MAP_CORE_TYPE] = MAIN_CORE_PROC; + _cpu_mapping_table[core_1][CPU_MAP_GROUP_ID] = n_group; + + _cores++; + n_group++; + + _proc_type_table[0][ALL_PROC]++; + _proc_type_table[0][MAIN_CORE_PROC]++; + } + } + return; + }; + + 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 endpos = 0; + std::string sub_str; + + int core_1; + int core_2; + + if (0 == _sockets) { + _proc_type_table.push_back(line_value_0); + } else { + _proc_type_table.push_back(_proc_type_table[0]); + _proc_type_table[0] = line_value_0; + } + + while (1) { + if ((endpos = system_info_table[n][2].find('-', pos)) != std::string::npos) { + sub_str = system_info_table[n][2].substr(pos, endpos); + core_1 = std::stoi(sub_str); + sub_str = system_info_table[n][2].substr(endpos + 1); + core_2 = std::stoi(sub_str); + + for (int m = core_1; m <= core_2; m++) { + _cpu_mapping_table[m][CPU_MAP_SOCKET_ID] = _sockets; + UpdateProcMapping(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); + endpos = pos; + } + + if ((pos = system_info_table[n][2].find(',', endpos)) != std::string::npos) { + pos++; + } else { + break; + } + } + _sockets++; + } + } + if (_sockets > 1) { + _proc_type_table.push_back(_proc_type_table[0]); + _proc_type_table[0] = line_value_0; + + for (int m = 1; m <= _sockets; m++) { + for (int n = 0; n < PROC_TYPE_TABLE_SIZE; n++) { + _proc_type_table[0][n] += _proc_type_table[m][n]; + } + } + } +}; + #if !((IE_THREAD == IE_THREAD_TBB || IE_THREAD == IE_THREAD_TBB_AUTO)) std::vector getAvailableNUMANodes() { std::vector nodes((0 == cpu._sockets) ? 1 : cpu._sockets); diff --git a/src/inference/tests/unit/cpu_map_parser.cpp b/src/inference/tests/unit/cpu_map_parser.cpp new file mode 100644 index 00000000000..163aee67c18 --- /dev/null +++ b/src/inference/tests/unit/cpu_map_parser.cpp @@ -0,0 +1,571 @@ +// Copyright (C) 2018-2022 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include + +#include "ie_system_conf.h" + +using namespace testing; +using namespace InferenceEngine; + +namespace { + +#ifdef __linux__ + +struct LinuxCpuMapTestCase { + int _processors; + int _sockets; + int _cores; + std::vector> _proc_type_table; + std::vector> _cpu_mapping_table; + std::vector> system_info_table; +}; + +class LinuxCpuMapParserTests : public CommonTestUtils::TestsCommon, + public testing::WithParamInterface> { +public: + void SetUp() override { + const auto& test_data = std::get<0>(GetParam()); + + int test_sockets = 0; + int test_cores = 0; + std::vector> test_proc_type_table; + std::vector> test_cpu_mapping_table; + + InferenceEngine::parse_processor_info_linux(test_data._processors, + test_data.system_info_table, + test_sockets, + test_cores, + test_proc_type_table, + test_cpu_mapping_table); + + 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 _2sockets_104cores_hyperthreading = { + 208, + 2, + 104, + {{{208}, {104}, {0}, {104}}, {{104}, {52}, {0}, {52}}, {{104}, {52}, {0}, {52}}}, + { + {{0}, {0}, {0}, {3}, {0}, {-1}}, {{1}, {0}, {1}, {3}, {1}, {-1}}, + {{2}, {0}, {2}, {3}, {2}, {-1}}, {{3}, {0}, {3}, {3}, {3}, {-1}}, + {{4}, {0}, {4}, {3}, {4}, {-1}}, {{5}, {0}, {5}, {3}, {5}, {-1}}, + {{6}, {0}, {6}, {3}, {6}, {-1}}, {{7}, {0}, {7}, {3}, {7}, {-1}}, + {{8}, {0}, {8}, {3}, {8}, {-1}}, {{9}, {0}, {9}, {3}, {9}, {-1}}, + {{10}, {0}, {10}, {3}, {10}, {-1}}, {{11}, {0}, {11}, {3}, {11}, {-1}}, + {{12}, {0}, {12}, {3}, {12}, {-1}}, {{13}, {0}, {13}, {3}, {13}, {-1}}, + {{14}, {0}, {14}, {3}, {14}, {-1}}, {{15}, {0}, {15}, {3}, {15}, {-1}}, + {{16}, {0}, {16}, {3}, {16}, {-1}}, {{17}, {0}, {17}, {3}, {17}, {-1}}, + {{18}, {0}, {18}, {3}, {18}, {-1}}, {{19}, {0}, {19}, {3}, {19}, {-1}}, + {{20}, {0}, {20}, {3}, {20}, {-1}}, {{21}, {0}, {21}, {3}, {21}, {-1}}, + {{22}, {0}, {22}, {3}, {22}, {-1}}, {{23}, {0}, {23}, {3}, {23}, {-1}}, + {{24}, {0}, {24}, {3}, {24}, {-1}}, {{25}, {0}, {25}, {3}, {25}, {-1}}, + {{26}, {0}, {26}, {3}, {26}, {-1}}, {{27}, {0}, {27}, {3}, {27}, {-1}}, + {{28}, {0}, {28}, {3}, {28}, {-1}}, {{29}, {0}, {29}, {3}, {29}, {-1}}, + {{30}, {0}, {30}, {3}, {30}, {-1}}, {{31}, {0}, {31}, {3}, {31}, {-1}}, + {{32}, {0}, {32}, {3}, {32}, {-1}}, {{33}, {0}, {33}, {3}, {33}, {-1}}, + {{34}, {0}, {34}, {3}, {34}, {-1}}, {{35}, {0}, {35}, {3}, {35}, {-1}}, + {{36}, {0}, {36}, {3}, {36}, {-1}}, {{37}, {0}, {37}, {3}, {37}, {-1}}, + {{38}, {0}, {38}, {3}, {38}, {-1}}, {{39}, {0}, {39}, {3}, {39}, {-1}}, + {{40}, {0}, {40}, {3}, {40}, {-1}}, {{41}, {0}, {41}, {3}, {41}, {-1}}, + {{42}, {0}, {42}, {3}, {42}, {-1}}, {{43}, {0}, {43}, {3}, {43}, {-1}}, + {{44}, {0}, {44}, {3}, {44}, {-1}}, {{45}, {0}, {45}, {3}, {45}, {-1}}, + {{46}, {0}, {46}, {3}, {46}, {-1}}, {{47}, {0}, {47}, {3}, {47}, {-1}}, + {{48}, {0}, {48}, {3}, {48}, {-1}}, {{49}, {0}, {49}, {3}, {49}, {-1}}, + {{50}, {0}, {50}, {3}, {50}, {-1}}, {{51}, {0}, {51}, {3}, {51}, {-1}}, + {{52}, {1}, {52}, {3}, {52}, {-1}}, {{53}, {1}, {53}, {3}, {53}, {-1}}, + {{54}, {1}, {54}, {3}, {54}, {-1}}, {{55}, {1}, {55}, {3}, {55}, {-1}}, + {{56}, {1}, {56}, {3}, {56}, {-1}}, {{57}, {1}, {57}, {3}, {57}, {-1}}, + {{58}, {1}, {58}, {3}, {58}, {-1}}, {{59}, {1}, {59}, {3}, {59}, {-1}}, + {{60}, {1}, {60}, {3}, {60}, {-1}}, {{61}, {1}, {61}, {3}, {61}, {-1}}, + {{62}, {1}, {62}, {3}, {62}, {-1}}, {{63}, {1}, {63}, {3}, {63}, {-1}}, + {{64}, {1}, {64}, {3}, {64}, {-1}}, {{65}, {1}, {65}, {3}, {65}, {-1}}, + {{66}, {1}, {66}, {3}, {66}, {-1}}, {{67}, {1}, {67}, {3}, {67}, {-1}}, + {{68}, {1}, {68}, {3}, {68}, {-1}}, {{69}, {1}, {69}, {3}, {69}, {-1}}, + {{70}, {1}, {70}, {3}, {70}, {-1}}, {{71}, {1}, {71}, {3}, {71}, {-1}}, + {{72}, {1}, {72}, {3}, {72}, {-1}}, {{73}, {1}, {73}, {3}, {73}, {-1}}, + {{74}, {1}, {74}, {3}, {74}, {-1}}, {{75}, {1}, {75}, {3}, {75}, {-1}}, + {{76}, {1}, {76}, {3}, {76}, {-1}}, {{77}, {1}, {77}, {3}, {77}, {-1}}, + {{78}, {1}, {78}, {3}, {78}, {-1}}, {{79}, {1}, {79}, {3}, {79}, {-1}}, + {{80}, {1}, {80}, {3}, {80}, {-1}}, {{81}, {1}, {81}, {3}, {81}, {-1}}, + {{82}, {1}, {82}, {3}, {82}, {-1}}, {{83}, {1}, {83}, {3}, {83}, {-1}}, + {{84}, {1}, {84}, {3}, {84}, {-1}}, {{85}, {1}, {85}, {3}, {85}, {-1}}, + {{86}, {1}, {86}, {3}, {86}, {-1}}, {{87}, {1}, {87}, {3}, {87}, {-1}}, + {{88}, {1}, {88}, {3}, {88}, {-1}}, {{89}, {1}, {89}, {3}, {89}, {-1}}, + {{90}, {1}, {90}, {3}, {90}, {-1}}, {{91}, {1}, {91}, {3}, {91}, {-1}}, + {{92}, {1}, {92}, {3}, {92}, {-1}}, {{93}, {1}, {93}, {3}, {93}, {-1}}, + {{94}, {1}, {94}, {3}, {94}, {-1}}, {{95}, {1}, {95}, {3}, {95}, {-1}}, + {{96}, {1}, {96}, {3}, {96}, {-1}}, {{97}, {1}, {97}, {3}, {97}, {-1}}, + {{98}, {1}, {98}, {3}, {98}, {-1}}, {{99}, {1}, {99}, {3}, {99}, {-1}}, + {{100}, {1}, {100}, {3}, {100}, {-1}}, {{101}, {1}, {101}, {3}, {101}, {-1}}, + {{102}, {1}, {102}, {3}, {102}, {-1}}, {{103}, {1}, {103}, {3}, {103}, {-1}}, + {{104}, {0}, {0}, {1}, {0}, {-1}}, {{105}, {0}, {1}, {1}, {1}, {-1}}, + {{106}, {0}, {2}, {1}, {2}, {-1}}, {{107}, {0}, {3}, {1}, {3}, {-1}}, + {{108}, {0}, {4}, {1}, {4}, {-1}}, {{109}, {0}, {5}, {1}, {5}, {-1}}, + {{110}, {0}, {6}, {1}, {6}, {-1}}, {{111}, {0}, {7}, {1}, {7}, {-1}}, + {{112}, {0}, {8}, {1}, {8}, {-1}}, {{113}, {0}, {9}, {1}, {9}, {-1}}, + {{114}, {0}, {10}, {1}, {10}, {-1}}, {{115}, {0}, {11}, {1}, {11}, {-1}}, + {{116}, {0}, {12}, {1}, {12}, {-1}}, {{117}, {0}, {13}, {1}, {13}, {-1}}, + {{118}, {0}, {14}, {1}, {14}, {-1}}, {{119}, {0}, {15}, {1}, {15}, {-1}}, + {{120}, {0}, {16}, {1}, {16}, {-1}}, {{121}, {0}, {17}, {1}, {17}, {-1}}, + {{122}, {0}, {18}, {1}, {18}, {-1}}, {{123}, {0}, {19}, {1}, {19}, {-1}}, + {{124}, {0}, {20}, {1}, {20}, {-1}}, {{125}, {0}, {21}, {1}, {21}, {-1}}, + {{126}, {0}, {22}, {1}, {22}, {-1}}, {{127}, {0}, {23}, {1}, {23}, {-1}}, + {{128}, {0}, {24}, {1}, {24}, {-1}}, {{129}, {0}, {25}, {1}, {25}, {-1}}, + {{130}, {0}, {26}, {1}, {26}, {-1}}, {{131}, {0}, {27}, {1}, {27}, {-1}}, + {{132}, {0}, {28}, {1}, {28}, {-1}}, {{133}, {0}, {29}, {1}, {29}, {-1}}, + {{134}, {0}, {30}, {1}, {30}, {-1}}, {{135}, {0}, {31}, {1}, {31}, {-1}}, + {{136}, {0}, {32}, {1}, {32}, {-1}}, {{137}, {0}, {33}, {1}, {33}, {-1}}, + {{138}, {0}, {34}, {1}, {34}, {-1}}, {{139}, {0}, {35}, {1}, {35}, {-1}}, + {{140}, {0}, {36}, {1}, {36}, {-1}}, {{141}, {0}, {37}, {1}, {37}, {-1}}, + {{142}, {0}, {38}, {1}, {38}, {-1}}, {{143}, {0}, {39}, {1}, {39}, {-1}}, + {{144}, {0}, {40}, {1}, {40}, {-1}}, {{145}, {0}, {41}, {1}, {41}, {-1}}, + {{146}, {0}, {42}, {1}, {42}, {-1}}, {{147}, {0}, {43}, {1}, {43}, {-1}}, + {{148}, {0}, {44}, {1}, {44}, {-1}}, {{149}, {0}, {45}, {1}, {45}, {-1}}, + {{150}, {0}, {46}, {1}, {46}, {-1}}, {{151}, {0}, {47}, {1}, {47}, {-1}}, + {{152}, {0}, {48}, {1}, {48}, {-1}}, {{153}, {0}, {49}, {1}, {49}, {-1}}, + {{154}, {0}, {50}, {1}, {50}, {-1}}, {{155}, {0}, {51}, {1}, {51}, {-1}}, + {{156}, {1}, {52}, {1}, {52}, {-1}}, {{157}, {1}, {53}, {1}, {53}, {-1}}, + {{158}, {1}, {54}, {1}, {54}, {-1}}, {{159}, {1}, {55}, {1}, {55}, {-1}}, + {{160}, {1}, {56}, {1}, {56}, {-1}}, {{161}, {1}, {57}, {1}, {57}, {-1}}, + {{162}, {1}, {58}, {1}, {58}, {-1}}, {{163}, {1}, {59}, {1}, {59}, {-1}}, + {{164}, {1}, {60}, {1}, {60}, {-1}}, {{165}, {1}, {61}, {1}, {61}, {-1}}, + {{166}, {1}, {62}, {1}, {62}, {-1}}, {{167}, {1}, {63}, {1}, {63}, {-1}}, + {{168}, {1}, {64}, {1}, {64}, {-1}}, {{169}, {1}, {65}, {1}, {65}, {-1}}, + {{170}, {1}, {66}, {1}, {66}, {-1}}, {{171}, {1}, {67}, {1}, {67}, {-1}}, + {{172}, {1}, {68}, {1}, {68}, {-1}}, {{173}, {1}, {69}, {1}, {69}, {-1}}, + {{174}, {1}, {70}, {1}, {70}, {-1}}, {{175}, {1}, {71}, {1}, {71}, {-1}}, + {{176}, {1}, {72}, {1}, {72}, {-1}}, {{177}, {1}, {73}, {1}, {73}, {-1}}, + {{178}, {1}, {74}, {1}, {74}, {-1}}, {{179}, {1}, {75}, {1}, {75}, {-1}}, + {{180}, {1}, {76}, {1}, {76}, {-1}}, {{181}, {1}, {77}, {1}, {77}, {-1}}, + {{182}, {1}, {78}, {1}, {78}, {-1}}, {{183}, {1}, {79}, {1}, {79}, {-1}}, + {{184}, {1}, {80}, {1}, {80}, {-1}}, {{185}, {1}, {81}, {1}, {81}, {-1}}, + {{186}, {1}, {82}, {1}, {82}, {-1}}, {{187}, {1}, {83}, {1}, {83}, {-1}}, + {{188}, {1}, {84}, {1}, {84}, {-1}}, {{189}, {1}, {85}, {1}, {85}, {-1}}, + {{190}, {1}, {86}, {1}, {86}, {-1}}, {{191}, {1}, {87}, {1}, {87}, {-1}}, + {{192}, {1}, {88}, {1}, {88}, {-1}}, {{193}, {1}, {89}, {1}, {89}, {-1}}, + {{194}, {1}, {90}, {1}, {90}, {-1}}, {{195}, {1}, {91}, {1}, {91}, {-1}}, + {{196}, {1}, {92}, {1}, {92}, {-1}}, {{197}, {1}, {93}, {1}, {93}, {-1}}, + {{198}, {1}, {94}, {1}, {94}, {-1}}, {{199}, {1}, {95}, {1}, {95}, {-1}}, + {{200}, {1}, {96}, {1}, {96}, {-1}}, {{201}, {1}, {97}, {1}, {97}, {-1}}, + {{202}, {1}, {98}, {1}, {98}, {-1}}, {{203}, {1}, {99}, {1}, {99}, {-1}}, + {{204}, {1}, {100}, {1}, {100}, {-1}}, {{205}, {1}, {101}, {1}, {101}, {-1}}, + {{206}, {1}, {102}, {1}, {102}, {-1}}, {{207}, {1}, {103}, {1}, {103}, {-1}}, + }, + { + {{"0,104"}, {"0,104"}, {"0-51,104-155"}}, {{"1,105"}, {"1,105"}, {"0-51,104-155"}}, + {{"2,106"}, {"2,106"}, {"0-51,104-155"}}, {{"3,107"}, {"3,107"}, {"0-51,104-155"}}, + {{"4,108"}, {"4,108"}, {"0-51,104-155"}}, {{"5,109"}, {"5,109"}, {"0-51,104-155"}}, + {{"6,110"}, {"6,110"}, {"0-51,104-155"}}, {{"7,111"}, {"7,111"}, {"0-51,104-155"}}, + {{"8,112"}, {"8,112"}, {"0-51,104-155"}}, {{"9,113"}, {"9,113"}, {"0-51,104-155"}}, + {{"10,114"}, {"10,114"}, {"0-51,104-155"}}, {{"11,115"}, {"11,115"}, {"0-51,104-155"}}, + {{"12,116"}, {"12,116"}, {"0-51,104-155"}}, {{"13,117"}, {"13,117"}, {"0-51,104-155"}}, + {{"14,118"}, {"14,118"}, {"0-51,104-155"}}, {{"15,119"}, {"15,119"}, {"0-51,104-155"}}, + {{"16,120"}, {"16,120"}, {"0-51,104-155"}}, {{"17,121"}, {"17,121"}, {"0-51,104-155"}}, + {{"18,122"}, {"18,122"}, {"0-51,104-155"}}, {{"19,123"}, {"19,123"}, {"0-51,104-155"}}, + {{"20,124"}, {"20,124"}, {"0-51,104-155"}}, {{"21,125"}, {"21,125"}, {"0-51,104-155"}}, + {{"22,126"}, {"22,126"}, {"0-51,104-155"}}, {{"23,127"}, {"23,127"}, {"0-51,104-155"}}, + {{"24,128"}, {"24,128"}, {"0-51,104-155"}}, {{"25,129"}, {"25,129"}, {"0-51,104-155"}}, + {{"26,130"}, {"26,130"}, {"0-51,104-155"}}, {{"27,131"}, {"27,131"}, {"0-51,104-155"}}, + {{"28,132"}, {"28,132"}, {"0-51,104-155"}}, {{"29,133"}, {"29,133"}, {"0-51,104-155"}}, + {{"30,134"}, {"30,134"}, {"0-51,104-155"}}, {{"31,135"}, {"31,135"}, {"0-51,104-155"}}, + {{"32,136"}, {"32,136"}, {"0-51,104-155"}}, {{"33,137"}, {"33,137"}, {"0-51,104-155"}}, + {{"34,138"}, {"34,138"}, {"0-51,104-155"}}, {{"35,139"}, {"35,139"}, {"0-51,104-155"}}, + {{"36,140"}, {"36,140"}, {"0-51,104-155"}}, {{"37,141"}, {"37,141"}, {"0-51,104-155"}}, + {{"38,142"}, {"38,142"}, {"0-51,104-155"}}, {{"39,143"}, {"39,143"}, {"0-51,104-155"}}, + {{"40,144"}, {"40,144"}, {"0-51,104-155"}}, {{"41,145"}, {"41,145"}, {"0-51,104-155"}}, + {{"42,146"}, {"42,146"}, {"0-51,104-155"}}, {{"43,147"}, {"43,147"}, {"0-51,104-155"}}, + {{"44,148"}, {"44,148"}, {"0-51,104-155"}}, {{"45,149"}, {"45,149"}, {"0-51,104-155"}}, + {{"46,150"}, {"46,150"}, {"0-51,104-155"}}, {{"47,151"}, {"47,151"}, {"0-51,104-155"}}, + {{"48,152"}, {"48,152"}, {"0-51,104-155"}}, {{"49,153"}, {"49,153"}, {"0-51,104-155"}}, + {{"50,154"}, {"50,154"}, {"0-51,104-155"}}, {{"51,155"}, {"51,155"}, {"0-51,104-155"}}, + {{"52,156"}, {"52,156"}, {"52-103,156-207"}}, {{"53,157"}, {"53,157"}, {"52-103,156-207"}}, + {{"54,158"}, {"54,158"}, {"52-103,156-207"}}, {{"55,159"}, {"55,159"}, {"52-103,156-207"}}, + {{"56,160"}, {"56,160"}, {"52-103,156-207"}}, {{"57,161"}, {"57,161"}, {"52-103,156-207"}}, + {{"58,162"}, {"58,162"}, {"52-103,156-207"}}, {{"59,163"}, {"59,163"}, {"52-103,156-207"}}, + {{"60,164"}, {"60,164"}, {"52-103,156-207"}}, {{"61,165"}, {"61,165"}, {"52-103,156-207"}}, + {{"62,166"}, {"62,166"}, {"52-103,156-207"}}, {{"63,167"}, {"63,167"}, {"52-103,156-207"}}, + {{"64,168"}, {"64,168"}, {"52-103,156-207"}}, {{"65,169"}, {"65,169"}, {"52-103,156-207"}}, + {{"66,170"}, {"66,170"}, {"52-103,156-207"}}, {{"67,171"}, {"67,171"}, {"52-103,156-207"}}, + {{"68,172"}, {"68,172"}, {"52-103,156-207"}}, {{"69,173"}, {"69,173"}, {"52-103,156-207"}}, + {{"70,174"}, {"70,174"}, {"52-103,156-207"}}, {{"71,175"}, {"71,175"}, {"52-103,156-207"}}, + {{"72,176"}, {"72,176"}, {"52-103,156-207"}}, {{"73,177"}, {"73,177"}, {"52-103,156-207"}}, + {{"74,178"}, {"74,178"}, {"52-103,156-207"}}, {{"75,179"}, {"75,179"}, {"52-103,156-207"}}, + {{"76,180"}, {"76,180"}, {"52-103,156-207"}}, {{"77,181"}, {"77,181"}, {"52-103,156-207"}}, + {{"78,182"}, {"78,182"}, {"52-103,156-207"}}, {{"79,183"}, {"79,183"}, {"52-103,156-207"}}, + {{"80,184"}, {"80,184"}, {"52-103,156-207"}}, {{"81,185"}, {"81,185"}, {"52-103,156-207"}}, + {{"82,186"}, {"82,186"}, {"52-103,156-207"}}, {{"83,187"}, {"83,187"}, {"52-103,156-207"}}, + {{"84,188"}, {"84,188"}, {"52-103,156-207"}}, {{"85,189"}, {"85,189"}, {"52-103,156-207"}}, + {{"86,190"}, {"86,190"}, {"52-103,156-207"}}, {{"87,191"}, {"87,191"}, {"52-103,156-207"}}, + {{"88,192"}, {"88,192"}, {"52-103,156-207"}}, {{"89,193"}, {"89,193"}, {"52-103,156-207"}}, + {{"90,194"}, {"90,194"}, {"52-103,156-207"}}, {{"91,195"}, {"91,195"}, {"52-103,156-207"}}, + {{"92,196"}, {"92,196"}, {"52-103,156-207"}}, {{"93,197"}, {"93,197"}, {"52-103,156-207"}}, + {{"94,198"}, {"94,198"}, {"52-103,156-207"}}, {{"95,199"}, {"95,199"}, {"52-103,156-207"}}, + {{"96,200"}, {"96,200"}, {"52-103,156-207"}}, {{"97,201"}, {"97,201"}, {"52-103,156-207"}}, + {{"98,202"}, {"98,202"}, {"52-103,156-207"}}, {{"99,203"}, {"99,203"}, {"52-103,156-207"}}, + {{"100,204"}, {"100,204"}, {"52-103,156-207"}}, {{"101,205"}, {"101,205"}, {"52-103,156-207"}}, + {{"102,206"}, {"102,206"}, {"52-103,156-207"}}, {{"103,207"}, {"103,207"}, {"52-103,156-207"}}, + {{"0,104"}, {"0,104"}, {"0-51,104-155"}}, {{"1,105"}, {"1,105"}, {"0-51,104-155"}}, + {{"2,106"}, {"2,106"}, {"0-51,104-155"}}, {{"3,107"}, {"3,107"}, {"0-51,104-155"}}, + {{"4,108"}, {"4,108"}, {"0-51,104-155"}}, {{"5,109"}, {"5,109"}, {"0-51,104-155"}}, + {{"6,110"}, {"6,110"}, {"0-51,104-155"}}, {{"7,111"}, {"7,111"}, {"0-51,104-155"}}, + {{"8,112"}, {"8,112"}, {"0-51,104-155"}}, {{"9,113"}, {"9,113"}, {"0-51,104-155"}}, + {{"10,114"}, {"10,114"}, {"0-51,104-155"}}, {{"11,115"}, {"11,115"}, {"0-51,104-155"}}, + {{"12,116"}, {"12,116"}, {"0-51,104-155"}}, {{"13,117"}, {"13,117"}, {"0-51,104-155"}}, + {{"14,118"}, {"14,118"}, {"0-51,104-155"}}, {{"15,119"}, {"15,119"}, {"0-51,104-155"}}, + {{"16,120"}, {"16,120"}, {"0-51,104-155"}}, {{"17,121"}, {"17,121"}, {"0-51,104-155"}}, + {{"18,122"}, {"18,122"}, {"0-51,104-155"}}, {{"19,123"}, {"19,123"}, {"0-51,104-155"}}, + {{"20,124"}, {"20,124"}, {"0-51,104-155"}}, {{"21,125"}, {"21,125"}, {"0-51,104-155"}}, + {{"22,126"}, {"22,126"}, {"0-51,104-155"}}, {{"23,127"}, {"23,127"}, {"0-51,104-155"}}, + {{"24,128"}, {"24,128"}, {"0-51,104-155"}}, {{"25,129"}, {"25,129"}, {"0-51,104-155"}}, + {{"26,130"}, {"26,130"}, {"0-51,104-155"}}, {{"27,131"}, {"27,131"}, {"0-51,104-155"}}, + {{"28,132"}, {"28,132"}, {"0-51,104-155"}}, {{"29,133"}, {"29,133"}, {"0-51,104-155"}}, + {{"30,134"}, {"30,134"}, {"0-51,104-155"}}, {{"31,135"}, {"31,135"}, {"0-51,104-155"}}, + {{"32,136"}, {"32,136"}, {"0-51,104-155"}}, {{"33,137"}, {"33,137"}, {"0-51,104-155"}}, + {{"34,138"}, {"34,138"}, {"0-51,104-155"}}, {{"35,139"}, {"35,139"}, {"0-51,104-155"}}, + {{"36,140"}, {"36,140"}, {"0-51,104-155"}}, {{"37,141"}, {"37,141"}, {"0-51,104-155"}}, + {{"38,142"}, {"38,142"}, {"0-51,104-155"}}, {{"39,143"}, {"39,143"}, {"0-51,104-155"}}, + {{"40,144"}, {"40,144"}, {"0-51,104-155"}}, {{"41,145"}, {"41,145"}, {"0-51,104-155"}}, + {{"42,146"}, {"42,146"}, {"0-51,104-155"}}, {{"43,147"}, {"43,147"}, {"0-51,104-155"}}, + {{"44,148"}, {"44,148"}, {"0-51,104-155"}}, {{"45,149"}, {"45,149"}, {"0-51,104-155"}}, + {{"46,150"}, {"46,150"}, {"0-51,104-155"}}, {{"47,151"}, {"47,151"}, {"0-51,104-155"}}, + {{"48,152"}, {"48,152"}, {"0-51,104-155"}}, {{"49,153"}, {"49,153"}, {"0-51,104-155"}}, + {{"50,154"}, {"50,154"}, {"0-51,104-155"}}, {{"51,155"}, {"51,155"}, {"0-51,104-155"}}, + {{"52,156"}, {"52,156"}, {"52-103,156-207"}}, {{"53,157"}, {"53,157"}, {"52-103,156-207"}}, + {{"54,158"}, {"54,158"}, {"52-103,156-207"}}, {{"55,159"}, {"55,159"}, {"52-103,156-207"}}, + {{"56,160"}, {"56,160"}, {"52-103,156-207"}}, {{"57,161"}, {"57,161"}, {"52-103,156-207"}}, + {{"58,162"}, {"58,162"}, {"52-103,156-207"}}, {{"59,163"}, {"59,163"}, {"52-103,156-207"}}, + {{"60,164"}, {"60,164"}, {"52-103,156-207"}}, {{"61,165"}, {"61,165"}, {"52-103,156-207"}}, + {{"62,166"}, {"62,166"}, {"52-103,156-207"}}, {{"63,167"}, {"63,167"}, {"52-103,156-207"}}, + {{"64,168"}, {"64,168"}, {"52-103,156-207"}}, {{"65,169"}, {"65,169"}, {"52-103,156-207"}}, + {{"66,170"}, {"66,170"}, {"52-103,156-207"}}, {{"67,171"}, {"67,171"}, {"52-103,156-207"}}, + {{"68,172"}, {"68,172"}, {"52-103,156-207"}}, {{"69,173"}, {"69,173"}, {"52-103,156-207"}}, + {{"70,174"}, {"70,174"}, {"52-103,156-207"}}, {{"71,175"}, {"71,175"}, {"52-103,156-207"}}, + {{"72,176"}, {"72,176"}, {"52-103,156-207"}}, {{"73,177"}, {"73,177"}, {"52-103,156-207"}}, + {{"74,178"}, {"74,178"}, {"52-103,156-207"}}, {{"75,179"}, {"75,179"}, {"52-103,156-207"}}, + {{"76,180"}, {"76,180"}, {"52-103,156-207"}}, {{"77,181"}, {"77,181"}, {"52-103,156-207"}}, + {{"78,182"}, {"78,182"}, {"52-103,156-207"}}, {{"79,183"}, {"79,183"}, {"52-103,156-207"}}, + {{"80,184"}, {"80,184"}, {"52-103,156-207"}}, {{"81,185"}, {"81,185"}, {"52-103,156-207"}}, + {{"82,186"}, {"82,186"}, {"52-103,156-207"}}, {{"83,187"}, {"83,187"}, {"52-103,156-207"}}, + {{"84,188"}, {"84,188"}, {"52-103,156-207"}}, {{"85,189"}, {"85,189"}, {"52-103,156-207"}}, + {{"86,190"}, {"86,190"}, {"52-103,156-207"}}, {{"87,191"}, {"87,191"}, {"52-103,156-207"}}, + {{"88,192"}, {"88,192"}, {"52-103,156-207"}}, {{"89,193"}, {"89,193"}, {"52-103,156-207"}}, + {{"90,194"}, {"90,194"}, {"52-103,156-207"}}, {{"91,195"}, {"91,195"}, {"52-103,156-207"}}, + {{"92,196"}, {"92,196"}, {"52-103,156-207"}}, {{"93,197"}, {"93,197"}, {"52-103,156-207"}}, + {{"94,198"}, {"94,198"}, {"52-103,156-207"}}, {{"95,199"}, {"95,199"}, {"52-103,156-207"}}, + {{"96,200"}, {"96,200"}, {"52-103,156-207"}}, {{"97,201"}, {"97,201"}, {"52-103,156-207"}}, + {{"98,202"}, {"98,202"}, {"52-103,156-207"}}, {{"99,203"}, {"99,203"}, {"52-103,156-207"}}, + {{"100,204"}, {"100,204"}, {"52-103,156-207"}}, {{"101,205"}, {"101,205"}, {"52-103,156-207"}}, + {{"102,206"}, {"102,206"}, {"52-103,156-207"}}, {{"103,207"}, {"103,207"}, {"52-103,156-207"}}, + }, +}; +LinuxCpuMapTestCase _2sockets_24cores_hyperthreading = { + 48, + 2, + 24, + {{{48}, {24}, {0}, {24}}, {{24}, {12}, {0}, {12}}, {{24}, {12}, {0}, {12}}}, + { + {{0}, {0}, {0}, {3}, {0}, {-1}}, {{1}, {1}, {12}, {3}, {12}, {-1}}, {{2}, {0}, {1}, {3}, {1}, {-1}}, + {{3}, {1}, {13}, {3}, {13}, {-1}}, {{4}, {0}, {2}, {3}, {2}, {-1}}, {{5}, {1}, {14}, {3}, {14}, {-1}}, + {{6}, {0}, {3}, {3}, {3}, {-1}}, {{7}, {1}, {15}, {3}, {15}, {-1}}, {{8}, {0}, {4}, {3}, {4}, {-1}}, + {{9}, {1}, {16}, {3}, {16}, {-1}}, {{10}, {0}, {5}, {3}, {5}, {-1}}, {{11}, {1}, {17}, {3}, {17}, {-1}}, + {{12}, {0}, {6}, {3}, {6}, {-1}}, {{13}, {1}, {18}, {3}, {18}, {-1}}, {{14}, {0}, {7}, {3}, {7}, {-1}}, + {{15}, {1}, {19}, {3}, {19}, {-1}}, {{16}, {0}, {8}, {3}, {8}, {-1}}, {{17}, {1}, {20}, {3}, {20}, {-1}}, + {{18}, {0}, {9}, {3}, {9}, {-1}}, {{19}, {1}, {21}, {3}, {21}, {-1}}, {{20}, {0}, {10}, {3}, {10}, {-1}}, + {{21}, {1}, {22}, {3}, {22}, {-1}}, {{22}, {0}, {11}, {3}, {11}, {-1}}, {{23}, {1}, {23}, {3}, {23}, {-1}}, + {{24}, {0}, {0}, {1}, {0}, {-1}}, {{25}, {1}, {12}, {1}, {12}, {-1}}, {{26}, {0}, {1}, {1}, {1}, {-1}}, + {{27}, {1}, {13}, {1}, {13}, {-1}}, {{28}, {0}, {2}, {1}, {2}, {-1}}, {{29}, {1}, {14}, {1}, {14}, {-1}}, + {{30}, {0}, {3}, {1}, {3}, {-1}}, {{31}, {1}, {15}, {1}, {15}, {-1}}, {{32}, {0}, {4}, {1}, {4}, {-1}}, + {{33}, {1}, {16}, {1}, {16}, {-1}}, {{34}, {0}, {5}, {1}, {5}, {-1}}, {{35}, {1}, {17}, {1}, {17}, {-1}}, + {{36}, {0}, {6}, {1}, {6}, {-1}}, {{37}, {1}, {18}, {1}, {18}, {-1}}, {{38}, {0}, {7}, {1}, {7}, {-1}}, + {{39}, {1}, {19}, {1}, {19}, {-1}}, {{40}, {0}, {8}, {1}, {8}, {-1}}, {{41}, {1}, {20}, {1}, {20}, {-1}}, + {{42}, {0}, {9}, {1}, {9}, {-1}}, {{43}, {1}, {21}, {1}, {21}, {-1}}, {{44}, {0}, {10}, {1}, {10}, {-1}}, + {{45}, {1}, {22}, {1}, {22}, {-1}}, {{46}, {0}, {11}, {1}, {11}, {-1}}, {{47}, {1}, {23}, {1}, {23}, {-1}}, + }, + { + {{"0,24"}, {"0,24"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"1,25"}, {"1,25"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"2,26"}, {"2,26"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"3,27"}, {"3,27"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"4,28"}, {"4,28"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"5,29"}, {"5,29"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"6,30"}, {"6,30"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"7,31"}, {"7,31"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"8,32"}, {"8,32"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"9,33"}, {"9,33"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"10,34"}, {"10,34"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"11,35"}, {"11,35"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"12,36"}, {"12,36"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"13,37"}, {"13,37"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"14,38"}, {"14,38"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"15,39"}, {"15,39"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"16,40"}, {"16,40"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"17,41"}, {"17,41"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"18,42"}, {"18,42"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"19,43"}, {"19,43"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"20,44"}, {"20,44"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"21,45"}, {"21,45"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"22,46"}, {"22,46"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"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"}}, + {{"0,24"}, {"0,24"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"1,25"}, {"1,25"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"2,26"}, {"2,26"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"3,27"}, {"3,27"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"4,28"}, {"4,28"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"5,29"}, {"5,29"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"6,30"}, {"6,30"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"7,31"}, {"7,31"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"8,32"}, {"8,32"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"9,33"}, {"9,33"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"10,34"}, {"10,34"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"11,35"}, {"11,35"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"12,36"}, {"12,36"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"13,37"}, {"13,37"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"14,38"}, {"14,38"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"15,39"}, {"15,39"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"16,40"}, {"16,40"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"17,41"}, {"17,41"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"18,42"}, {"18,42"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"19,43"}, {"19,43"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"20,44"}, {"20,44"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"21,45"}, {"21,45"}, {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}}, + {{"22,46"}, {"22,46"}, {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"}}, + {{"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 = { + 48, + 2, + 48, + {{{48}, {48}, {0}, {0}}, {{24}, {24}, {0}, {0}}, {{24}, {24}, {0}, {0}}}, + { + {{-1}, {0}, {0}, {1}, {0}, {-1}}, {{-1}, {0}, {1}, {1}, {1}, {-1}}, {{-1}, {0}, {2}, {1}, {2}, {-1}}, + {{-1}, {0}, {3}, {1}, {3}, {-1}}, {{-1}, {0}, {4}, {1}, {4}, {-1}}, {{-1}, {0}, {5}, {1}, {5}, {-1}}, + {{-1}, {0}, {6}, {1}, {6}, {-1}}, {{-1}, {0}, {7}, {1}, {7}, {-1}}, {{-1}, {0}, {8}, {1}, {8}, {-1}}, + {{-1}, {0}, {9}, {1}, {9}, {-1}}, {{-1}, {0}, {10}, {1}, {10}, {-1}}, {{-1}, {0}, {11}, {1}, {11}, {-1}}, + {{-1}, {0}, {12}, {1}, {12}, {-1}}, {{-1}, {0}, {13}, {1}, {13}, {-1}}, {{-1}, {0}, {14}, {1}, {14}, {-1}}, + {{-1}, {0}, {15}, {1}, {15}, {-1}}, {{-1}, {0}, {16}, {1}, {16}, {-1}}, {{-1}, {0}, {17}, {1}, {17}, {-1}}, + {{-1}, {0}, {18}, {1}, {18}, {-1}}, {{-1}, {0}, {19}, {1}, {19}, {-1}}, {{-1}, {0}, {20}, {1}, {20}, {-1}}, + {{-1}, {0}, {21}, {1}, {21}, {-1}}, {{-1}, {0}, {22}, {1}, {22}, {-1}}, {{-1}, {0}, {23}, {1}, {23}, {-1}}, + {{-1}, {1}, {24}, {1}, {24}, {-1}}, {{-1}, {1}, {25}, {1}, {25}, {-1}}, {{-1}, {1}, {26}, {1}, {26}, {-1}}, + {{-1}, {1}, {27}, {1}, {27}, {-1}}, {{-1}, {1}, {28}, {1}, {28}, {-1}}, {{-1}, {1}, {29}, {1}, {29}, {-1}}, + {{-1}, {1}, {30}, {1}, {30}, {-1}}, {{-1}, {1}, {31}, {1}, {31}, {-1}}, {{-1}, {1}, {32}, {1}, {32}, {-1}}, + {{-1}, {1}, {33}, {1}, {33}, {-1}}, {{-1}, {1}, {34}, {1}, {34}, {-1}}, {{-1}, {1}, {35}, {1}, {35}, {-1}}, + {{-1}, {1}, {36}, {1}, {36}, {-1}}, {{-1}, {1}, {37}, {1}, {37}, {-1}}, {{-1}, {1}, {38}, {1}, {38}, {-1}}, + {{-1}, {1}, {39}, {1}, {39}, {-1}}, {{-1}, {1}, {40}, {1}, {40}, {-1}}, {{-1}, {1}, {41}, {1}, {41}, {-1}}, + {{-1}, {1}, {42}, {1}, {42}, {-1}}, {{-1}, {1}, {43}, {1}, {43}, {-1}}, {{-1}, {1}, {44}, {1}, {44}, {-1}}, + {{-1}, {1}, {45}, {1}, {45}, {-1}}, {{-1}, {1}, {46}, {1}, {46}, {-1}}, {{-1}, {1}, {47}, {1}, {47}, {-1}}, + }, + { + {{"0"}, {"0"}, {"0-23"}}, {{"1"}, {"1"}, {"0-23"}}, {{"2"}, {"2"}, {"0-23"}}, + {{"3"}, {"3"}, {"0-23"}}, {{"4"}, {"4"}, {"0-23"}}, {{"5"}, {"5"}, {"0-23"}}, + {{"6"}, {"6"}, {"0-23"}}, {{"7"}, {"7"}, {"0-23"}}, {{"8"}, {"8"}, {"0-23"}}, + {{"9"}, {"9"}, {"0-23"}}, {{"10"}, {"10"}, {"0-23"}}, {{"11"}, {"11"}, {"0-23"}}, + {{"12"}, {"12"}, {"0-23"}}, {{"13"}, {"13"}, {"0-23"}}, {{"14"}, {"14"}, {"0-23"}}, + {{"15"}, {"15"}, {"0-23"}}, {{"16"}, {"16"}, {"0-23"}}, {{"17"}, {"17"}, {"0-23"}}, + {{"18"}, {"18"}, {"0-23"}}, {{"19"}, {"19"}, {"0-23"}}, {{"20"}, {"20"}, {"0-23"}}, + {{"21"}, {"21"}, {"0-23"}}, {{"22"}, {"22"}, {"0-23"}}, {{"23"}, {"23"}, {"0-23"}}, + {{"24"}, {"24"}, {"24-47"}}, {{"25"}, {"25"}, {"24-47"}}, {{"26"}, {"26"}, {"24-47"}}, + {{"27"}, {"27"}, {"24-47"}}, {{"28"}, {"28"}, {"24-47"}}, {{"29"}, {"29"}, {"24-47"}}, + {{"30"}, {"30"}, {"24-47"}}, {{"31"}, {"31"}, {"24-47"}}, {{"32"}, {"32"}, {"24-47"}}, + {{"33"}, {"33"}, {"24-47"}}, {{"34"}, {"34"}, {"24-47"}}, {{"35"}, {"35"}, {"24-47"}}, + {{"36"}, {"36"}, {"24-47"}}, {{"37"}, {"37"}, {"24-47"}}, {{"38"}, {"38"}, {"24-47"}}, + {{"39"}, {"39"}, {"24-47"}}, {{"40"}, {"40"}, {"24-47"}}, {{"41"}, {"41"}, {"24-47"}}, + {{"42"}, {"42"}, {"24-47"}}, {{"43"}, {"43"}, {"24-47"}}, {{"44"}, {"44"}, {"24-47"}}, + {{"45"}, {"45"}, {"24-47"}}, {{"46"}, {"46"}, {"24-47"}}, {{"47"}, {"47"}, {"24-47"}}, + }, +}; +LinuxCpuMapTestCase _2sockets_20cores_hyperthreading = { + 40, + 2, + 20, + {{{40}, {20}, {0}, {20}}, {{20}, {10}, {0}, {10}}, {{20}, {10}, {0}, {10}}}, + { + {{0}, {0}, {0}, {3}, {0}, {-1}}, {{1}, {0}, {1}, {3}, {1}, {-1}}, {{2}, {0}, {2}, {3}, {2}, {-1}}, + {{3}, {0}, {3}, {3}, {3}, {-1}}, {{4}, {0}, {4}, {3}, {4}, {-1}}, {{5}, {0}, {5}, {3}, {5}, {-1}}, + {{6}, {0}, {6}, {3}, {6}, {-1}}, {{7}, {0}, {7}, {3}, {7}, {-1}}, {{8}, {0}, {8}, {3}, {8}, {-1}}, + {{9}, {0}, {9}, {3}, {9}, {-1}}, {{10}, {1}, {10}, {3}, {10}, {-1}}, {{11}, {1}, {11}, {3}, {11}, {-1}}, + {{12}, {1}, {12}, {3}, {12}, {-1}}, {{13}, {1}, {13}, {3}, {13}, {-1}}, {{14}, {1}, {14}, {3}, {14}, {-1}}, + {{15}, {1}, {15}, {3}, {15}, {-1}}, {{16}, {1}, {16}, {3}, {16}, {-1}}, {{17}, {1}, {17}, {3}, {17}, {-1}}, + {{18}, {1}, {18}, {3}, {18}, {-1}}, {{19}, {1}, {19}, {3}, {19}, {-1}}, {{20}, {0}, {0}, {1}, {0}, {-1}}, + {{21}, {0}, {1}, {1}, {1}, {-1}}, {{22}, {0}, {2}, {1}, {2}, {-1}}, {{23}, {0}, {3}, {1}, {3}, {-1}}, + {{24}, {0}, {4}, {1}, {4}, {-1}}, {{25}, {0}, {5}, {1}, {5}, {-1}}, {{26}, {0}, {6}, {1}, {6}, {-1}}, + {{27}, {0}, {7}, {1}, {7}, {-1}}, {{28}, {0}, {8}, {1}, {8}, {-1}}, {{29}, {0}, {9}, {1}, {9}, {-1}}, + {{30}, {1}, {10}, {1}, {10}, {-1}}, {{31}, {1}, {11}, {1}, {11}, {-1}}, {{32}, {1}, {12}, {1}, {12}, {-1}}, + {{33}, {1}, {13}, {1}, {13}, {-1}}, {{34}, {1}, {14}, {1}, {14}, {-1}}, {{35}, {1}, {15}, {1}, {15}, {-1}}, + {{36}, {1}, {16}, {1}, {16}, {-1}}, {{37}, {1}, {17}, {1}, {17}, {-1}}, {{38}, {1}, {18}, {1}, {18}, {-1}}, + {{39}, {1}, {19}, {1}, {19}, {-1}}, + }, + { + {{"0,20"}, {"0,20"}, {"0-9,20-29"}}, {{"1,21"}, {"1,21"}, {"0-9,20-29"}}, + {{"2,22"}, {"2,22"}, {"0-9,20-29"}}, {{"3,23"}, {"3,23"}, {"0-9,20-29"}}, + {{"4,24"}, {"4,24"}, {"0-9,20-29"}}, {{"5,25"}, {"5,25"}, {"0-9,20-29"}}, + {{"6,26"}, {"6,26"}, {"0-9,20-29"}}, {{"7,27"}, {"7,27"}, {"0-9,20-29"}}, + {{"8,28"}, {"8,28"}, {"0-9,20-29"}}, {{"9,29"}, {"9,29"}, {"0-9,20-29"}}, + {{"10,30"}, {"10,30"}, {"10-19,30-39"}}, {{"11,31"}, {"11,31"}, {"10-19,30-39"}}, + {{"12,32"}, {"12,32"}, {"10-19,30-39"}}, {{"13,33"}, {"13,33"}, {"10-19,30-39"}}, + {{"14,34"}, {"14,34"}, {"10-19,30-39"}}, {{"15,35"}, {"15,35"}, {"10-19,30-39"}}, + {{"16,36"}, {"16,36"}, {"10-19,30-39"}}, {{"17,37"}, {"17,37"}, {"10-19,30-39"}}, + {{"18,38"}, {"18,38"}, {"10-19,30-39"}}, {{"19,39"}, {"19,39"}, {"10-19,30-39"}}, + {{"0,20"}, {"0,20"}, {"0-9,20-29"}}, {{"1,21"}, {"1,21"}, {"0-9,20-29"}}, + {{"2,22"}, {"2,22"}, {"0-9,20-29"}}, {{"3,23"}, {"3,23"}, {"0-9,20-29"}}, + {{"4,24"}, {"4,24"}, {"0-9,20-29"}}, {{"5,25"}, {"5,25"}, {"0-9,20-29"}}, + {{"6,26"}, {"6,26"}, {"0-9,20-29"}}, {{"7,27"}, {"7,27"}, {"0-9,20-29"}}, + {{"8,28"}, {"8,28"}, {"0-9,20-29"}}, {{"9,29"}, {"9,29"}, {"0-9,20-29"}}, + {{"10,30"}, {"10,30"}, {"10-19,30-39"}}, {{"11,31"}, {"11,31"}, {"10-19,30-39"}}, + {{"12,32"}, {"12,32"}, {"10-19,30-39"}}, {{"13,33"}, {"13,33"}, {"10-19,30-39"}}, + {{"14,34"}, {"14,34"}, {"10-19,30-39"}}, {{"15,35"}, {"15,35"}, {"10-19,30-39"}}, + {{"16,36"}, {"16,36"}, {"10-19,30-39"}}, {{"17,37"}, {"17,37"}, {"10-19,30-39"}}, + {{"18,38"}, {"18,38"}, {"10-19,30-39"}}, {{"19,39"}, {"19,39"}, {"10-19,30-39"}}, + }, +}; +LinuxCpuMapTestCase _1sockets_14cores_hyperthreading = { + 20, + 1, + 14, + {{{20}, {6}, {8}, {6}}}, + { + {{0}, {0}, {0}, {3}, {0}, {-1}}, {{1}, {0}, {0}, {1}, {0}, {-1}}, {{2}, {0}, {1}, {3}, {1}, {-1}}, + {{3}, {0}, {1}, {1}, {1}, {-1}}, {{4}, {0}, {2}, {3}, {2}, {-1}}, {{5}, {0}, {2}, {1}, {2}, {-1}}, + {{6}, {0}, {3}, {3}, {3}, {-1}}, {{7}, {0}, {3}, {1}, {3}, {-1}}, {{8}, {0}, {4}, {3}, {4}, {-1}}, + {{9}, {0}, {4}, {1}, {4}, {-1}}, {{10}, {0}, {5}, {3}, {5}, {-1}}, {{11}, {0}, {5}, {1}, {5}, {-1}}, + {{12}, {0}, {6}, {2}, {6}, {-1}}, {{13}, {0}, {7}, {2}, {6}, {-1}}, {{14}, {0}, {8}, {2}, {6}, {-1}}, + {{15}, {0}, {9}, {2}, {6}, {-1}}, {{16}, {0}, {10}, {2}, {7}, {-1}}, {{17}, {0}, {11}, {2}, {7}, {-1}}, + {{18}, {0}, {12}, {2}, {7}, {-1}}, {{19}, {0}, {13}, {2}, {7}, {-1}}, + }, + { + {{"0-1"}, {"0-1"}, {"0-19"}}, {{"0-1"}, {"0-1"}, {"0-19"}}, {{"2-3"}, {"2-3"}, {"0-19"}}, + {{"2-3"}, {"2-3"}, {"0-19"}}, {{"4-5"}, {"4-5"}, {"0-19"}}, {{"4-5"}, {"4-5"}, {"0-19"}}, + {{"6-7"}, {"6-7"}, {"0-19"}}, {{"6-7"}, {"6-7"}, {"0-19"}}, {{"8-9"}, {"8-9"}, {"0-19"}}, + {{"8-9"}, {"8-9"}, {"0-19"}}, {{"10-11"}, {"10-11"}, {"0-19"}}, {{"10-11"}, {"10-11"}, {"0-19"}}, + {{"12"}, {"12-15"}, {"0-19"}}, {{"13"}, {"12-15"}, {"0-19"}}, {{"14"}, {"12-15"}, {"0-19"}}, + {{"15"}, {"12-15"}, {"0-19"}}, {{"16"}, {"16-19"}, {"0-19"}}, {{"17"}, {"16-19"}, {"0-19"}}, + {{"18"}, {"16-19"}, {"0-19"}}, {{"19"}, {"16-19"}, {"0-19"}}, + }, +}; +LinuxCpuMapTestCase _1sockets_10cores_hyperthreading{ + 12, + 1, + 10, + {{{12}, {2}, {8}, {2}}}, + { + {{0}, {0}, {0}, {3}, {0}, {-1}}, + {{1}, {0}, {0}, {1}, {0}, {-1}}, + {{2}, {0}, {1}, {3}, {1}, {-1}}, + {{3}, {0}, {1}, {1}, {1}, {-1}}, + {{4}, {0}, {2}, {2}, {2}, {-1}}, + {{5}, {0}, {3}, {2}, {2}, {-1}}, + {{6}, {0}, {4}, {2}, {2}, {-1}}, + {{7}, {0}, {5}, {2}, {2}, {-1}}, + {{8}, {0}, {6}, {2}, {3}, {-1}}, + {{9}, {0}, {7}, {2}, {3}, {-1}}, + {{10}, {0}, {8}, {2}, {3}, {-1}}, + {{11}, {0}, {9}, {2}, {3}, {-1}}, + }, + { + {{"0-1"}, {"0-1"}, {"0-11"}}, + {{"0-1"}, {"0-1"}, {"0-11"}}, + {{"2-3"}, {"2-3"}, {"0-11"}}, + {{"2-3"}, {"2-3"}, {"0-11"}}, + {{"4"}, {"4-7"}, {"0-11"}}, + {{"5"}, {"4-7"}, {"0-11"}}, + {{"6"}, {"4-7"}, {"0-11"}}, + {{"7"}, {"4-7"}, {"0-11"}}, + {{"8"}, {"8-11"}, {"0-11"}}, + {{"9"}, {"8-11"}, {"0-11"}}, + {{"10"}, {"8-11"}, {"0-11"}}, + {{"11"}, {"8-11"}, {"0-11"}}, + }, +}; +LinuxCpuMapTestCase _1sockets_8cores_hyperthreading = { + 12, + 1, + 8, + {{{12}, {4}, {4}, {4}}}, + { + {{0}, {0}, {0}, {3}, {0}, {-1}}, + {{1}, {0}, {0}, {1}, {0}, {-1}}, + {{2}, {0}, {1}, {3}, {1}, {-1}}, + {{3}, {0}, {1}, {1}, {1}, {-1}}, + {{4}, {0}, {2}, {3}, {2}, {-1}}, + {{5}, {0}, {2}, {1}, {2}, {-1}}, + {{6}, {0}, {3}, {3}, {3}, {-1}}, + {{7}, {0}, {3}, {1}, {3}, {-1}}, + {{8}, {0}, {4}, {2}, {4}, {-1}}, + {{9}, {0}, {5}, {2}, {4}, {-1}}, + {{10}, {0}, {6}, {2}, {4}, {-1}}, + {{11}, {0}, {7}, {2}, {4}, {-1}}, + }, + { + {{"0-1"}, {"0-1"}, {"0-11"}}, + {{"0-1"}, {"0-1"}, {"0-11"}}, + {{"2-3"}, {"2-3"}, {"0-11"}}, + {{"2-3"}, {"2-3"}, {"0-11"}}, + {{"4-5"}, {"4-5"}, {"0-11"}}, + {{"4-5"}, {"4-5"}, {"0-11"}}, + {{"6-7"}, {"6-7"}, {"0-11"}}, + {{"6-7"}, {"6-7"}, {"0-11"}}, + {{"8"}, {"8-11"}, {"0-11"}}, + {{"9"}, {"8-11"}, {"0-11"}}, + {{"10"}, {"8-11"}, {"0-11"}}, + {{"11"}, {"8-11"}, {"0-11"}}, + }, +}; +LinuxCpuMapTestCase _1sockets_6cores_hyperthreading = { + 12, + 1, + 6, + {{{12}, {6}, {0}, {6}}}, + { + {{0}, {0}, {0}, {3}, {0}, {-1}}, + {{1}, {0}, {0}, {1}, {0}, {-1}}, + {{2}, {0}, {1}, {3}, {1}, {-1}}, + {{3}, {0}, {1}, {1}, {1}, {-1}}, + {{4}, {0}, {2}, {3}, {2}, {-1}}, + {{5}, {0}, {2}, {1}, {2}, {-1}}, + {{6}, {0}, {3}, {3}, {3}, {-1}}, + {{7}, {0}, {3}, {1}, {3}, {-1}}, + {{8}, {0}, {4}, {3}, {4}, {-1}}, + {{9}, {0}, {4}, {1}, {4}, {-1}}, + {{10}, {0}, {5}, {3}, {5}, {-1}}, + {{11}, {0}, {5}, {1}, {5}, {-1}}, + }, + { + {{"0-1"}, {"0-1"}, {"0-11"}}, + {{"0-1"}, {"0-1"}, {"0-11"}}, + {{"2-3"}, {"2-3"}, {"0-11"}}, + {{"2-3"}, {"2-3"}, {"0-11"}}, + {{"4-5"}, {"4-5"}, {"0-11"}}, + {{"4-5"}, {"4-5"}, {"0-11"}}, + {{"6-7"}, {"6-7"}, {"0-11"}}, + {{"6-7"}, {"6-7"}, {"0-11"}}, + {{"8-9"}, {"8-9"}, {"0-11"}}, + {{"8-9"}, {"8-9"}, {"0-11"}}, + {{"10-11"}, {"10-11"}, {"0-11"}}, + {{"10-11"}, {"10-11"}, {"0-11"}}, + }, +}; + +TEST_P(LinuxCpuMapParserTests, LinuxCpuMap) {} + +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)); +#endif + +} // namespace