Data.table: [リクエスト] `SHLIB_OPENMP_CFLAGS`を使用する前に、` -fopenmp`とのコンパイラの互換性をテストしてください

作成日 2017年05月12日  ·  3コメント  ·  ソース: Rdatatable/data.table

これにより、サイトの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

openmp

最も参考になるコメント

特にCRANがまだバイナリを構築していない新しいリリースの後、これはまだ問題を引き起こすことに注意してください(たとえば、Rコミュニティのこの新しいもの)。 構成スクリプト(https://github.com/Rdatatable/data.table/pull/3951)を使用しているので、このテストを構成スクリプトに追加して、ネイティブのmacOSツールチェーンでコンパイルが機能するようにする価値があるかもしれません(ただし、並列化)。

全てのコメント3件

この問題は現在、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ですべてスムーズに動作します。

このページは役に立ちましたか?
0 / 5 - 0 評価