我正在开发一个建议 r的并行软件包(所以我的描述具有Suggests: parallel (>= 1.13.1)
语句。Linux,但在Windows上构建时(使用Win-Builder)失败。这是install.log win-Builder吐出的log:
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
*** arch - i386
Error: package or namespace load failed for 'spectrolab' in
library.dynam(lib, package, package.lib):
DLL 'parallel' not found: maybe not installed for this architecture?
Error: loading failed
Execution halted
*** arch - x64
ERROR: loading failed for 'i386'
* removing 'd:/RCompile/CRANguest/R-devel/lib/spectrolab'
在这里找到Win-Builder的完整输出
只有一个函数试图使用并行。它或多或少像这样:
#' Smooth spline functions for spectra
#' ... roxygen stuff ...
#' @importFrom stats smooth.spline
#' @importFrom parallel detectCores mclapply
smooth.spectra = function(x, ...){
p = requireNamespace("parallel", quietly = TRUE) && .Platform$OS.type != "windows"
if(p){
r = parallel::mclapply(x, stats::smooth.spline)
} else {
r = lapply(x, stats::smooth.spline)
}
r
}
关于问题是什么的想法?
这很可能是胜利者打ic。我最近刚刚在Cran Windows测试(与Win-Builder相同的设置)上观察到了同样的观察:
https://www.r-project.org/nosvn/r.check/r-devel-windows-ix86 x86_64/dofuture-00install.html
除非赢家维护者(Uwe Ligges)自己拿到它,否则您可以给他发送电子邮件。
问题可以是该软件包使用mclapply
r = parallel::mclapply(x, stats::smooth.spline)
mcapply
仅在doMC
DOMC软件包充当foreach和并行软件包的多项功能之间的接口,最初由Simon Urbanek编写,并将其纳入R2.14.0的并行中。当前的多项功能仅适用于支持叉系统调用的操作系统(这意味着不支持Windows)
mclapply
在parallel
宇宙下,但是
多巴平行软件包是Dosnow和Domc的合并,同样是雪和多核的合并。