From c62ad1add8d1996f2051d71d330657b862a7716c Mon Sep 17 00:00:00 2001 From: Wanglei Shen Date: Fri, 11 Aug 2023 13:54:13 +0800 Subject: [PATCH] Support Win7 in cpu information parser (#19109) --- src/inference/src/os/win/win_system_conf.cpp | 13 ++- .../unit/cpu_map_parser/parser_windows.cpp | 107 +++++++++++++++++- 2 files changed, 114 insertions(+), 6 deletions(-) diff --git a/src/inference/src/os/win/win_system_conf.cpp b/src/inference/src/os/win/win_system_conf.cpp index c678525b66e..11b172ba5c2 100644 --- a/src/inference/src/os/win/win_system_conf.cpp +++ b/src/inference/src/os/win/win_system_conf.cpp @@ -64,8 +64,10 @@ void parse_processor_info_win(const char* base_ptr, int group_id = 0; int group_type = 0; + int num_package = 0; + _processors = 0; - _sockets = -1; + _sockets = 0; _cores = 0; PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX info = NULL; @@ -87,18 +89,19 @@ void parse_processor_info_win(const char* base_ptr, return; }; + _proc_type_table.push_back(proc_init_line); + for (; info_ptr < base_ptr + len; info_ptr += (DWORD)info->Size) { info = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX)info_ptr; if (info->Relationship == RelationProcessorPackage) { - _sockets++; MaskToList(info->Processor.GroupMask->Mask); - if (0 == _sockets) { - _proc_type_table.push_back(proc_init_line); - } else { + if (num_package > 0) { + _sockets++; _proc_type_table.push_back(_proc_type_table[0]); _proc_type_table[0] = proc_init_line; } + num_package++; } else if (info->Relationship == RelationProcessorCore) { MaskToList(info->Processor.GroupMask->Mask); diff --git a/src/inference/tests/unit/cpu_map_parser/parser_windows.cpp b/src/inference/tests/unit/cpu_map_parser/parser_windows.cpp index 75e5cb5bb6d..58d8e0441c0 100644 --- a/src/inference/tests/unit/cpu_map_parser/parser_windows.cpp +++ b/src/inference/tests/unit/cpu_map_parser/parser_windows.cpp @@ -2088,6 +2088,108 @@ WinCpuMapTestCase _1sockets_4cores_hyperthreading = { "00000000000000000000000000000ff00000000000000"}, }; +WinCpuMapTestCase _1sockets_4cores_hyperthreading_1_FMT7 = { + 8, + 1, + 1, + 4, + {{8, 4, 0, 4, 0, 0}}, + { + {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1}, + {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1}, + {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1}, + {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1}, + {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1}, + {5, 0, 0, 2, MAIN_CORE_PROC, 2, -1}, + {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1}, + {7, 0, 0, 3, MAIN_CORE_PROC, 3, -1}, + }, + {"0000000030000000010000000000000000000000000000000000000000000100030000000000000000006d0052006f0002000000380000000" + "10840000080000002000000000000000000000000000000000000000000000003000000000000000000720073005c00020000003800000001" + "08400000800000010000000000000000000000000000000000000000000000030000000000000000003d0043003a000200000038000000020" + "44000000004000000000000000000000000000000000000000000000000000300000000000000000065006d00700000000000300000000100" + "000000000000000000000000000000000000000001000c0000000000000000003500430033000200000038000000010840000080000002000" + "00000000000000000000000000000000000000000000c0000000000000000003d0043003a0002000000380000000108400000800000010000" + "0000000000000000000000000000000000000000000c000000000000000000770073000000020000003800000002044000000004000000000" + "000000000000000000000000000000000000000000c00000000000000000069006e0064000000000030000000010000000000000000000000" + "000000000000000000000100300000000000000000003a005c004200020000003800000001084000008000000200000000000000000000000" + "000000000000000000000003000000000000000000065005c0063000200000038000000010840000080000001000000000000000000000000" + "0000000000000000000000300000000000000000003a3d433a5c5502000000380000000204400000000400000000000000000000000000000" + "000000000000000000000300000000000000000003a5c50726f67030000003000000000000000000000000000000000000000000000000000" + "0100ff0000000000000000006700436f6d6d0000000030000000010000000000000000000000000000000000000000000100c000000000000" + "0000000657300436f6d02000000380000000108400000800000020000000000000000000000000000000000000000000000c0000000000000" + "0000002046696c657302000000380000000108400000800000010000000000000000000000000000000000000000000000c00000000000000" + "00000434f4d50555402000000380000000204400000000400000000000000000000000000000000000000000000000000c000000000000000" + "00006d642e65786502000000380000000310400000008000000000000000000000000000000000000000000000000000ff000000000000000" + "0004956453d433a0100000030000000000000000000000000000000000000000000000000000000ff00000000000000000057535c41707004" + "00000050000000010001000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000" + "00000000000000000000000000000ff00000000000000"}, +}; + +WinCpuMapTestCase _1sockets_4cores_hyperthreading_2_FMT7 = { + 8, + 1, + 1, + 4, + {{8, 4, 0, 4, 0, 0}}, + { + {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1}, + {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1}, + {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1}, + {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1}, + {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1}, + {5, 0, 0, 2, MAIN_CORE_PROC, 2, -1}, + {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1}, + {7, 0, 0, 3, MAIN_CORE_PROC, 3, -1}, + }, + {"0000000030000000010000000000000000000000000000000000000000000100030000000000000000003d433a5c557302000000380000000" + "10840000080000002000000000000000000000000000000000000000000000003000000000000000000616d2046696c020000003800000001" + "08400000800000010000000000000000000000000000000000000000000000030000000000000000002046696c65730200000038000000020" + "44000000004000000000000000000000000000000000000000000000000000300000000000000000046696c65735c00000000300000000100" + "000000000000000000000000000000000000000001000c0000000000000000005c77696e646f0200000038000000010840000080000002000" + "00000000000000000000000000000000000000000000c0000000000000000004f53545f434802000000380000000108400000800000010000" + "0000000000000000000000000000000000000000000c0000000000000000003a5c50726f67020000003800000002044000000004000000000" + "000000000000000000000000000000000000000000c000000000000000000735c417070440000000030000000010000000000000000000000" + "000000000000000000000100300000000000000000004f434553534f020000003800000001084000008000000200000000000000000000000" + "00000000000000000000000300000000000000000007665726167650200000038000000010840000080000001000000000000000000000000" + "000000000000000000000030000000000000000000615c6a646b2d02000000380000000204400000000400000000000000000000000000000" + "000000000000000000000300000000000000000003b433a5c5072030000003000000000000000000000000000000000000000000000000000" + "0100ff0000000000000000005c6a617661700000000030000000010000000000000000000000000000000000000000000100c000000000000" + "00000006176615c6a6102000000380000000108400000800000020000000000000000000000000000000000000000000000c0000000000000" + "000000797374656d3302000000380000000108400000800000010000000000000000000000000000000000000000000000c00000000000000" + "000003b473a5c507202000000380000000204400000000400000000000000000000000000000000000000000000000000c000000000000000" + "0000726172795c6202000000380000000310400000008000000000000000000000000000000000000000000000000000ff000000000000000" + "0006c65735c47690100000030000000000000000000000000000000000000000000000000000000ff0000000000000000003b443a5c507204" + "00000050000000010001000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000" + "00000000000000000000000000000ff00000000000000"}, +}; + +WinCpuMapTestCase _1sockets_2cores_hyperthreading_FMT7 = { + 4, + 1, + 1, + 2, + {{4, 2, 0, 2, 0, 0}}, + { + {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1}, + {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1}, + {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1}, + {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1}, + }, + {"000000003000000001000000000000000000000000000000000000000000010003000000000000000000cdcdcdcdcdcd02000000380000000" + "10840000080000002000000000000000000000000000000000000000000000003000000000000000000cdcdcdcdcdcd020000003800000001" + "0840000080000001000000000000000000000000000000000000000000000003000000000000000000cdcdcdcdcdcd0200000038000000020" + "840000000040000000000000000000000000000000000000000000000000003000000000000000000cdcdcdcdcdcd03000000300000000000" + "000000000000000000000000000000000000000001000f000000000000000000cdcdcdcdcdcd0000000030000000010000000000000000000" + "0000000000000000000000001000c000000000000000000cdcdcdcdcdcd020000003800000001084000008000000200000000000000000000" + "000000000000000000000000000c000000000000000000cdcdcdcdcdcd0200000038000000010840000080000001000000000000000000000" + "00000000000000000000000000c000000000000000000cdcdcdcdcdcd02000000380000000208400000000400000000000000000000000000" + "0000000000000000000000000c000000000000000000cdcdcdcdcdcd020000003800000003104000000040000000000000000000000000000" + "000000000000000000000000f000000000000000000cdcdcdcdcdcd0100000030000000000000000000000000000000000000000000000000" + "0000000f000000000000000000cdcdcdcdcdcd040000005000000001000100000000000000000000000000000000000000000004040000000" + "0000000000000000000000000000000000000000000000000000000000000000000000f00000000000000"}, +}; + TEST_P(WinCpuMapParserTests, WinCache) {} INSTANTIATE_TEST_SUITE_P(CPUMap, @@ -2103,7 +2205,10 @@ INSTANTIATE_TEST_SUITE_P(CPUMap, _1sockets_14cores_hyperthreading_set2, _1sockets_14cores_hyperthreading_set3, _1sockets_10cores_hyperthreading, - _1sockets_4cores_hyperthreading)); + _1sockets_4cores_hyperthreading, + _1sockets_4cores_hyperthreading_1_FMT7, + _1sockets_4cores_hyperthreading_2_FMT7, + _1sockets_2cores_hyperthreading_FMT7)); #endif