r - R 的 `parallel::detectCores` 在 Linux 上检测物理内核
问题描述
detectCores
R包中的函数parallel
有一个选项logical = FALSE
,它将返回物理内核的数量。
我有一个 AMD Ryzen 7 3700X 8 核处理器,但在 Linux 上,我得到了
> detectCores(logical = F)
[1] 16
查看该logical
选项的帮助,它说
如果可能,请使用物理 CPU/内核的数量(如果为 FALSE)或逻辑 CPU 的数量(如果为 TRUE)。目前这仅适用于 macOS、Solaris 和 Windows。
因此,在 Linux 上,我不应该期待这项工作。我很惊讶它不能在 Linux 上运行,因为它可以在其他 *nix 系统上运行。
有谁知道 R 中的任何函数可以检测基于 Linux 的系统上 CPU 上的物理内核数量?
解决方案
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)))
推荐阅读
- python - 线程中的 Pytorch 异常:ValueError:信号编号 32 超出范围
- python - 使用 Tkinter 在 Python 中重置生成的小部件计数
- python - AWS Glue 与 SecretManager 用于数据库凭证
- google-apps-script - 基于复选框的 Google 表格编辑表格
- regex - 正则表达式来识别分配给方法名称
- matlab - 使用 Matlab fsolve() 找到具有 2 个变量的 2 个函数的零点
- elasticsearch - 如何使用无痛脚本获取 foreach 管道指令的当前条目?
- java - Openfire websocket内存泄漏
- c++ - c ++复制二维数组的一部分
- r - 描绘供应网络结构