Data.table: [请求] 在使用 `SHLIB_OPENMP_CFLAGS` 之前测试编译器与 `-fopenmp` 的兼容性

创建于 2017-05-12  ·  3评论  ·  资料来源: Rdatatable/data.table

这将允许在不支持 openmp 的系统/编译器上安装data.table ,即使站点 Makeconf 文件定义了SHLIB_OPENMP_CFLAGS 。 从 R 3.4.0 开始,使用默认 clang 编译器的 macOS 就是这种情况。

类似以下内容就足够了,请注意ifeq是 GNU make 扩展,因此需要在DESCRIPTION中注明

```外壳
CXX11=$(shell "${R_HOME}"/bin/R CMD config CXX11)
ifeq ($(shell $(CXX11) -fopenmp -E -xc++ - 2>&1 >/dev/null && echo 'true'), true)
PKG_CFLAGS=$(SHLIB_OPENMP_CFLAGS)
PKG_LIBS=$(SHLIB_OPENMP_CFLAGS)
万一

openmp

最有用的评论

请注意,这仍然会导致问题(例如 R 社区上的这个新问题),特别是在 CRAN 尚未构建二进制文件的新版本之后。 现在您正在使用配置脚本(https://github.com/Rdatatable/data.table/pull/3951),可能值得将此测试添加到配置脚本中,以便编译将与本机 macOS 工具链一起使用(尽管没有并行化)。

所有3条评论

此问题当前阻止在 Mac 上使用R的开发版本使用data.table $ ,这反过来又阻止了许多其他包,进而阻止了包的开发和更新:

> sessionInfo()
R Under development (unstable) (2017-05-26 r72742)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.5

Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets 
[6] methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0   

请注意,这仍然会导致问题(例如 R 社区上的这个新问题),特别是在 CRAN 尚未构建二进制文件的新版本之后。 现在您正在使用配置脚本(https://github.com/Rdatatable/data.table/pull/3951),可能值得将此测试添加到配置脚本中,以便编译将与本机 macOS 工具链一起使用(尽管没有并行化)。

@jimhester感谢您的注意。 我认为它已经与没有 openmp 的编译器一起工作,并且在此处的 CRAN_Release.cmd 中进行了检查: https://github.com/Rdatatable/data.table/blob/b2d618ce291a50872e10fc1ca7137faa8484005a/.dev/CRAN_Release.cmd#L183。 但显然我错了,这还不够。 我会试着理解你所说的和建议的。

我对用户声称 data.table 阻止任何东西感到有点沮丧。 这是MacOS的问题......为什么它默认不包含openmp? 这一切都可以在 Linux 和 Windows 上顺利运行。

此页面是否有帮助?
0 / 5 - 0 等级