Ce problème https://github.com/Bioconductor/BiocParallel/issues/67 semble conduire à
library(parallel)
library(data.table)
mclapply(1:2, sqrt)
traîner avec
> sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: OS X El Capitan 10.11.6
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/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] parallel stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] data.table_1.10.4-2
loaded via a namespace (and not attached):
[1] compiler_3.4.2
Merci pour le rapport.
Article 4 de NEWS pour 1.10.4-1 :
Tentative d'amélioration sur Mac avec OpenMP d'Intel lorsque le package 'parallel' fork après que data.table a été exécuté en parallèle avec OpenMP. Cette implémentation OpenMP semble laisser les threads en cours d'exécution après la fin de la région parallèle. Si ce correctif ne fonctionne toujours pas, appelez setDTthreads(1) immédiatement après library(data.table) qui a été signalé pour résoudre le problème.
En développement, j'ai amélioré ce même élément, mais j'ai négligé de rétroporter que les éléments d'actualité changent pour le patch CRAN. Depuis le fichier dev NEWS :
Tentative d'amélioration sur Mac uniquement lorsque le package parallèle est également utilisé (qui bifurque), #2137. L'implémentation OpenMP d'Intel semble laisser les threads en cours d'exécution après la fin de la région parallèle OpenMP (à l'intérieur de data.table) contrairement à GNU libgomp. Ainsi, si et quand le fork de parallel est invoqué par l'utilisateur après que data.table a déjà été exécuté en parallèle, une instabilité se produit. Le problème se produit uniquement avec les fichiers binaires du package Mac de CRAN, car ils sont créés par CRAN avec la bibliothèque OpenMP d'Intel. Aucun problème connu sous Windows ou Linux et aucun problème connu sur aucune plate-forme lorsque le parallèle n'est pas utilisé. Si ce correctif pour Mac uniquement ne fonctionne toujours pas, appelez setDTthreads(1) immédiatement après library(data.table) qui a été signalé pour résoudre le problème en plaçant data.table en mode monothread plus tôt.
Cependant, dans votre cas, vous n'avez même pas utilisé data.table avant de forker. C'est donc un nouvel aspect qui n'a pas été signalé auparavant. Votre exemple reproductible est-il strictement correct dans la mesure où ces 3 lignes sont littéralement tout ce qui se produit dans une nouvelle session R ? c'est-à-dire aucune utilisation de data.table entre son chargement et l'appel mclapply
? Vous pouvez essayer d'appeler setDTthreads(1)
immédiatement après library(data.table)
toute façon, mais je doute que cela aide s'il n'y a vraiment aucune utilisation de data.table avant le mclapply
.
Avez-vous installé le binaire CRAN mac, ou à partir des sources ? Il semble être critique sur MacOS, en ce qui concerne ce problème mclapply
, quelle bibliothèque OpenMP vous utilisez. Êtes-vous en mesure d'établir si c'est l'implémentation OpenMP d'Intel (libomp) ou de GNU (libgomp) qui est utilisée sur la machine ?
Pouvez-vous compiler à partir des sources en utilisant les instructions MacOS et cela vous aide-t-il ? Peut-être que cela renvoie à la bonne bibliothèque OpenMP localement pour vous, ou quelque chose comme ça. Certaines personnes n'ont pas suivi les instructions assez précisément, elles doivent donc être suivies précisément sur MacOS.
Est-ce que test.data.table()
vous convient ? Le test 1705 teste mclapply
et il passe sur CRAN. Je suppose que CRAN teste les binaires Mac sur MacOS, mais il est possible que je suppose qu'il teste une version différente.
L'élément 1 des NEWS du 1.10.4-2 dont je doute qu'il soit lié, mais je le mentionnerai pour être complet :
OpenMP sur MacOS est désormais pris en charge par CRAN et inclus dans les fichiers binaires du package CRAN pour Mac. Mais l'installation de la v1.10.4-1 à partir des sources sur MacOS a échoué lorsque OpenMP n'était pas activé au moment de la compilation, #2409. Merci à Liz Macfie et @fupangpangpang pour le signalement. Le message de démarrage lorsque OpenMP n'est pas activé a été mis à jour.
Voici les problèmes liés :
https://github.com/Rdatatable/data.table/issues/2413
https://github.com/Rdatatable/data.table/issues/2409
https://github.com/Rdatatable/data.table/issues/2406
https://github.com/Rdatatable/data.table/issues/2137
Je suis essentiellement aux prises avec MacOS. S'il y a quelqu'un qui écoute Apple et/ou Intel qui peut prendre en charge leurs produits, ce serait formidable. J'ai du mal à voir en quoi c'est vraiment un problème de data.table. J'ai essayé tout ce que je pouvais penser pour contourner ce problème et le documenter dans NEWS. Aide et suggestions très appréciées.
Oui, le script simple avec seulement
library(parallel)
library(data.table)
mclapply(1:2, sqrt)
C'est sur les machines de construction Bioconductor. Je crois qu'il s'agit d'une simple installation binaire, mais je le confirmerai. On a
$ ls /Library/Frameworks/R.framework/Resources/lib
libR.dylib libRlapack.dylib.dSYM libquadmath.0.dylib
libR.dylib.dSYM libc++.1.dylib libreadline.5.2.dylib
libRblas.0.dylib libc++abi.1.dylib libreadline.dylib
libRblas.dylib libgcc_s.1.dylib libunwind.1.dylib
libRblas.dylib.dSYM libgfortran.3.dylib
libRlapack.dylib libomp.dylib
et
$ otool -L /Library/Frameworks/R.framework/Resources/bin/exec/R
/Library/Frameworks/R.framework/Resources/bin/exec/R:
/Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libR.dylib (compatibility version 3.4.0, current version 3.4.2)
/Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.dylib (compatibility version 0.0.0, current version 0.0.0)
/Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libomp.dylib (compatibility version 5.0.0, current version 5.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
Donc probablement lié à libomp.
test.data.table()
dit
Running test id 1705 Assertion failure at kmp_runtime.cpp(6480): __kmp_thread_pool == __null.
Assertion failure at kmp_runtime.cpp(6480): __kmp_thread_pool == __null.
OMP: Error #13: Assertion failure at kmp_runtime.cpp(6480).
OMP: Hint: Please submit a bug report with this message, compile and run commands used, and machine configuration info including native compiler and operating system versions. Faster response will be obtained by including all program sources. For information on submitting this issue, please see http://www.intel.com/software/products/support/.
OMP: Error #13: Assertion failure at kmp_runtime.cpp(6480).
OMP: Hint: Please submit a bug report with this message, compile and run commands used, and machine configuration info including native compiler and operating system versions. Faster response will be obtained by including all program sources. For information on submitting this issue, please see http://www.intel.com/software/products/support/.
Assertion failure at kmp_runtime.cpp(6480): __kmp_thread_pool == __null.
OMP: Error #13: Assertion failure at kmp_runtime.cpp(6480).
OMP: Hint: Please submit a bug report with this message, compile and run commands used, and machine configuration info including native compiler and operating system versions. Faster response will be obtained by including all program sources. For information on submitting this issue, please see http://www.intel.com/software/products/support/.
Assertion failure at kmp_runtime.cpp(6480): __kmp_thread_pool == __null.
OMP: Error #13: Assertion failure at kmp_runtime.cpp(6480).
OMP: Hint: Please submit a bug report with this message, compile and run commands used, and machine configuration info including native compiler and operating system versions. Faster response will be obtained by including all program sources. For information on submitting this issue, please see http://www.intel.com/software/products/support/.
Running test id 1750 Test 1751 not run. If required call library(nanotime) first.
endian==little, sizeof(long double)==16, sizeof(pointer)==8
All 5936 tests in inst/tests/tests.Rraw completed ok in 00:01:45 on Sat Oct 14 21:25:30 2017
Merci pour cela. Oui, ces appels __kmp_*
sont, je crois, spécifiques à Intel OpenMP Runtime et je les ai déjà vus. Le test 1705 teste spécifiquement cela. Il utilise 2 threads OpenMP dans data.table lui-même, suivis de l'appel parallel::mclapply
. Les erreurs __kmp_
sont dues au fait que, iiuc, l'implémentation d'Intel laisse les threads en cours d'exécution même après la fin de toutes les régions parallèles, de sorte que le fork suivant est instable. Dans ce cas, il semble qu'il ne s'est pas écrasé, mais c'est juste de la chance. Le fait que vous voyez cette sortie avec 1.10.4-2 signifie que ma tentative de contournement n'a pas fonctionné. Il existe un rappel pré-fork dans lequel il appelle maintenant omp_set_num_threads(1)
dans l'espoir que la bibliothèque Intel efface ses threads en cours d'exécution avant le fork. Mais il semble que non. Il nous reste donc ce qui a été signalé comme fonctionnant, à savoir appeler setDTthreads(1)
immédiatement après library(data.table)
pour empêcher OpenMP d'Intel de créer les threads en premier lieu.
Cependant, avec seulement 3 lignes, est-il possible que la bibliothèque OpenMP d'Intel crée ses threads lorsqu'elle est liée ou initialisée? Si oui, cela pourrait expliquer cela. Sinon, je suis perdu là-dessus.
De plus, je ne sais pas comment les capacités OpenMP de clang
et gcc
sont liées aux 3 bibliothèques OpenMP : libomp
, libiomp
et libgomp
. Vous semblez avoir libomp
. Mais je pense que CRAN compile avec libiomp
? C'est peut-être lié à ça. De plus, une personne a signalé ( ici ) que "changer llvm en gcc" a arrêté les plantages sur MacOS, mais ils compilaient à partir de la source.
Je viens de tomber sur le code source du runtime Intel OpenMP. Je ne sais pas ce qu'est ce projet parce que je pensais que la bibliothèque d'Intel était une source fermée. Mais peut-être est-il possible de le compiler et de le déboguer. https://www.openmprtl.org/ Probablement plus facile de compiler d'abord localement et de voir si cela fonctionne, ou d'utiliser la bibliothèque GNU.
Le test 1705 passe sur CRAN, donc c'est peut-être un espoir, en découvrant ce qui est différent entre la ou les machines CRAN et votre machine. Le test 1705 réussit en fait pour vous et sur CRAN, mais libomp
génère alors des erreurs d'assertion sur la console qui ne sont pas détectées par le test. Je me demande s'il est possible de voir les journaux du CRAN d'une manière ou d'une autre pour voir si ces messages __kmp
sont également dans les journaux du CRAN. Si les messages ne sont pas présents dans les journaux de CRAN, il peut être utile d'explorer la différence entre la machine CRAN et votre machine.
Peut-être que cela est nécessaire avec le binaire du package CRAN : http://macappstore.org/libiomp/
Ou peut-être que libiomp est compilé statiquement dans le paquet binaire par CRAN ? J'ai remarqué que la section "Packages binaires" de ?install.packages
est assez compliquée pour MacOS et qu'il existe plusieurs options binaires pour l'argument type=
.
La bibliothèque d'Intel imprime :
OMP : Erreur 13 : Échec de l'assertion à kmp_runtime.cpp(6480)
OMP : Indice : veuillez soumettre un rapport de bogue avec ce message, compiler et exécuter les commandes utilisées, et les informations de configuration de la machine, y compris les versions natives du compilateur et du système d'exploitation. Une réponse plus rapide sera obtenue en incluant toutes les sources de programme. Pour plus d'informations sur la soumission de ce problème, veuillez consulter http://www.intel.com/software/products/support/.
Quelqu'un avec le problème sur MacOS pourrait-il signaler un problème avec Intel, s'il vous plaît ?
Bonjour, j'ai initialement signalé le problème avec le référentiel BiocParallel car j'ai rencontré le problème lors de l'utilisation des fonctions de ce package. Ils ont réduit le problème à l'appel de mclapply pendant le chargement de data.table.
J'ai suivi les instructions ici pour installer la dernière version de data.table sur mon MacOS, mais j'ai quand même rencontré le problème.
Fait intéressant, un collègue avait la dernière version de data.table installée sur son Mac et n'a eu aucun problème. Cependant, il n'avait pas installé OpenMP sur son système.
J'ai pu résoudre le problème en revenant à data.table 1.10.2.
@asenabouth Pouvez-vous faire une demande d'assistance auprès d'Intel s'il vous plaît (voir mon commentaire ci-dessus) ? Il semble y avoir un problème avec leur bibliothèque. Alternativement, peut-être que quelqu'un d'Apple peut vous aider. Êtes-vous en mesure d'obtenir leur soutien du tout? Je ne suis pas convaincu que l'installation à partir de la source ne résout pas le problème. Pouvez-vous montrer les commandes et la sortie s'il vous plaît. Quelqu'un d'autre est-il incapable d'utiliser parallel::mclapply
après le chargement de data.table 1.10.4, même après avoir compilé à partir de la source et évité le binaire CRAN ?
Je vais déposer une demande d'assistance auprès d'Intel.
En ce qui concerne l'installation à partir des sources, voici l'installation et le test ultérieur :
```{r}
[Espace de travail précédemment enregistré restauré]
remove.packages("data.table")
Suppression du package de '/Users/a.senabouth/Library/R/3.4/library'
(car 'lib' n'est pas spécifié)
install.packages("data.table", type="source",
- repos = "http://Rdatatable.github.io/data.table")
Installation du package dans '/Users/a.senabouth/Library/R/3.4/library'
(car 'lib' n'est pas spécifié)
essayer l'URL ' http://Rdatatable.github.io/data.table/src/contrib/data.table_1.10.5.tar.gz 'Type de contenu 'application/gzip' longueur 3312731 octets (3,2 Mo)
téléchargé 3,2 Mo
uname -s
= 'Darwin' ]; Fiinstallation dans /Users/a.senabouth/Library/R/3.4/library/data.table/libs* RLes packages source téléchargés sont dans
'/privé/var/dossiers/zz/zyxvpxvq6csfxvn_n0001lp0000cxh/T/Rtmpl7TqS4/downloaded_packages'
R
Erreur : objet 'R' introuvable
bibliothèque (parallèle)
bibliothèque (data.table)
data.table 1.10.5 EN DÉVELOPPEMENT construit 2017-10-16 07:29:07 UTC ; Travis
Le moyen le plus rapide d'apprendre (par les auteurs de data.table) : https://www.datacamp.com/courses/data-analysis-the-data-table-way
Documentation : ?data.table, example(data.table) et parcourirVignettes("data.table")
Notes de version, vidéos et diapositives : http://r-datatable.com
mclapply(1:2, sqrt)
* pris en flagrant délit d'opération illégale *
adresse 0x7fffa9730ae4, cause 'opcode illégal'
Retraçage :
1 : mcfork()
2 : FUN(X[[i]], ...)
3 : lapply(seq_len(cores), inner.do)
4 : mclapply(1:2, sqrt)
Mesures possibles :
1 : abandonner (avec vidage mémoire, si activé)
2 : sortie R normale
3 : quitter R sans enregistrer l'espace de travail
4: quitter R en sauvegardant l'espace de travail
And here's the session info:
```{r}
R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] data.table_1.10.5
loaded via a namespace (and not attached):
[1] compiler_3.4.2
MODIFIER :
Je l'ai fait fonctionner en installant 1.10.4 à partir de la source.
```{r}
exiger (devtools)
Chargement du package requis : devtools
install_version("data.table", version = "1.10.4", repos = "http://cran.us.r-project.org")
Téléchargement du package à partir de l'URL : http://cran.us.r-project.org/src/contrib/Archive/data.table/data.table_1.10.4.tar.gz
Installation de data.table
'/Bibliothèque/Frameworks/R.framework/Resources/bin/R' --no-site-file --no-environ
--no-save --no-restore --quiet CMD INSTALL
'/privé/var/dossiers/zz/zyxvpxvq6csfxvn_n0001lp0000cxh/T/RtmpXDSgR8/devtoolsdf05280c79d9/data.table'
--library='/Users/a.senabouth/Library/R/3.4/library' --install-tests
uname -s
= 'Darwin' ]; puis install_name_tool -id datatable.so datatable.so ; Fi[[2]]
[1] 1,414214
```
J'ai posté ce qui suit https://software.intel.com/en-us/forums/intel-c-compiler/topic/746943
C'est probablement au mauvais endroit et je vais probablement me faire flamber, mais j'espère que cela fera bouger les choses.
@mattdowle faites-moi savoir s'il y a des choses que vous aimeriez que j'ajoute / fasse
Je voulais confirmer que j'ai reproduit la même erreur que @asenabouth et que la réinstallation de 1.10.4 à partir de la source a résolu le problème.
infosession :
R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/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] parallel stats graphics grDevices utils datasets base
other attached packages:
[1] data.table_1.10.4
loaded via a namespace (and not attached):
[1] compiler_3.4.2 methods_3.4.2
J'enregistre juste quelques détails sur ma machine
library(parallel)
library(data.table)
mclapply(1:2, sqrt)
produit
*** caught illegal operation ***
address 0x7fffb500eae4, cause 'illegal opcode'
avec sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8
attached base packages:
[1] parallel stats graphics utils datasets grDevices methods
[8] base
other attached packages:
[1] data.table_1.10.4-2 testthat_1.0.2 devtools_1.13.3
loaded via a namespace (and not attached):
[1] compiler_3.4.2 magrittr_1.5 R6_2.2.2 withr_2.0.0 crayon_1.3.4
[6] memoise_1.1.0 digest_0.6.12
De façon intéressante,
> remove.packages("data.table")
Removing package from ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library’
(as ‘lib’ is unspecified)
> install.packages("data.table", type = "source",
+ repos = "http://Rdatatable.github.io/data.table")
produit
trying URL 'http://Rdatatable.github.io/data.table/src/contrib/data.table_1.10.5.tar.gz'
Content type 'application/gzip' length 3312726 bytes (3.2 MB)
==================================================
downloaded 3.2 MB
* installing *source* package ‘data.table’ ...
** libs
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -fopenmp -fPIC -Wall -g -O2 -c assign.c -o assign.o
clang: error: unsupported option '-fopenmp'
make: *** [assign.o] Error 1
ERROR: compilation failed for package ‘data.table’
* removing ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/data.table’
The downloaded source packages are in
‘/private/var/folders/48/q6ltldjs251000_wvjrdy_vm0000gn/T/Rtmp6eZFXj/downloaded_packages’
Warning message:
In install.packages("data.table", type = "source", repos = "http://Rdatatable.github.io/data.table") :
installation of package ‘data.table’ had non-zero exit status
je vais voir si c'est lié
J'ai également suivi les instructions sur https://github.com/Rdatatable/data.table/wiki/Installation et le problème persiste....
ÉDITER:
Le problème d'origine avec mclapply
et le illegal operation
(pas l'erreur du compilateur unsupported option '-fopenmp'
- qui a été corrigé en suivant les instructions)
Merci à tous. Il est intéressant de noter que 1.10.4 semble fonctionner correctement, mais pas 1.10.4-2. Il semble planter dès que le fork est appelé. La tentative que j'ai mentionnée dans NEWS était dans ce domaine.
Tout d'abord, ce qui n'a pas changé. Lors du chargement de data.table, init.c
l'appelle dans openmp-utils.c :
void avoid_openmp_hang_within_fork() {
// Called once on loading data.table from init.c
#ifdef _OPENMP
pthread_atfork(&when_fork, NULL, NULL);
#endif
}
ainsi, lorsque parallel::mclapply
appelle son fork()
, la fonction when_fork
s'exécute. Qui dans 1.10.4-2 ressemble à ceci :
void when_fork() { # v 1.10.4-2
// attempted workaround for Intel's OpenMP implementation which leaves threads
// running after parallel region; these crash when forked.
#ifdef _OPENMP
omp_set_num_threads(1);
#endif
DTthreads = 1;
}
avant (en 1.10.4), il n'appelait pas omp_set_num_threads(1)
, et il ne faisait que définir cette variable statique DTthreads
:
void when_fork() { # v 1.10.4
DTthreads = 1;
}
Tout ce que je peux penser, c'est que l'appel à omp_set_num_threads(1)
le plante. Mais c'est la fonction la plus simple que vous puissiez appeler dans OpenMP. Peut-être n'a-t-il pas été correctement lié à la bibliothèque, d'une manière ou d'une autre ?
Pour les personnes qui peuvent reproduire le crash lors de l'appel parallel::mclapply
, est-ce que le simple fwrite()
fonctionne bien pour vous dans une nouvelle session sans charger le package parallel
? Utilise-t-il de nombreux processeurs comme il se doit ? Vous aurez besoin d'un gros DT
pour tester, sinon il n'utilise qu'un seul thread pour les petites données. S'il se bloque lors de toute utilisation d'OpenMP, nous avons un problème de liaison. Est-ce que quelqu'un sait ce que signifient ces drapeaux dans la ligne de lien et pourraient-ils avoir quelque chose à voir avec cela sur MacOS ? : -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress
Je pourrais essayer de supprimer à nouveau cet appel à omp_set_num_threads(1)
dans dev et quelqu'un avec le problème maintenant avec 1.10.5 pourrait réessayer dev après l'avoir changé?
La chose étrange est que les tests passent sur CRAN sur MacOS sans plantage. Testez 1705 tests en appelant parallel::mclapply
et tous les tests s'exécutent sur CRAN en utilisant 2 threads. Quelle est la différence entre la machine CRAN et les machines avec lesquelles les gens ont des problèmes ?
@joethorley C'est étrange. Vous obtenez unsupported option '-fopenmp'
même après avoir exécuté les instructions MacOS ici . Quelqu'un d'autre peut-il suggérer comment progresser alors? Je suis à perte.
@joethorley Avez-vous installé gettext ? Il s'avère que non. J'ai pu compiler correctement le package sur mon système une fois que cela a été fait.
@mattdowle non l'erreur unsupported option '-fopenmp'
a disparu après avoir suivi les instructions ici mais l'erreur
*** caught illegal operation ***
address 0x7fffb500eae4, cause 'illegal opcode'
eu lieu.
Mes Makevars est
CC=/usr/local/opt/llvm/bin/clang -fopenmp
CXX=/usr/local/opt/llvm/bin/clang++
# -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
LDFLAGS=-L/usr/local/opt/gettext/lib -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib
CPPFLAGS=-I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include
Ma sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8
attached base packages:
[1] stats graphics utils datasets grDevices methods base
other attached packages:
[1] testthat_1.0.2 devtools_1.13.3
loaded via a namespace (and not attached):
[1] compiler_3.4.2 magrittr_1.5 R6_2.2.2 withr_2.0.0 crayon_1.3.4
[6] memoise_1.1.0 digest_0.6.12
et ma séance R
> remove.packages("data.table")
Removing package from ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library’
(as ‘lib’ is unspecified)
> install.packages("data.table", type = "source", repos = "http://Rdatatable.github.io/data.table")
trying URL 'http://Rdatatable.github.io/data.table/src/contrib/data.table_1.10.5.tar.gz'
Content type 'application/gzip' length 3312684 bytes (3.2 MB)
==================================================
downloaded 3.2 MB
* installing *source* package ‘data.table’ ...
** libs
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c assign.c -o assign.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c between.c -o between.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c bmerge.c -o bmerge.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c chmatch.c -o chmatch.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c dogroups.c -o dogroups.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fastmean.c -o fastmean.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fcast.c -o fcast.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fmelt.c -o fmelt.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c forder.c -o forder.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c frank.c -o frank.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fread.c -o fread.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c freadR.c -o freadR.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fsort.c -o fsort.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fwrite.c -o fwrite.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fwriteR.c -o fwriteR.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c gsumm.c -o gsumm.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c ijoin.c -o ijoin.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c init.c -o init.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c inrange.c -o inrange.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c openmp-utils.c -o openmp-utils.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c quickselect.c -o quickselect.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c rbindlist.c -o rbindlist.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c reorder.c -o reorder.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c shift.c -o shift.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c subset.c -o subset.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c transpose.c -o transpose.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c uniqlist.c -o uniqlist.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c vecseq.c -o vecseq.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c wrappers.c -o wrappers.o
/usr/local/opt/llvm/bin/clang -fopenmp -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/opt/gettext/lib -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib -o data.table.so assign.o between.o bmerge.o chmatch.o dogroups.o fastmean.o fcast.o fmelt.o forder.o frank.o fread.o freadR.o fsort.o fwrite.o fwriteR.o gsumm.o ijoin.o init.o inrange.o openmp-utils.o quickselect.o rbindlist.o reorder.o shift.o subset.o transpose.o uniqlist.o vecseq.o wrappers.o -fopenmp -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
mv data.table.so datatable.so
if [ "" != "Windows_NT" ] && [ `uname -s` = 'Darwin' ]; then install_name_tool -id datatable.so datatable.so; fi
installing to /Library/Frameworks/R.framework/Versions/3.4/Resources/library/data.table/libs
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (data.table)
The downloaded source packages are in
‘/private/var/folders/48/q6ltldjs251000_wvjrdy_vm0000gn/T/RtmpWku3yc/downloaded_packages’
> library(parallel)
> library(data.table)
data.table 1.10.5 IN DEVELOPMENT built 2017-10-18 23:12:32 UTC; travis
The fastest way to learn (by data.table authors): https://www.datacamp.com/courses/data-analysis-the-data-table-way
Documentation: ?data.table, example(data.table) and browseVignettes("data.table")
Release notes, videos and slides: http://r-datatable.com
> mclapply(1:2, sqrt)
*** caught illegal operation ***
address 0x7fffb500eae4, cause 'illegal opcode'
@mattdowle
fwrite()
semble fonctionner sur ma machine> mtcars <- rbind(mtcars, mtcars)
> nrow(mtcars)
[1] 16777216
> fwrite(mtcars, "mtcars.csv")
Written 45.1% of 16777216 rows in 2 secs using 8 threads. anyBufferGrown=no; max
Written 69.5% of 16777216 rows in 3 secs using 8 threads. anyBufferGrown=no; max
Written 93.9% of 16777216 rows in 4 secs using 8 threads. anyBufferGrown=no; max
@asenabouth J'ai installé gettext et j'ai pu compiler le package correctement une fois que j'ai suivi les instructions. Mon post n'était pas clair donc j'ai édité.
@mattdowle
L'installation de 1.10.4.2 à partir de CRAN, source ou binaire, entraîne le blocage de mclapply. Installation de github.com/Rdatatable/data. table @ master de la source produisait toujours le blocage original de mclapply.
Installation de cette version modifiée du maître actuel
$ git diff
diff --git a/src/openmp-utils.c b/src/openmp-utils.c
index d6e3b70..bf104fc 100644
--- a/src/openmp-utils.c
+++ b/src/openmp-utils.c
@@ -78,7 +78,7 @@ void when_fork() {
void avoid_openmp_hang_within_fork() {
// Called once on loading data.table from init.c
#ifdef _OPENMP
- pthread_atfork(&when_fork, NULL, NULL);
+// pthread_atfork(&when_fork, NULL, NULL);
#endif
}
```
or this version
$ git diff
diff --git a/src/openmp-utils.cb/src/openmp-utils.c
indice d6e3b70..8c0236d 100644
--- a/src/openmp-utils.c
+++ b/src/openmp-utils.c
@@ -62,7 +62,7 @@ void when_fork() {
// tentative de contournement pour l'implémentation OpenMP d'Intel qui laisse les threads en cours d'exécution après
// région parallèle ; ceux-ci se bloquent lorsqu'ils sont bifurqués.
#ifdef _OPENMP
// GNU OpenMP semble correct avec juste la mise à 1 de DTthreads qui limite la prochaine région parallèle
clears the hang for me.
The R we use (installed as a binary from CRAN) is the 3.4.2 release
Version R
_
plate-forme x86_64-apple-darwin15.6.0
arche x86_64
os darwin15.6.0
système x86_64, darwin15.6.0
statut
majeur 3
mineur 4.2
année 2017
mois 09
jour 28
svn rév 73368
langue R
version.string R version 3.4.2 (2017-09-28)
surnom Short Summer
```
La définition de la variable d'environnement OMP_NUM_THREADS=2 n'a pas changé le résultat.
Je peux confirmer que commenter omp_set_num_threads(1);
dans when_fork()
résout également le problème sur ma machine
> mclapply(1:2, sqrt)
[[1]]
[1] 1
[[2]]
[1] 1.414214
Merci tout le monde. Fait le correctif en dev et passe. @joethorley Voulez-vous, ou quelqu'un d'autre, confirmer que la dernière version 1.10.5 est correcte maintenant. Je vais commencer à préparer 1.10.4-3 pour aller au CRAN.
@mattdowle
Je peux confirmer que c'est réparé.
$ R
R version 3.4.2 (2017-09-28) -- "Short Summer"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin15.6.0 (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> remove.packages("data.table")
Removing package from ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library’
(as ‘lib’ is unspecified)
> install.packages("data.table", type = "source", repos = "http://Rdatatable.github.io/data.table")
trying URL 'http://Rdatatable.github.io/data.table/src/contrib/data.table_1.10.5.tar.gz'
Content type 'application/gzip' length 3313284 bytes (3.2 MB)
==================================================
downloaded 3.2 MB
* installing *source* package ‘data.table’ ...
** libs
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c assign.c -o assign.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c between.c -o between.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c bmerge.c -o bmerge.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c chmatch.c -o chmatch.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c dogroups.c -o dogroups.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fastmean.c -o fastmean.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fcast.c -o fcast.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fmelt.c -o fmelt.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c forder.c -o forder.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c frank.c -o frank.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fread.c -o fread.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c freadR.c -o freadR.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fsort.c -o fsort.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fwrite.c -o fwrite.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c fwriteR.c -o fwriteR.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c gsumm.c -o gsumm.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c ijoin.c -o ijoin.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c init.c -o init.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c inrange.c -o inrange.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c openmp-utils.c -o openmp-utils.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c quickselect.c -o quickselect.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c rbindlist.c -o rbindlist.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c reorder.c -o reorder.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c shift.c -o shift.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c subset.c -o subset.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c transpose.c -o transpose.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c uniqlist.c -o uniqlist.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c vecseq.c -o vecseq.o
/usr/local/opt/llvm/bin/clang -fopenmp -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include -fopenmp -fPIC -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c wrappers.c -o wrappers.o
/usr/local/opt/llvm/bin/clang -fopenmp -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/opt/gettext/lib -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib -o data.table.so assign.o between.o bmerge.o chmatch.o dogroups.o fastmean.o fcast.o fmelt.o forder.o frank.o fread.o freadR.o fsort.o fwrite.o fwriteR.o gsumm.o ijoin.o init.o inrange.o openmp-utils.o quickselect.o rbindlist.o reorder.o shift.o subset.o transpose.o uniqlist.o vecseq.o wrappers.o -fopenmp -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
mv data.table.so datatable.so
if [ "" != "Windows_NT" ] && [ `uname -s` = 'Darwin' ]; then install_name_tool -id datatable.so datatable.so; fi
installing to /Library/Frameworks/R.framework/Versions/3.4/Resources/library/data.table/libs
** R
** inst
** byte-compile and prepare package for lazy loading
session** help
In*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (data.table)
The downloaded source packages are in
‘/private/var/folders/48/q6ltldjs251000_wvjrdy_vm0000gn/T/RtmpmAMLnD/downloaded_packages’
> library(parallel)
> library(data.table)
data.table 1.10.5 IN DEVELOPMENT built 2017-10-19 19:32:41 UTC; travis
The fastest way to learn (by data.table authors): https://www.datacamp.com/courses/data-analysis-the-data-table-way
Documentation: ?data.table, example(data.table) and browseVignettes("data.table")
Release notes, videos and slides: http://r-datatable.com
> sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8
attached base packages:
[1] parallel stats graphics utils datasets grDevices methods
[8] base
other attached packages:
[1] data.table_1.10.5 testthat_1.0.2 devtools_1.13.3
loaded via a namespace (and not attached):
[1] compiler_3.4.2 magrittr_1.5 R6_2.2.2 tools_3.4.2 withr_2.0.0
[6] crayon_1.3.4 memoise_1.1.0 digest_0.6.12
> mclapply(1:2, sqrt)
[[1]]
[1] 1
[[2]]
[1] 1.414214
Merci beaucoup @joethorley! Soumis au 1.10.4-3 au CRAN et tout va bien, il faudra quelques jours pour que la magie du CRAN fasse son oeuvre.
Changements dans v1.10.4-3 (sur CRAN 20 octobre 2017)
- Correction d'un crash/blocage sur MacOS lorsque
parallel::mclapply
est utilisé et que data.table est simplement chargé, #2418 . Curieusement, tous les tests, y compris le test 1705 (qui testemclapply
avec data.table) ont bien réussi sur CRAN. Il semble que ce soit certaines versions de MacOS ou certaines versions de bibliothèques sur MacOS, peut-être. Un grand merci à Martin Morgan pour avoir signalé et confirmé que ce correctif fonctionne. Merci également à asenabouth, Joe Thorley et Danton Noriega pour les tests, le débogage et la confirmation que le parallélisme automatique dans data.table (tel quefwrite
) fonctionne bien même sur ces installations MacOS. Voir également les actualités ci-dessous pour 1.10.4-1 et 1.10.4-2.
Fermeture pour le moment. Veuillez rouvrir ou ouvrir un nouveau problème s'il y a un problème avec 1.10.4-3.
@mattdowle : il semble que la v1.10.4-2 soit toujours la version distribuée par CRAN. La v1.10.4-3 attend-elle toujours dans la file d'attente de soumission du CRAN, ou quelque chose d'autre s'est-il mal passé ?
(merci d'avoir trouvé une solution de contournement à ce problème si rapidement ; il semble malheureusement affecter un grand nombre d'utilisateurs sur macOS)
@kevinushey Oui 1.10.4-3 attendait dans la file d'attente (dans le statut 'recheck' dont je ne sais pas ce que cela signifie, pendant 6 jours). J'ai envoyé un e-mail à CRAN et il est maintenant disponible pour CRAN.
peut-être que je fais quelque chose de mal mais j'ai toujours le problème sur mon mac.
> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] fr_FR.UTF-8/fr_FR.UTF-8/fr_FR.UTF-8/C/fr_FR.UTF-8/fr_FR.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] httr_1.3.1 compiler_3.4.1 R6_2.2.2 tools_3.4.1 withr_2.0.0 curl_3.0
[7] yaml_2.1.14 memoise_1.1.0 knitr_1.17 git2r_0.19.0 digest_0.6.12 devtools_1.13.3
Lors de l'installation de la version cran à partir des sources, j'obtiens :
> install.packages("data.table", type = "source", repos = "https://cran.rstudio.com")
essai de l'URL 'https://cran.rstudio.com/src/contrib/data.table_1.10.4-3.tar.gz'
Content type 'application/x-gzip' length 3071833 bytes (2.9 MB)
==================================================
downloaded 2.9 MB
* installing *source* package ‘data.table’ ...
** package ‘data.table’ correctement décompressé et sommes MD5 vérifiées
** libs
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -fopenmp -fPIC -Wall -g -O2 -c assign.c -o assign.o
clang: error: unsupported option '-fopenmp'
make: *** [assign.o] Error 1
ERROR: compilation failed for package ‘data.table’
* removing ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/data.table’
* restoring previous ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/data.table’
Les packages source téléchargés sont dans
‘/private/var/folders/51/6jygptvs3bb4njv0t6x7br900000gn/T/Rtmp8NJ0di/downloaded_packages’
Warning message:
In install.packages("data.table", type = "source", repos = "https://cran.rstudio.com") :
l'installation du package ‘data.table’ a eu un statut de sortie non nul
Je peux fournir plus de détails si nécessaire.
@davidgohel : Veuillez consulter ce guide pour installer la chaîne d'outils R LLVM localement. http://thecoatlessprofessor.com/programming/openmp-in-r-on-os-x/
Alternativement, je recommanderais de modifier le fichier à R.home("etc/Makeconf")
et de supprimer simplement toute instance de -fopenmp
que vous y voyez, afin que la compilation n'essaie pas d'utiliser OpenMP avec la chaîne d'outils du système Apple.
@kevinushey OK, je vais essayer avec la solution alternative. Je pense que j'ai foiré quelque chose avec la première solution.
L'ajout de ceci à mon fichier ~/.R/Makevars
a fonctionné pour compiler data.table sans OpenMP sur High Sierra :
# Suppress `-fopenmp` in R.home("etc/Makeconf")
# MAIN_LDFLAGS = -fopenmp
# SHLIB_OPENMP_CFLAGS = -fopenmp
# SHLIB_OPENMP_CXXFLAGS = -fopenmp
# SHLIB_OPENMP_FCFLAGS = -fopenmp
# SHLIB_OPENMP_FFLAGS = -fopenmp
MAIN_LDFLAGS =
SHLIB_OPENMP_CFLAGS =
SHLIB_OPENMP_CXXFLAGS =
SHLIB_OPENMP_FCFLAGS =
SHLIB_OPENMP_FFLAGS =
@mjsteinbaugh @kevinushey merci, ça a marché
J'ai essayé de modifier le fichier à R.home("etc/Makeconf")
mais je ne suis pas autorisé à le modifier. Je ne semble pas non plus avoir de fichier appelé ~/.R/Makevars
. D'autres suggestions :) Merci
@ValeriVoev Le fichier à ~/.R/Makevars
n'existe normalement pas ; vous devrez le créer vous-même. (C'est-à-dire, créez un dossier appelé .R
dans votre répertoire personnel, puis créez un fichier Makevars
dans ce dossier)
Merci @kevinushey - J'ai finalement réussi à le faire fonctionner, j'ai installé data.table
1.10.4-3 et R Studio ne plante plus. J'ai également installé clang - je ne sais pas si cela a également aidé ou non.
Je vois toujours cette erreur au hasard
Assertion failure at kmp_runtime.cpp(6480): __kmp_thread_pool == __null.
OMP: Error #13: Assertion failure at kmp_runtime.cpp(6480).
OMP: Hint: Please submit a bug report with this message, compile and run commands used, and machine configuration info including native compiler and operating system versions. Faster response will be obtained by including all program sources. For information on submitting this issue, please see http://www.intel.com/software/products/support/.
Et l'affaire est vraiment délicate.
mclapply(1:2, sqrt)
au début de la vignette, tricoter la vignette n'aura plus l'erreur !Tout cela semblait être lié aux changements de l'environnement. Malheureusement, je n'ai pas d'exemple reproductible simple maintenant. Mon code est assez complexe et implique beaucoup d'autres choses.
Comme dracodoc, faites attraper le (6480) au hasard. macOS 10.13.3, R 3.4.3, data.table 1.10.4-3. Tout simplement R ici et un code trop complexe à reproduire.
De simples mclapply au début du code fonctionnent et font parfois fonctionner le reste du code également. Dans mon cas, ajouter mclapply(1:2, sqrt)
ne ferait pas l'affaire, mais exécuter un nombre apparemment aléatoire d'essais le ferait (démarrez maintenant le code avec for (i in 1:10) mclapply(1:10000000, sqrt)
).
EDIT : Hélas, l'exécution ne semble pas stable, et bien que mcmapply démarre, il se bloque après un certain temps.
Je viens de voir ces autres commentaires. Veuillez soit essayer dev 1.10.5 ou attendre la prochaine version du CRAN (espérons-le bientôt). Si le problème persiste après cela, veuillez soulever un nouveau problème.
Je vois toujours le même problème avec dev 1.10.5. Nouveau problème créé.
Commentaire le plus utile
@davidgohel : Veuillez consulter ce guide pour installer la chaîne d'outils R LLVM localement. http://thecoatlessprofessor.com/programming/openmp-in-r-on-os-x/
Alternativement, je recommanderais de modifier le fichier à
R.home("etc/Makeconf")
et de supprimer simplement toute instance de-fopenmp
que vous y voyez, afin que la compilation n'essaie pas d'utiliser OpenMP avec la chaîne d'outils du système Apple.