Data.table: デフォルトのコンパイラとしてmacOSでgccを使用していますか?

作成日 2019年10月31日  ·  5コメント  ·  ソース: Rdatatable/data.table

macOSのコンパイラ命令を読んで試した後、自作のgccllvmよりも優れた代替手段になるかどうか疑問に思いました。

wikiに記載されているように、openmp対応のコンパイラーは他のパッケージで問題を引き起こします。 他のパッケージをコンパイルしたい場合、llvmコンパイラを常にコメントアウトするのは非常に面倒です。

現在、 brew install gcc介してgccインストールした次のセットアップを使用しています。 これまでのところ、どのパッケージにも問題はありません。

CXX_STD = CXX14

CC=ccache /usr/local/bin/gcc-9
CC11=ccache /usr/local/bin/gcc-9
CC14=ccache /usr/local/bin/gcc-9
CXX=ccache /usr/local/bin/g++-9
CXX11=ccache /usr/local/bin/g++-9
CXX14=ccache /usr/local/bin/g++-9
## -O3 should be faster than -O2 (default) level optimisation ..
CFLAGS=-g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe
CXXFLAGS=-g -O3 -Wall -pedantic -std=c++11 -mtune=native -pipe

さらに、ご覧のとおり、私はccacheています。 以下の~/.ccache/ccache.conf設定と組み合わせると、キャッシュをサポートする堅牢なCコンパイラセットアップがあります。

max_size = 5.0G
# important for R CMD INSTALL *.tar.gz as tarballs are expanded freshly -> fresh ctime
sloppiness = include_file_ctime
# also important as the (temp.) directory name will differ
hash_dir = false

ccache部分は、Dirkによるこの投稿から抜粋したものです。)

install platform-specific question

最も参考になるコメント

https://github.com/rmacoslib/r-macos-rtoolsで提案されているアプローチを使用していhttps://cloud.r-project.org/bin/macosx/toolsで提供されているclang7を使用しており、 ~/.R/Makevars以下を指定するだけで済みます。

CC=/usr/local/clang7/bin/clang
CXX=/usr/local/clang7/bin/clang++
CXX1X=/usr/local/clang7/bin/clang++
CXX11=/usr/local/clang7/bin/clang++
CXX14=/usr/local/clang7/bin/clang++
CXX17=/usr/local/clang7/bin/clang++
LDFLAGS=-L/usr/local/clang7/lib

そして、すべてがスムーズかつ一貫して機能します。

macOSの手順が非常に複雑に見える理由がわかりません。そのため、macOSを使用する初心者ユーザーは、ソースから最新のdata.tableをインストールすることさえ困難になります。

全てのコメント5件

https://github.com/rmacoslib/r-macos-rtoolsで提案されているアプローチを使用していhttps://cloud.r-project.org/bin/macosx/toolsで提供されているclang7を使用しており、 ~/.R/Makevars以下を指定するだけで済みます。

CC=/usr/local/clang7/bin/clang
CXX=/usr/local/clang7/bin/clang++
CXX1X=/usr/local/clang7/bin/clang++
CXX11=/usr/local/clang7/bin/clang++
CXX14=/usr/local/clang7/bin/clang++
CXX17=/usr/local/clang7/bin/clang++
LDFLAGS=-L/usr/local/clang7/lib

そして、すべてがスムーズかつ一貫して機能します。

macOSの手順が非常に複雑に見える理由がわかりません。そのため、macOSを使用する初心者ユーザーは、ソースから最新のdata.tableをインストールすることさえ困難になります。

私にとって、 gccアプローチは、これまでで最も速く、最も安定したアプローチです。
これがmacOSにもたらす可能性のある他の警告はわかりませんが。 🤔

@jangorecki {data.table}のC関連の部分を担当しているのは誰ですか、それとも舞台裏で何が起こっているのかについてより深い知識を持っている可能性がありますか?

gccは、すべての主要なLinuxディストリビューションで使用されているコンパイラですが、macOSのデフォルトとして設定するのを妨げるものはありますか?

DTのC部分を担当する人は一人もいません。 MattとArunはほとんどのC関連のものを書きました。 AFAIR @arunsrinivasanはmacOSを使用しているため、この問題に関する彼の見解は非常に役立つ可能性があります。

私もgccを使用することを好みますが、MacOSではclangがデフォルトのものであることがあります。 Macユーザーのデフォルトコンパイラをグローバルに変更しようとすると、解決するよりも多くの問題が発生します。 ですから、デフォルトを変更することは道ではないと思います。
https://github.com/Rdatatable/data.table/pull/4735がマージされた(そしてすでに1.13.2としてCRANに公開されている)ので、ユーザーはdata.tableのビルドをより簡単にカスタマイズできるはずです。 したがって、ユースケースに対応する必要があります。 そうでない場合はお知らせください。

こんにちは@ pat-s。 ここに入力していただきありがとうございます。 インストールページのMacOSの説明を簡略化できれば、それは大歓迎です。 先に進んで、wikiに直接自分で変更を加えてください。 ウィキを変更するために必要な権限はありません。それが、ウィキを作成したまさにその理由です。

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