Data.table: [Request] Teste a compatibilidade do compilador com `-fopenmp` antes de usar `SHLIB_OPENMP_CFLAGS`

Criado em 12 mai. 2017  ·  3Comentários  ·  Fonte: Rdatatable/data.table

Isso permitirá a instalação do data.table em sistemas/compiladores que não suportam openmp, mesmo que o arquivo Makeconf do site defina SHLIB_OPENMP_CFLAGS . Este é o caso no macOS a partir do R 3.4.0 com o compilador clang padrão.

Algo como o seguinte deve ser suficiente, note que ifeq é uma extensão GNU make, então ela precisará ser anotada em seu DESCRIPTION

```concha
CXX11=$(shell "${R_HOME}"/bin/R CMD config CXX11)
ifeq ($(shell $(CXX11) -fopenmp -E -xc++ - 2>&1 >/dev/null && echo 'true'), true)
PKG_CFLAGS=$(SHLIB_OPENMP_CFLAGS)
PKG_LIBS=$(SHLIB_OPENMP_CFLAGS)
fim se

openmp

Comentários muito úteis

Apenas uma observação de que isso ainda causa problemas (por exemplo, este novo na comunidade R), principalmente após um novo lançamento quando o CRAN ainda não construiu um binário. Agora que você está usando um script configure (https://github.com/Rdatatable/data.table/pull/3951) pode valer a pena adicionar este teste ao script configure para que a compilação funcione com a cadeia de ferramentas nativa do macOS (embora sem paralelização).

Todos 3 comentários

Este problema está bloqueando o uso de data.table no Mac com a versão devel de R , que por sua vez bloqueia vários outros pacotes e, por sua vez, o desenvolvimento e atualização de pacotes:

> 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   

Apenas uma observação de que isso ainda causa problemas (por exemplo, este novo na comunidade R), principalmente após um novo lançamento quando o CRAN ainda não construiu um binário. Agora que você está usando um script configure (https://github.com/Rdatatable/data.table/pull/3951) pode valer a pena adicionar este teste ao script configure para que a compilação funcione com a cadeia de ferramentas nativa do macOS (embora sem paralelização).

@jimhester Obrigado pela nota. Eu pensei que já funcionava com compiladores sem openmp, e isso é verificado em CRAN_Release.cmd aqui: https://github.com/Rdatatable/data.table/blob/b2d618ce291a50872e10fc1ca7137faa8484005a/.dev/CRAN_Release.cmd#L183. Mas claramente estou errado e isso não é suficiente. Vou tentar entender o que você está dizendo e sugerindo.

Fico um pouco frustrado com as alegações de usuários de que o data.table está bloqueando qualquer coisa. É o MacOS que é o problema ... por que não inclui o openmp por padrão? Tudo funciona sem problemas no Linux e no Windows.

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