detectCores
位於 parallel
包(package)。 說明
嘗試檢測當前主機上的CPU核心數。
用法
detectCores(all.tests = FALSE, logical = TRUE)
參數
all.tests |
邏輯:如果為 true,則應用所有已知測試。 |
logical |
邏輯:如果可能,請使用物理 CPU/內核(如果 |
細節
這會嘗試檢測可用 CPU 核心的數量。
它有針對 Linux、macOS、FreeBSD、OpenBSD、Solaris 和 Windows 的方法。 detectCores(TRUE)
可以在其他類 Unix 係統上嘗試。
值
一個整數,如果答案未知則為NA
。
這確切地表示的是OS-dependent:在可能的情況下,默認情況下它會計算邏輯(例如超線程)CPU,而不是物理核心或包。
在 macOS 下,“在當前電源管理模式下可用”和“本次啟動可能可用”之間有進一步的區別,該函數返回第一個。
在 Sparc Solaris 上,logical = FALSE
返回物理內核的數量,logical = TRUE
返回可用硬件線程的數量。 (有些Sparc CPU每個CPU有多個核心,有些每個核心有多個線程,有些則兩者都有。)例如,前CRAN檢查服務器中的UltraSparc T2 CPU是具有8個核心的單個物理CPU,每個核心支持8 個硬件線程。因此detectCores(logical = FALSE)
返回 8,detectCores(logical = TRUE)
返回 64。
在使用虛擬機的情況下,人們希望logical = TRUE
的結果代表該特定虛擬機可用(或潛在可用)的 CPU 數量。
注意
這不適合直接用於 mclapply
的 mc.cores
參數,也不適合在 makeCluster
中指定核心數量。首先是因為它可能返回 NA
,其次是因為它沒有給出允許的核心數量,第三是因為在 Sparc Solaris 和某些 Windows 機器上,嘗試一次使用所有邏輯 CPU 是不合理的。
例子
detectCores()
detectCores(logical = FALSE)
作者
Simon Urbanek and Brian Ripley
相關用法
- R pvec 使用 Forking 並行化向量映射函數
- R children 用於管理分叉進程的低級函數
- R makeCluster 創建並行套接字集群
- R clusterApply 使用集群應用操作
- R RNGstreams Pierre L'Ecuyer 的 RngStreams 的實施
- R mcparallel 在單獨的進程中異步計算 R 表達式
- R mcfork 分叉當前 R 進程的副本
- R mcaffinity 獲取或設置當前進程的CPU親和性掩碼
- R mclapply 使用 Forking 的 lapply 和 mapply 並行版本
- R splitIndices 劃分任務在集群中分布
- R SparkR partitionBy用法及代碼示例
- R purrr accumulate 累積向量縮減的中間結果
- R purrr imap 將函數應用於向量的每個元素及其索引
- R purrr list_transpose 轉置列表
- R purrr as_vector 將列表強製轉換為向量
- R purrr map_if 有條件地將函數應用於向量的每個元素
- R purrr map2 映射兩個輸入
- R purrr map_depth 在給定深度映射/修改元素
- R SparkR printSchema用法及代碼示例
- R purrr list_simplify 將列表簡化為原子或 S3 向量
- R purrr rerun 多次重新運行表達式
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Detect the Number of CPU Cores。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。