R parallel包中的parallel函数有一个logical = FALSE选项,它将返回物理核的数量。
我有一个AMD Ryzen 7 3700X8-Core处理器,但是在Linux上,我得到
> detectCores(logical = F)
[1] 16看看logical选项的帮助,它说
如果可能,可以使用物理CPU/核心(如果为FALSE)或逻辑CPU(如果为真)的数量。目前,这仅在macOS、Solaris和Windows上得到遵守。
因此,在Linux上,我不应该期望这项工作。我感到惊讶的是,它不能在Linux上工作,因为它可以在其他*nix系统上工作。
有没有人知道R中有任何函数可以检测Linux系统上CPU上物理核的数量?
发布于 2021-07-07 10:00:05
parallel::detectCores调用,以防R.version$os以linux开头
system("grep \"^processor\" /proc/cpuinfo 2>/dev/null | wc -l", TRUE)当请求以core id开头的行时,物理核的数目可以用以下方法检测:
system("grep \"^core id\" /proc/cpuinfo 2>/dev/null | sort | uniq | wc -l", TRUE)或直接访问/proc/cpuinfo:
sum(!duplicated(grep("^core id", readLines("/proc/cpuinfo"), value = TRUE)))或者也可以考虑physical id:
nrow(unique(matrix(grep("^core id|^physical id",
readLines("/proc/cpuinfo"), value = TRUE), ncol=2, byrow=TRUE)))发布于 2021-07-07 09:18:16
这应该是可行的:
parallelly::availableCores(logical = FALSE)https://stackoverflow.com/questions/68282924
复制相似问题