当直接使用make工具时,可以使用-j选项进行并行构建。如何在使用install.packages()安装R软件包时使用并行构建?make由R调用,而不是由我调用,因此我无法将-j选项传递给它。在启动R之前设置export MAKE_FLAGS=-j4不起作用。我希望为我的R安装永久设置并行构建。
make
-j
install.packages()
export MAKE_FLAGS=-j4
bnl4lu3b1#
options(Ncpus=8)路由是单向的。在install.packages()中,您有Ncpus = getOption("Ncpus"),该选项描述为Ncpus:用于并行安装多个源程序包的并行进程数。如果“Sys.getenv(“MAKE”,“make”)“指定的”make“命令接受参数”-k -j Ncpus“,则支持大于1的值。我没有看到它列在update.packages()中,但它在我的Linux机器上的功能相同,因此构建通常是并行进行的。简而言之,它使用多个包的并行构建,而不是只构建一个包的make -j ...。我也尝试过这种方法,但发现收益不那么引人注目。
options(Ncpus=8)
Ncpus = getOption("Ncpus")
update.packages()
make -j ...
tzcvj98z2#
给定n要使用的并行线程数。要并行编译单个包的不同源文件,请执行以下操作:
n
Sys.setenv(MAKEFLAGS = paste0("-j",n))
字符串要并行编译所有通过单个install.packages调用安装的不同包:
install.packages
options(Ncpus = n)
型要使用parallel::lcmlapply并行化apply类型函数,请执行以下操作:
options(mc.cores = n)
型您可以将这些选项放在$HOME/.Rprofile中,以便在R启动时加载它们。如果您使用RStudio并在$HOME/.bashrc中导出了MAKEFLAGS,请注意.bashrc在RStudio启动和R会话时不是来源的。最后你可以用
$HOME/.Rprofile
$HOME/.bashrc
MAKEFLAGS
.bashrc
parallel::detectCores()
型来查找操作系统的内核数量,
n <- max(parallel::detectCores() - 2L, 1L)
型使用除两个以外的所有可用内核。
2条答案
按热度按时间bnl4lu3b1#
options(Ncpus=8)
路由是单向的。在install.packages()
中,您有Ncpus = getOption("Ncpus")
,该选项描述为Ncpus:用于并行安装多个源程序包的并行进程数。如果“Sys.getenv(“MAKE”,“make”)“指定的”make“命令接受参数”-k -j Ncpus“,则支持大于1的值。
我没有看到它列在
update.packages()
中,但它在我的Linux机器上的功能相同,因此构建通常是并行进行的。简而言之,它使用多个包的并行构建,而不是只构建一个包的
make -j ...
。我也尝试过这种方法,但发现收益不那么引人注目。tzcvj98z2#
给定
n
要使用的并行线程数。要并行编译单个包的不同源文件,请执行以下操作:
字符串
要并行编译所有通过单个
install.packages
调用安装的不同包:型
要使用parallel::lcmlapply并行化apply类型函数,请执行以下操作:
型
您可以将这些选项放在
$HOME/.Rprofile
中,以便在R启动时加载它们。如果您使用RStudio并在
$HOME/.bashrc
中导出了MAKEFLAGS
,请注意.bashrc
在RStudio启动和R会话时不是来源的。最后你可以用
型
来查找操作系统的内核数量,
型
使用除两个以外的所有可用内核。