mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-09 15:20:56 -06:00
ProcessorCount: Fix virtual processor count on Solaris
The previous code did not count the number of virtual processors across
physical processors on SunOS.
Can handle the following situations:
```
$ uname -a
SunOS solaris 5.11 11.4.0.15.0 i86pc i386 i86pc
$ psrinfo -p -v
The physical processor has 1 virtual processor (0)
x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz)
Intel Core Processor (Broadwell)
The physical processor has 1 virtual processor (1)
x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz)
Intel Core Processor (Broadwell)
The physical processor has 1 virtual processor (2)
x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz)
Intel Core Processor (Broadwell)
The physical processor has 1 virtual processor (3)
x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz)
Intel Core Processor (Broadwell)
```
```
$ uname -a
SunOS sol11x86 5.11 11.0 i86pc i386 i86pc
$ psrinfo -p -v
The physical processor has 2 virtual processors (0 1)
x86 (GenuineIntel 50650 family 6 model 85 step 0 clock 2000 MHz)
Intel(r) Xeon(r) Gold 6138 CPU @ 2.00GHz
```
```
$ uname -a
SunOS sol11 5.11 11.0 sun4v sparc sun4v
$ psrinfo -p -v
The physical processor has 2 cores and 16 virtual processors (0-15)
The core has 8 virtual processors (0-7)
The core has 8 virtual processors (8-15)
SPARC-T4 (chipid 0, clock 2848 MHz)
```
This commit is contained in:
committed by
Brad King
parent
2a5d077a89
commit
1c87bc60ee
@@ -168,9 +168,13 @@ function(ProcessorCount var)
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
OUTPUT_VARIABLE psrinfo_output)
|
||||
string(REGEX MATCH "([0-9]+) virtual processor" procs "${psrinfo_output}")
|
||||
set(count "${CMAKE_MATCH_1}")
|
||||
#message("ProcessorCount: trying psrinfo -p -v '${ProcessorCount_cmd_prvinfo}'")
|
||||
string(REGEX MATCHALL "has [0-9]+ virtual processor" procs "${psrinfo_output}")
|
||||
set(count "")
|
||||
foreach(proc ${procs})
|
||||
string(REGEX MATCH "has ([0-9]+) virtual" res ${proc})
|
||||
math(EXPR count "${count} + ${CMAKE_MATCH_1}")
|
||||
endforeach()
|
||||
#message("ProcessorCount: trying '${ProcessorCount_cmd_psrinfo}' -p -v")
|
||||
else()
|
||||
# Sun (systems where uname -X emits "NumCPU" in its output):
|
||||
find_program(ProcessorCount_cmd_uname uname)
|
||||
|
||||
Reference in New Issue
Block a user