Browse Source

Properly detect number of cores on WIN32

nfactor-troky
Znort 987 13 years ago
parent
commit
29f0f9bc18
  1. 32
      main.c

32
main.c

@ -4165,12 +4165,34 @@ int main (int argc, char *argv[]) @@ -4165,12 +4165,34 @@ int main (int argc, char *argv[])
if (unlikely(!current_hash))
quit (1, "main OOM");
#ifdef WIN32
opt_n_threads = num_processors = 1;
#else
num_processors = sysconf(_SC_NPROCESSORS_ONLN);
// Reckon number of cores in the box
#if defined(WIN32)
DWORD system_am;
DWORD process_am;
BOOL ok = GetProcessAffinityMask(
GetCurrentProcess(),
&system_am,
&process_am
);
if (!ok) {
applog(LOG_ERR, "couldn't figure out number of processors :(");
num_processors = 1;
} else {
size_t n = 32;
num_processors = 0;
while (n--)
if (process_am & (1<<n))
++num_processors;
}
#else
num_processors = sysconf(_SC_NPROCESSORS_ONLN);
#endif /* !WIN32 */
opt_n_threads = num_processors;
#endif /* !WIN32 */
#ifdef HAVE_OPENCL
for (i = 0; i < 16; i++)

Loading…
Cancel
Save