Reputation: 30301
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
Reputation: 30301
The parallel package now has a function to detect the number of cores: parallel:::detectCores()
.
Upvotes: 24
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
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
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