Data.table: [Solicitud] Pruebe la compatibilidad del compilador con `-fopenmp` antes de usar `SHLIB_OPENMP_CFLAGS`

Creado en 12 may. 2017  ·  3Comentarios  ·  Fuente: Rdatatable/data.table

Esto permitirá la instalación de data.table en sistemas/compiladores que no admitan openmp, incluso si el archivo Makeconf del sitio define SHLIB_OPENMP_CFLAGS . Este es el caso en macOS a partir de R 3.4.0 con el compilador de sonido predeterminado.

Algo como lo siguiente debería ser suficiente, tenga en cuenta que ifeq es una extensión GNU make, por lo que deberá anotarlo en su DESCRIPTION

```concha
CXX11=$(shell "${R_HOME}"/bin/R CMD configuración CXX11)
ifeq ($(shell $(CXX11) -fopenmp -E -xc++ - 2>&1 >/dev/null && echo 'true'), verdadero)
PKG_CFLAGS=$(SHLIB_OPENMP_CFLAGS)
PKG_LIBS=$(SHLIB_OPENMP_CFLAGS)
terminara si

openmp

Comentario más útil

Solo una nota de que esto todavía causa problemas (por ejemplo, este nuevo en la comunidad R), particularmente después de una nueva versión cuando CRAN aún no ha creado un binario. Ahora que está utilizando un script de configuración (https://github.com/Rdatatable/data.table/pull/3951), podría valer la pena agregar esta prueba al script de configuración para que la compilación funcione con la cadena de herramientas nativa de macOS (aunque sin paralelización).

Todos 3 comentarios

Este problema actualmente bloquea el uso de data.table en Mac con la versión de desarrollo de R , que a su vez bloquea una serie de otros paquetes y, a su vez, el desarrollo y la actualización de paquetes:

> 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   

Solo una nota de que esto todavía causa problemas (por ejemplo, este nuevo en la comunidad R), particularmente después de una nueva versión cuando CRAN aún no ha creado un binario. Ahora que está utilizando un script de configuración (https://github.com/Rdatatable/data.table/pull/3951), podría valer la pena agregar esta prueba al script de configuración para que la compilación funcione con la cadena de herramientas nativa de macOS (aunque sin paralelización).

@jimhester Gracias por la nota. Pensé que ya funcionaba con compiladores sin openmp, y eso está comprobado en CRAN_Release.cmd aquí: https://github.com/Rdatatable/data.table/blob/b2d618ce291a50872e10fc1ca7137faa8484005a/.dev/CRAN_Release.cmd#L183. Pero claramente estoy equivocado y eso no es suficiente. Trataré de entender lo que dices y sugieres.

Me siento un poco frustrado con las afirmaciones de los usuarios de que data.table está bloqueando cualquier cosa. MacOS es el problema... ¿por qué no incluye openmp por defecto? Todo funciona sin problemas en Linux y Windows.

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