2011/10/24

CPU Core수 확인 함수

[출처] Parallel Programming, OpenMP 그리고 Win32 - 1



현재 시스템의 Core 수를 확인하는 코드이다. 관련 정보를 찾았었는데 김 명신님 블로그에서 찾을 수 있었다.

아래 코드는 김 명신님 블로그에서 발췌한 것으로 nullptr 부분을 NULL로 바꾸기만 하였다.

#include <Windows.h>
#include <process.h>

int GetNumberOfCores()
{
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION pProcessorInformations = NULL;
DWORD length = 0;

BOOL result = GetLogicalProcessorInformation(pProcessorInformations, &length);
if (!result)
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
pProcessorInformations = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)new BYTE[length];
}
}

result = GetLogicalProcessorInformation(pProcessorInformations, &length);
if (!result)
{
// error
return -1;
}

int numOfCores = 0;
for (int i = 0 ; i < length / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION) ; i++)
{
if (pProcessorInformations[i].Relationship == RelationProcessorCore)
numOfCores++;
}

delete [] pProcessorInformations;

return numOfCores;
}





<

Original Post : http://neodreamer-dev.tistory.com/605

No comments :

Post a Comment