How to find Number of processor or Cores ?
-
fine. GetSystemInfo is giving number of processor is 2 for Pentium D. But I have only one processor but 2 cores. Is there any way to find number processor and number of cores.?
I guess you could use GetLogicalProcessorInformation[^] on Windows Vista and later versions.
«_Superman_» I love work. It gives me something to do between weekends.
-
I guess you could use GetLogicalProcessorInformation[^] on Windows Vista and later versions.
«_Superman_» I love work. It gives me something to do between weekends.
-
Guess not. Even the System Control Panel in XP lists it as separate processors. But I guess it shouldn't matter to a program whether is two processors or two cores. The documentation says that it is available on Windows XP Professional x64 Edition.
«_Superman_» I love work. It gives me something to do between weekends.
-
Guess not. Even the System Control Panel in XP lists it as separate processors. But I guess it shouldn't matter to a program whether is two processors or two cores. The documentation says that it is available on Windows XP Professional x64 Edition.
«_Superman_» I love work. It gives me something to do between weekends.
-
No, and it shouldn't really be a surprise. When Windows XP was designed (2001, remember!), multi-core processors (the whole idea of multiple independent processing units of one piece of silicon) hadn't been thought of, so Windows XP didn't include support for multi-core. Adding support may sound easy at first glance, but it cuts across many different parts of the system, so isn't easy to do.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
-
They have their own processor detection algorithms that allow them to tell what family a processor belongs to.[^]. Look at the number and frequency of updates they do to keep up with the latest processors... In addition, the page you point at shows that CPU-Z has a kernel mode driver, which allows CPU-Z to get at the real hardware, rather than what Windows presents as the hardware to user-mode.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
-
I'm not really sure how that works. But I have a thought. The GetProcessAffinityMask[^] function returns a system affinity mask which represents the processors configured on the system. Perhaps this will give you the answer.
«_Superman_» I love work. It gives me something to do between weekends.
-
No, and it shouldn't really be a surprise. When Windows XP was designed (2001, remember!), multi-core processors (the whole idea of multiple independent processing units of one piece of silicon) hadn't been thought of, so Windows XP didn't include support for multi-core. Adding support may sound easy at first glance, but it cuts across many different parts of the system, so isn't easy to do.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
-
ok fine. Is there anyway to find number of processor and number of cores using any freeware library. I want to use it from windows 2000 onwards. Give a good solution
You are more likely to get a good answer if you're polite.[^]
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
-
How To Find Number of processors Present in the CPU ? How to Find Number of Cores Present in the CPU ? Is any possiblity to find Number Cores and Number of Processors ? (Is any difference ) ?
You can use the cpuid assembly instruction to get this information, it will require some assembly knowledge. I wrote the following functions a few years ago, you may want to check that they return the correct values.
__inline BOOL IsHyperThreaded() { BOOL bHyperthread = 0; __asm { xor eax, eax cpuid cmp eax, 1 jb end xor eax, eax inc eax cpuid test edx, 0x10000000 jz end mov dword ptr [bHyperthread], 1 end: } return bHyperthread; } __inline unsigned int PhysicalCores() { unsigned int cores = 1; __asm { xor eax, eax cpuid cmp eax, 4 jb end mov eax, 4 xor ecx, ecx cpuid shr eax, 26 and eax, 0x1F add eax, 1 mov dword ptr [cores], eax end: } return cores; } __inline unsigned int CpuCores() { unsigned int cores = 0; __asm { xor eax, eax cpuid cmp eax, 4 jl single mov eax, 4 xor ecx, ecx cpuid mov cores, eax jmp multi single: xor eax, eax multi: } return (unsigned int)((cores & 0xFC000000) >> 26)+1; } __inline unsigned int LogicalCores() { unsigned int cores = 1; __asm { xor eax, eax cpuid cmp eax, 1 jb end xor eax, eax inc eax cpuid test edx, 0x10000000 jz end mov eax, ebx and eax, 0x00FF0000 shr eax, 16 mov cores, eax end: } return cores; }
My code will not work on the MSVC 64 bit compiler, if you are creating a 64 bit application then you will need to use the CPUID intrinsics[^] Best Wishes, -David Delaune