Data.table: ¿Utiliza gcc en macOS como compilador predeterminado?

Creado en 31 oct. 2019  ·  5Comentarios  ·  Fuente: Rdatatable/data.table

Después de leer y probar las instrucciones del gcc de homebrew sería una mejor alternativa que llvm .

Como se indica en la wiki, un compilador habilitado para openmp causa problemas con otros paquetes. Es bastante engorroso comentar el compilador de llvm todo el tiempo si se quiere compilar otros paquetes.

Actualmente estoy usando la siguiente configuración con gcc instalado a través de brew install gcc . Hasta ahora no hay problemas para ningún paquete.

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

Además, estoy usando ccache como puede ver. Combinado con la configuración ~/.ccache/ccache.conf continuación, tengo una configuración robusta del compilador C que admite el almacenamiento en caché.

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 parte ccache tomó Dirk de esta publicación ).

install platform-specific question

Comentario más útil

Estoy usando el enfoque sugerido en https://github.com/rmacoslib/r-macos-rtools . Utilizo el clang7 proporcionado en https://cloud.r-project.org/bin/macosx/tools y solo tengo que especificar lo siguiente en ~/.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

Y todo funciona sin problemas y de forma coherente.

No estoy seguro de por qué las instrucciones de macOS parecen tan complicadas, lo que fácilmente hará que los usuarios principiantes que usan macOS tengan dificultades incluso para instalar los últimos data.table de la fuente.

Todos 5 comentarios

Estoy usando el enfoque sugerido en https://github.com/rmacoslib/r-macos-rtools . Utilizo el clang7 proporcionado en https://cloud.r-project.org/bin/macosx/tools y solo tengo que especificar lo siguiente en ~/.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

Y todo funciona sin problemas y de forma coherente.

No estoy seguro de por qué las instrucciones de macOS parecen tan complicadas, lo que fácilmente hará que los usuarios principiantes que usan macOS tengan dificultades incluso para instalar los últimos data.table de la fuente.

Para mí, el enfoque gcc es el más rápido y estable hasta ahora.
Sin embargo, no estoy seguro de qué otras advertencias podría introducir esto en macOS. 🤔

@jangorecki ¿Quién está a cargo de la parte relacionada con C en {data.table} o podría tener un conocimiento más profundo sobre lo que sucede detrás de escena?

gcc es el compilador utilizado en todas las principales distribuciones de Linux, ¿hay algo que le impida configurarlo como predeterminado en macOS?

No hay una sola persona a cargo de la parte C de DT. Matt y Arun escribieron la mayoría de las cosas de C. AFAIR @arunsrinivasan está en macOS, por lo que sus opiniones sobre este tema podrían ser muy útiles.

Yo también prefiero usar gcc, pero resulta que clang es el predeterminado en MacOS. Intentar cambiar el compilador predeterminado globalmente para los usuarios de Mac causaría más problemas de los que resuelve. Así que no creo que cambiar el valor predeterminado sea el camino a seguir.
Ahora que https://github.com/Rdatatable/data.table/pull/4735 se fusionó (y ya se publicó en CRAN como 1.13.2), los usuarios deberían poder personalizar más fácilmente su compilación de data.table. Por lo tanto, debería abordar su caso de uso. Si no es así, háganoslo saber.

Hola @ pat-s. Gracias por tu aporte aquí. Solo agregaría que si las instrucciones de MacOS en nuestra página de instalación se pueden simplificar, sería muy bienvenido. Continúe y realice los cambios directamente en la wiki. No se necesitan permisos para cambiar la wiki, que es la razón por la que la convertimos en una wiki.

¿Fue útil esta página
0 / 5 - 0 calificaciones