これにより、サイトのMakeconfファイルSHLIB_OPENMP_CFLAGS
が定義されている場合でも、openmpをサポートしないシステム/コンパイラにdata.tableをインストールできます。 これは、デフォルトのclangコンパイラを備えたR3.4.0以降の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)
endif
この問題は現在、Macでのdata.table
の使用をブロックしており、開発バージョンはR
であり、これにより他の多くのパッケージがブロックされ、パッケージの開発と更新がブロックされます。
> 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
特にCRANがまだバイナリを構築していない新しいリリースの後、これはまだ問題を引き起こすことに注意してください(たとえば、Rコミュニティのこの新しいもの)。 構成スクリプト(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ですべてスムーズに動作します。
最も参考になるコメント
特にCRANがまだバイナリを構築していない新しいリリースの後、これはまだ問題を引き起こすことに注意してください(たとえば、Rコミュニティのこの新しいもの)。 構成スクリプト(https://github.com/Rdatatable/data.table/pull/3951)を使用しているので、このテストを構成スクリプトに追加して、ネイティブのmacOSツールチェーンでコンパイルが機能するようにする価値があるかもしれません(ただし、並列化)。