首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R的“并行::检测代码”用于检测Linux上的物理内核

R的“并行::检测代码”用于检测Linux上的物理内核
EN

Stack Overflow用户
提问于 2021-07-07 08:51:41
回答 2查看 295关注 0票数 1

R parallel包中的parallel函数有一个logical = FALSE选项,它将返回物理核的数量。

我有一个AMD Ryzen 7 3700X8-Core处理器,但是在Linux上,我得到

代码语言:javascript
复制
> detectCores(logical = F)
[1] 16

看看logical选项的帮助,它说

如果可能,可以使用物理CPU/核心(如果为FALSE)或逻辑CPU(如果为真)的数量。目前,这仅在macOS、Solaris和Windows上得到遵守。

因此,在Linux上,我不应该期望这项工作。我感到惊讶的是,它不能在Linux上工作,因为它可以在其他*nix系统上工作。

有没有人知道R中有任何函数可以检测Linux系统上CPU上物理核的数量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-07 10:00:05

parallel::detectCores调用,以防R.version$oslinux开头

代码语言:javascript
复制
system("grep \"^processor\" /proc/cpuinfo 2>/dev/null | wc -l", TRUE)

当请求以core id开头的行时,物理核的数目可以用以下方法检测:

代码语言:javascript
复制
system("grep \"^core id\" /proc/cpuinfo 2>/dev/null | sort | uniq | wc -l", TRUE)

或直接访问/proc/cpuinfo

代码语言:javascript
复制
sum(!duplicated(grep("^core id", readLines("/proc/cpuinfo"), value = TRUE)))

或者也可以考虑physical id

代码语言:javascript
复制
nrow(unique(matrix(grep("^core id|^physical id",
 readLines("/proc/cpuinfo"), value = TRUE), ncol=2, byrow=TRUE)))
票数 1
EN

Stack Overflow用户

发布于 2021-07-07 09:18:16

这应该是可行的:

代码语言:javascript
复制
parallelly::availableCores(logical = FALSE)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68282924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档