update Linux CPU map parser and add unit test (#15113)

* update linux CPU map parser and add unit test

* add one more test data

* fix clang issue

* update test case by using TEST_P

* fix code style issue

* add one more test data with hyper threading off

* remove duplicated test data

* fix issue for Windows build

* fix issue for Windows build

* add description for test data

* add core type table for each socket

* fix code style issue

* fix code style issue

* remove redundant content

* remove parse_processor_info_linux() from INFERENCE_ENGINE_API_CPP

* fix code style issue

* update example of core type table

* fix code style issue
This commit is contained in:
Shen, Wanglei 2023-02-07 05:54:40 +00:00 committed by GitHub
parent b0ffec48be
commit 63b2c072c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 779 additions and 123 deletions

View File

@ -10,6 +10,7 @@
#pragma once #pragma once
#include <exception> #include <exception>
#include <string>
#include <vector> #include <vector>
#include "ie_api.h" #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 * @enum cpu_core_type_of_processor
* @brief This enum contains defination of processor based on specific cpu core types. * @brief This enum contains defination of processor based on specific cpu core types.
* Will extend to support other CPU core type like ARM. * 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 { typedef enum {
ALL_PROC = 0, //!< All processors, regardless of backend cpu ALL_PROC = 0, //!< All processors, regardless of backend cpu
MAIN_CORE_PROC = 1, //!< Processor based on physical core of Intel Performance-cores 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 = 2, //!< Processor based on Intel Efficient-cores
EFFICIENT_CORE_PROC = 3 //!< 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; } 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_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_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_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; } 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<std::vector<std::string>> _system_info_table,
int& _sockets,
int& _cores,
std::vector<std::vector<int>>& _proc_type_table,
std::vector<std::vector<int>>& _cpu_mapping_table);
#endif
} // namespace InferenceEngine } // namespace InferenceEngine

View File

@ -24,137 +24,40 @@ struct CPU {
int _sockets = 0; int _sockets = 0;
int _cores = 0; int _cores = 0;
std::vector<int> _proc_type_table; std::vector<std::vector<int>> _proc_type_table;
std::vector<std::vector<int>> _cpu_mapping_table; std::vector<std::vector<int>> _cpu_mapping_table;
CPU() { CPU() {
std::ifstream cache_1_file("/sys/devices/system/cpu/cpu0/cache/index0/shared_cpu_list"); std::vector<std::vector<std::string>> system_info_table;
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");
if (cache_1_file.is_open() && cache_2_file.is_open() && cache_3_file.is_open()) { auto GetCatchInfoLinux = [&]() {
/*New CPU resource based on CPU mapping table*/
_processors = sysconf(_SC_NPROCESSORS_ONLN); _processors = sysconf(_SC_NPROCESSORS_ONLN);
_proc_type_table.resize(EFFICIENT_CORE_PROC + 1, 0); system_info_table.resize(_processors, std::vector<std::string>(3));
_cpu_mapping_table.resize(_processors, std::vector<int>(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;
};
for (int n = 0; n < _processors; n++) { for (int n = 0; n < _processors; n++) {
if (-1 == _cpu_mapping_table[n][CPU_MAP_SOCKET_ID]) { for (int m = 0; m < 3; m++) {
std::ifstream cache_3_file("/sys/devices/system/cpu/cpu" + std::to_string(n) + int Ln = (m == 0) ? m : m + 1;
"/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;
while (1) { std::ifstream cache_file("/sys/devices/system/cpu/cpu" + std::to_string(n) + "/cache/index" +
if ((endpos = cache_3_info.find('-', pos)) != std::string::npos) { std::to_string(Ln) + "/shared_cpu_list");
sub_str = cache_3_info.substr(pos, endpos); if (!cache_file.is_open()) {
core_1 = std::stoi(sub_str); return -1;
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;
}
} }
_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 { } else {
/*Previous CPU resource based on calculation*/ /*Previous CPU resource based on calculation*/
std::ifstream cpuinfo("/proc/cpuinfo"); std::ifstream cpuinfo("/proc/cpuinfo");
@ -188,9 +91,155 @@ struct CPU {
_cores = _processors; _cores = _processors;
} }
} }
std::vector<std::vector<std::string>>().swap(system_info_table);
} }
}; };
static CPU cpu; static CPU cpu;
void parse_processor_info_linux(const int _processors,
const std::vector<std::vector<std::string>> system_info_table,
int& _sockets,
int& _cores,
std::vector<std::vector<int>>& _proc_type_table,
std::vector<std::vector<int>>& _cpu_mapping_table) {
int n_group = 0;
_cpu_mapping_table.resize(_processors, std::vector<int>(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<int> line_value_0(PROC_TYPE_TABLE_SIZE, 0);
for (int n = 0; n < _processors; n++) {
if (-1 == _cpu_mapping_table[n][CPU_MAP_SOCKET_ID]) {
std::string::size_type pos = 0;
std::string::size_type 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)) #if !((IE_THREAD == IE_THREAD_TBB || IE_THREAD == IE_THREAD_TBB_AUTO))
std::vector<int> getAvailableNUMANodes() { std::vector<int> getAvailableNUMANodes() {
std::vector<int> nodes((0 == cpu._sockets) ? 1 : cpu._sockets); std::vector<int> nodes((0 == cpu._sockets) ? 1 : cpu._sockets);

View File

@ -0,0 +1,571 @@
// Copyright (C) 2018-2022 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <gtest/gtest.h>
#include <common_test_utils/test_common.hpp>
#include "ie_system_conf.h"
using namespace testing;
using namespace InferenceEngine;
namespace {
#ifdef __linux__
struct LinuxCpuMapTestCase {
int _processors;
int _sockets;
int _cores;
std::vector<std::vector<int>> _proc_type_table;
std::vector<std::vector<int>> _cpu_mapping_table;
std::vector<std::vector<std::string>> system_info_table;
};
class LinuxCpuMapParserTests : public CommonTestUtils::TestsCommon,
public testing::WithParamInterface<std::tuple<LinuxCpuMapTestCase>> {
public:
void SetUp() override {
const auto& test_data = std::get<0>(GetParam());
int test_sockets = 0;
int test_cores = 0;
std::vector<std::vector<int>> test_proc_type_table;
std::vector<std::vector<int>> test_cpu_mapping_table;
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