R: Detect the Number of CPU Cores

detectCores {parallel} | R Documentation

## Detect the Number of CPU Cores

### Description

Attempt to detect the number of CPU cores on the current host.

### Usage

    detectCores(all.tests = FALSE, logical = FALSE)

### Arguments

`all.tests` | Logical: if true apply all known tests.
`logical` | Logical: if possible, use the number of physical CPUs/cores (if `FALSE`) or logical CPUs (if `TRUE`).

### Details

This attempts to detect the number of CPU cores in the current machine.

It has methods to do so for Linux, OS X, FreeBSD, Solaris, Irix and Windows. `detectCores(TRUE)` could be tried on other Unix-alike systems.

### Value

An integer, `NA` if the answer is unknown.

Exactly what this represents is OS-dependent: where possible by default it represents physical cores and not logical (e.g., hyperthreaded) CPUs.

On Windows the default is the number of logical CPUs.

Currently `logical` makes a difference on Sparc Solaris: there `logical = FALSE` returns the number of physical cores and `logical = TRUE` returns the number of available hardware threads. (Some Sparc CPUs which do have multiple cores per CPU, others have multiple threads per core and some have both.) For example, the UltraSparc T2 CPU in the CRAN check server is a single physical CPU with 8 cores, and each core supports 8 hardware threads. So `detectCores(logical = FALSE)` returns 8, and `detectCores(logical = TRUE)` returns 64.

Where virtual machines are in use, one would hope that the result represents the number of CPUs available (or potentially available) to that particular VM.

### Note

This is not suitable for use directly for the `mc.cores` argument of `mclapply` nor specifying the number of cores in `makeCluster`. First because it may return `NA`, and second because it does not give the number of allowed cores.

### Author(s)

Simon Urbanek and Brian Ripley

### Examples

    detectCores()
    detectCores(logical = TRUE)

[Package parallel version 3.1.2 Index]