在Linux中,R只在特定的CPU上运行
我有一台运行R4.0.2的8核RHEL Linux机器 如果我问R的核心数量,我可以确认8个可用 打印(future::availableWorkers()) [1] “localhost”“localhost”“localhost”“localhost”“localhost”“localhost”“localhost” [7] “本地主机”“本地主机” >打印(并行::detectCores()) [1] 8 但是,如果我运行这个简单的示例在Linux中,R只在特定的CPU上运行,r,linux,parallel-processing,rhel,R,Linux,Parallel Processing,Rhel,我有一台运行R4.0.2的8核RHEL Linux机器 如果我问R的核心数量,我可以确认8个可用 打印(future::availableWorkers()) [1] “localhost”“localhost”“localhost”“localhost”“localhost”“localhost”“localhost” [7] “本地主机”“本地主机” >打印(并行::detectCores()) [1] 8 但是,如果我运行这个简单的示例 f首次运行 system(sprintf(“任务集
f首次运行
system(sprintf(“任务集-p0xffffffff%d”,Sys.getpid()))
然后是你的简单例子
f您使用workers@jared_mamrot是否得到相同的结果是的,我使用您建议的代码得到相同的行为。刚刚在分配了两个内核的Linux/Debian虚拟机上测试了它:两个内核都被100%激活。如果您使用“socket”方法遇到相同的问题,则可能是openBLAS的问题。在这里尝试故障排除建议(system(sprintf(“taskset-p0xffffffff%d”,Sys.getpid())
)和解决方案:/So运行system(sprintf(“taskset-p0xffffffff%d”,Sys.getpid())
,然后运行您的简单示例仍然只使用一个核心。。。您能否在问题中包含命令sessionInfo()
的输出?同样值得一提的是,一个更好的解决方案是将上面的system()
调用添加到我的.Rprofile
文件中,在函数.First()
中,如下所述:。这确保在每个R会话开始时调用该命令。
%Cpu0 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 2.0 us, 0.0 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 32684632 total, 28211076 free, 2409992 used, 2063564 buff/cache
KiB Swap: 16449532 total, 11475052 free, 4974480 used. 29213180 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3483 user 20 0 493716 57980 948 R 1.8 0.2 0:18.09 R
3479 user 20 0 493716 57980 948 R 1.5 0.2 0:18.09 R
3480 user 20 0 493716 57980 948 R 1.5 0.2 0:18.08 R
3481 user 20 0 493716 57980 948 R 1.5 0.2 0:18.09 R
3482 user 20 0 493716 57980 948 R 1.5 0.2 0:18.09 R
3484 user 20 0 493716 57980 948 R 1.5 0.2 0:18.09 R
3485 user 20 0 493716 57980 948 R 1.5 0.2 0:18.09 R
3486 user 20 0 493716 57980 948 R 1.5 0.2 0:18.09 R