Data.table: Vous utilisez gcc sur macOS comme compilateur par défaut?

Créé le 31 oct. 2019  ·  5Commentaires  ·  Source: Rdatatable/data.table

Après avoir lu et essayé les instructions du gcc de homebrew serait une meilleure alternative que llvm .

Comme indiqué dans le wiki, un compilateur compatible openmp pose des problèmes avec d'autres packages. Il est assez fastidieux de commenter le compilateur llvm tout le temps si l'on veut compiler d'autres paquets.

Actuellement, j'utilise la configuration suivante avec gcc installé via brew install gcc . Aucun problème à ce jour pour les packages.

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

De plus, j'utilise ccache comme vous pouvez le voir. Combiné avec les paramètres ~/.ccache/ccache.conf ci-dessous, j'ai une configuration de compilateur C robuste qui prend en charge la mise en cache.

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

(La partie ccache est tirée de ce post par Dirk.)

install platform-specific question

Commentaire le plus utile

J'utilise l'approche suggérée sur https://github.com/rmacoslib/r-macos-rtools . J'utilise le clang7 fourni sur https://cloud.r-project.org/bin/macosx/tools et je n'ai qu'à spécifier ce qui suit dans ~/.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

Et tout fonctionne de manière fluide et cohérente.

Je ne sais pas pourquoi les instructions macOS semblent si compliquées, ce qui rendra facilement les utilisateurs débutants qui utilisent macOS du mal même à installer le dernier data.table partir de la source.

Tous les 5 commentaires

J'utilise l'approche suggérée sur https://github.com/rmacoslib/r-macos-rtools . J'utilise le clang7 fourni sur https://cloud.r-project.org/bin/macosx/tools et je n'ai qu'à spécifier ce qui suit dans ~/.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

Et tout fonctionne de manière fluide et cohérente.

Je ne sais pas pourquoi les instructions macOS semblent si compliquées, ce qui rendra facilement les utilisateurs débutants qui utilisent macOS du mal même à installer le dernier data.table partir de la source.

Pour moi, l'approche gcc est la plus rapide et la plus stable à ce jour.
Je ne suis pas sûr des autres mises en garde que cela pourrait introduire sur macOS. 🤔

@jangorecki Qui est responsable de la partie liée au C dans {data.table} ou pourrait avoir des connaissances plus approfondies sur ce qui se passe dans les coulisses?

gcc est le compilateur utilisé sur toutes les principales distributions Linux, y a-t-il quelque chose qui l'empêche de le définir par défaut sur macOS?

Il n'y a pas un seul responsable de la partie C de DT. Matt et Arun ont écrit la plupart des trucs en C. AFAIR @arunsrinivasan est sur macOS, donc son point de vue sur ce problème pourrait être très utile.

Je préfère aussi utiliser gcc moi-même, mais il arrive que clang soit celui par défaut sur MacOS. Essayer de modifier globalement le compilateur par défaut pour les utilisateurs de Mac poserait plus de problèmes qu'il n'en résoudrait. Je ne pense donc pas que le changement par défaut soit la voie à suivre.
Maintenant que https://github.com/Rdatatable/data.table/pull/4735 est fusionné (et déjà publié sur CRAN en tant que 1.13.2), les utilisateurs devraient pouvoir personnaliser plus facilement leur build de data.table. Par conséquent, il devrait répondre à votre cas d'utilisation. Si ce n'est pas le cas, veuillez nous en informer.

Salut @ pat-s. Merci pour votre contribution ici. J'ajouterais simplement que si les instructions MacOS sur notre page d'installation peuvent être simplifiées, ce serait très bienvenu. Veuillez continuer et apporter les modifications directement sur le wiki. Il n'y a pas d'autorisations nécessaires pour changer le wiki, c'est la raison même pour laquelle nous en avons fait un wiki.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

DavidArenburg picture DavidArenburg  ·  3Commentaires

andschar picture andschar  ·  3Commentaires

rafapereirabr picture rafapereirabr  ·  3Commentaires

tcederquist picture tcederquist  ·  3Commentaires

symbalex picture symbalex  ·  3Commentaires