Data.table: Usando o gcc no macOS como o compilador padrão?

Criado em 31 out. 2019  ·  5Comentários  ·  Fonte: Rdatatable/data.table

Depois de ler e tentar as instruções do gcc do homebrew seria uma alternativa melhor do que llvm .

Conforme declarado no wiki, um compilador habilitado para openmp causa problemas com outros pacotes. É muito complicado comentar o compilador llvm o tempo todo, se alguém deseja compilar outros pacotes.

Atualmente estou usando a seguinte configuração com gcc instalado por meio de brew install gcc . Nenhum problema até agora para nenhum pacote.

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

Além disso, estou usando ccache como você pode ver. Combinado com as configurações ~/.ccache/ccache.conf abaixo, eu tenho uma configuração de compilador C robusta que suporta armazenamento em 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

(A parte ccache foi tirada desta postagem por Dirk.)

install platform-specific question

Comentários muito úteis

Estou usando a abordagem sugerida em https://github.com/rmacoslib/r-macos-rtools . Eu uso o clang7 fornecido em https://cloud.r-project.org/bin/macosx/tools e só preciso especificar o seguinte em ~/.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

E tudo funciona bem e de forma consistente.

Não sei por que as instruções do macOS parecem tão complicadas, o que fará com que usuários iniciantes que usam o macOS tenham dificuldade até mesmo para instalar o data.table mais recente da fonte.

Todos 5 comentários

Estou usando a abordagem sugerida em https://github.com/rmacoslib/r-macos-rtools . Eu uso o clang7 fornecido em https://cloud.r-project.org/bin/macosx/tools e só preciso especificar o seguinte em ~/.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

E tudo funciona bem e de forma consistente.

Não sei por que as instruções do macOS parecem tão complicadas, o que fará com que usuários iniciantes que usam o macOS tenham dificuldade até mesmo para instalar o data.table mais recente da fonte.

Para mim, a abordagem gcc é a mais rápida e estável até agora.
Não tenho certeza de quais outras advertências isso pode introduzir no macOS. 🤔

@jangorecki Quem é o responsável pela parte relacionada ao C em {data.table} ou pode ter um conhecimento mais aprofundado sobre o que está acontecendo nos bastidores?

gcc é o compilador usado em todas as principais distros do Linux, há algo que o impede de defini-lo como padrão no macOS?

Não há uma única pessoa responsável pela parte C da DT. Matt e Arun escreveram a maioria das coisas em C. AFAIR @arunsrinivasan está no macOS, então suas opiniões sobre esse assunto podem ser muito úteis.

Eu também prefiro usar o gcc, mas acontece que clang é o padrão no MacOS. Tentar mudar o compilador padrão globalmente para usuários de Mac causaria mais problemas do que resolveria. Portanto, não acho que mudar o padrão seja o caminho a percorrer.
Agora que https://github.com/Rdatatable/data.table/pull/4735 foi mesclado (e já publicado no CRAN como 1.13.2), os usuários devem ser capazes de personalizar mais facilmente sua compilação de data.table. Portanto, ele deve abordar seu caso de uso. Se não, por favor nos avise.

Olá @ pat-s. Obrigado por sua contribuição aqui. Eu apenas acrescentaria que, se as instruções do MacOS em nossa página de instalação puderem ser simplificadas, isso seria muito bem-vindo. Vá em frente e faça as alterações diretamente no wiki. Não são necessárias permissões para alterar o wiki, que é a razão pela qual o tornamos um wiki.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

tcederquist picture tcederquist  ·  3Comentários

franknarf1 picture franknarf1  ·  3Comentários

DavidArenburg picture DavidArenburg  ·  3Comentários

alex46015 picture alex46015  ·  3Comentários

st-pasha picture st-pasha  ·  3Comentários