Zach
Zach

Reputation: 30301

Detect the number of cores on windows

If I am running R on linux or on a mac, I can detect the number of available cores using multicore:::detectCores(). However, there's no windows version of the multicore functions, so I can't use this technique on windows.

How can I programmatically detect the number of cores on a windows machine, from within R?

Upvotes: 14

Views: 10469

Answers (4)

Zach
Zach

Reputation: 30301

The parallel package now has a function to detect the number of cores: parallel:::detectCores().

Upvotes: 24

selbie
selbie

Reputation: 104514

If you actually need to distinguish between actual cores, chips, and logical processors, the API to call is GetLogicalProcessInformation

GetSystemInfo if just want to know how many logical processors on a machine (with no differentiation for hyperthreading.).

How you call this from "R" is beyond me. But I'd guess R has a facility for invoking code from native Windows DLLs.

Upvotes: 3

Adrian McCarthy
Adrian McCarthy

Reputation: 47952

GetSystemInfo will give you a structure that has the number of "processors", which corresponds to the total number of cores.

In theory, it will be the same value as the environment variable recommended in another answer, but the user can tamper with (or delete) the environment variable. That can be a bug or a feature depending on your intent.

Upvotes: 0

Gavin Simpson
Gavin Simpson

Reputation: 174778

This thread has a number of suggestions, including:

Sys.getenv('NUMBER_OF_PROCESSORS')

Note also the posting in that thread by Prof. Ripley which talks to the difficulties of doing this.

Upvotes: 13

Related Questions