Data.table: data.tableをロードすると、MacOSでmclapply()がハングします

作成日 2017年10月13日  ·  39コメント  ·  ソース: Rdatatable/data.table

この問題https://github.com/Bioconductor/BiocParallel/issues/67

library(parallel)
library(data.table)
mclapply(1:2, sqrt)

ぶら下がって、

> 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
openmp

最も参考になるコメント

@davidgohel :R LLVMツールチェーンをローカルにインストールする方法については、このガイドを参照してください。 http://thecoatlessprofessor.com/programming/openmp-in-r-on-os-x/

または、 R.home("etc/Makeconf")でファイルを編集し、そこに表示されている-fopenmpのインスタンスを削除して、コンパイルでAppleシステムツールチェーンでOpenMPを使用しないようにすることをお勧めします。

全てのコメント39件

報告ありがとうございます。

1.10.4-1のNEWSのアイテム4:

data.tableがOpenMPと並列に実行された後、パッケージの「並列」フォークがIntelのOpenMPを使用してMacで改善を試みました。 そのOpenMP実装は、並列領域が終了した後もスレッドを実行したままにしているように見えます。 それでもこの修正が機能しない場合は、問題を修正することが報告されているlibrary(data.table)の直後にsetDTthreads(1)を呼び出します。

開発では、同じアイテムを改善しましたが、ニュースアイテムがCRANパッチに変更されることをバックポートすることを怠りました。 開発ニュースファイルから:

Macで改善を試みた-並列パッケージも使用されている場合のみ(フォーク)、#2137。 IntelのOpenMP実装は、GNU libgompとは異なり、OpenMP並列領域(data.table内)が終了した後もスレッドを実行したままにするようです。 したがって、data.tableがすでに並列で実行された後にユーザーが並列のフォークを呼び出すと、不安定になります。 この問題は、CRANがIntelのOpenMPライブラリを使用して構築しているため、CRANのMacパッケージバイナリでのみ発生します。 WindowsまたはLinuxでの既知の問題はなく、並列が使用されていない場合のどのプラットフォームでも既知の問題はありません。 このMacのみの修正がまだ機能しない場合は、以前にdata.tableをシングルスレッドモードにすることで問題を修正すると報告されているlibrary(data.table)の直後にsetDTthreads(1)を呼び出します。

ただし、あなたの場合、フォークする前にdata.tableを使用したことはありません。 これは、これまでに報告されていない新しい側面です。 再現可能な例は、これらの3行が文字通り新しいRセッションで発生するすべてであるという点で厳密に正しいですか? つまり、データのロードとmclapplyの呼び出しの間にdata.tableを使用しませんか? とにかくlibrary(data.table) $の直後にsetDTthreads(1)を呼び出すこともできますが、 mclapplyの前にdata.tableが実際に使用されていない場合に役立つとは思えません。

CRAN macバイナリをインストールしましたか、それともソースからインストールしましたか? 使用しているOpenMPライブラリのこのmclapplyの問題に関して、MacOSでは重要であるように思われます。 マシンで使用されているのがIntel(libomp)またはGNU(libgomp)のOpenMP実装であるかどうかを確認できますか?

MacOSの手順を使用してソースからコンパイルできますか?それは役に立ちますか? たぶん、それはあなたのためにローカルで適切なOpenMPライブラリにリンクしている、またはそのようなものです。 一部の人々は指示に十分正確に従わなかったので、MacOSで正確に従わなければなりません。

test.data.table()はあなたのために働きますか? テスト1705はmclapplyをテストし、CRANに合格しています。 CRANはMacOSでMacバイナリをテストすると思いますが、別のビルドをテストする可能性があります。

1.10.4-2のNEWSのアイテム1は関連しているとは思えませんが、完全を期すために言及します。

MacOS上のOpenMPはCRANでサポートされるようになり、Mac用のCRANのパッケージバイナリに含まれています。 ただし、コンパイル時にOpenMPが有効になっていない場合(#2409)、MacOSでソースからv1.10.4-1をインストールできませんでした。 報告してくれたLizMacfieと@fupangpangpangに感謝します。 OpenMPが有効になっていない場合の起動メッセージが更新されました。

関連する問題は次のとおりです。
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

私は基本的にMacOSに苦労しています。 アップルやインテルから製品をサポートできる人がいれば、それは素晴らしいことです。 それが実際にdata.tableの問題であるかどうかを確認するのに苦労しています。 私はそれを回避し、NEWSに文書化するために考えられるすべてのことを試みました。 ヘルプと提案は大歓迎です。

はい、シンプルなスクリプト

library(parallel)
library(data.table)
mclapply(1:2, sqrt)

これはBioconductorビルドマシンにあります。 これは単純なバイナリインストールだと思いますが、確認します。 我々は持っています

$ 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

$ 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)

したがって、おそらくlibompにリンクしています。

test.data.table()は言う

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

これをありがとう。 はい、これらの__kmp_*呼び出しは、Intel OpenMPランタイムに固有のものであり、以前に報告されたことがあります。 テスト1705は特にそれをテストしています。 data.table自体の中で2つのOpenMPスレッドを利用し、続いてparallel::mclapplyを呼び出します。 __kmp_エラーは、iiuc、Intelの実装では、すべての並列領域が終了した後でもスレッドが実行されたままになるため、後続のフォークが不安定になるためです。 この場合、クラッシュしなかったように見えますが、それは幸運です。 1.10.4-2でその出力が表示されているという事実は、私の試みた回避策が機能しなかったことを意味します。 プレフォークコールバックがあり、Intelライブラリがフォークの前に実行中のスレッドをクリアすることを期待してomp_set_num_threads(1)を呼び出すようになりました。 しかし、そうではないようです。 したがって、動作することが報告されているものが残っています。つまり、 library(data.table) $の直後にsetDTthreads(1)を呼び出して、IntelのOpenMPが最初にスレッドを作成するのを停止します。

たった3行でハングアップしていますが、IntelのOpenMPライブラリがリンクまたは初期化されたときにスレッドを作成する可能性はありますか? もしそうなら、それはそれを説明するかもしれません。 そうでなければ、私はそれで途方に暮れています。

さらに、 clanggccのOpenMP機能が3つのOpenMPライブラリ( libomplibiomplibgomp )とどのように関連しているかわかりません。 libompがあるようです。 しかし、CRANはlibiompでコンパイルされると思いますか? 多分それはそれと関係があります。 また、ある人は(ここで)「llvmをgccに変更する」ことで、MacOSでのクラッシュが停止したと報告していますが、ソースからコンパイルしていました。

IntelOpenMPランタイムのソースコードに出くわしました。 Intelのライブラリはクローズドソースだと思っていたので、このプロジェクトが何であるかわかりません。 しかし、それに対してコンパイルしてデバッグすることは可能かもしれません。 https://www.openmprtl.org/おそらく、最初にローカルでコンパイルしてそれが機能するかどうかを確認するか、GNUライブラリを使用する方が簡単です。

テスト1705はCRANを通過しているので、CRANマシンとお使いのマシンの違いを見つけることで、おそらく期待できます。 テスト1705は実際にはあなたとCRANに合格していますが、 libompはアサーションエラーをコンソールに出力しており、テストで検出されません。 どういうわけかCRANログを見て、それらの__kmpメッセージがCRANのログにもあるかどうかを確認することは可能でしょうか。 メッセージがCRANのログに存在しない場合は、CRANマシンとご使用のマシンの違いを調べる価値があるかもしれません。

たぶんこれはCRANパッケージバイナリで必要です:http: //macappstore.org/libiomp/
または、おそらくlibiompはCRANによってパッケージバイナリに静的にコンパイルされますか? ?install.packagesの「バイナリパッケージ」セクションはMacOSにとって非常に複雑であり、 type=引数にはいくつかのバイナリオプションがあることに気づきました。

Intelのライブラリは印刷中です:

OMP:エラー#13:kmp_runtime.cpp(6480)でのアサーションの失敗
OMP:ヒント:このメッセージ、使用したコマンドのコンパイルと実行、およびネイティブコンパイラとオペレーティングシステムのバージョンを含むマシン構成情報を含むバグレポートを送信してください。 すべてのプログラムソースを含めることで、より高速な応答が得られます。 この問題の提出については、 http://www.intel.com/software/products/support/を参照してください。

MacOSで問題を抱えている人は、Intelに問題を報告できますか?

こんにちは。BiocParallelリポジトリの関数を使用しているときに問題が発生したため、最初にその問題を報告しました。 彼らは、data.tableがロードされている間にmclapplyが呼び出されるように問題を絞り込みました。

ここの指示に従って最新バージョンのdata.tableをMacOSにインストールしましたが、それでも問題が発生しました。

興味深いことに、同僚は自分のMacに最新バージョンのdata.tableをインストールしていて、問題はありませんでした。 しかし、彼は自分のシステムにOpenMPをインストールしていませんでした。

data.table 1.10.2にロールバックすることで、問題を修正できました。

@asenabouthインテルにサポートリクエストをお願いできますか(上記の私のコメントを参照)? 彼らのライブラリに問題があるようです。 あるいは、Appleの誰かが助けてくれるかもしれません。 あなたは彼らのサポートをまったく得ることができますか? ソースからインストールしても解決しないとは思いません。 コマンドと出力を見せてください。 ソースからコンパイルしてCRANバイナリを回避した後でも、data.table 1.10.4がロードされた後、他の誰かがparallel::mclapplyを使用できませんか?

インテルにサポートリクエストを提出します。

ソースからのインストールに関しては、インストールとその後のテストは次のとおりです。
`` `{r}
[以前に保存されたワークスペースが復元されました]

remove.packages( "data.table")
'/Users/a.senabouth/Library/R/3.4/library'からパッケージを削除しています
( 'lib'は指定されていないため)
install.packages( "data.table"、type = "source"、

コンテンツタイプ 'application / gzip'長さ3312731バイト(3.2 MB)

ダウンロード3.2MB

  • ソースパッケージ 'data.table'をインストールしています..。
    *ライブラリ/ 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 -cassign.c -oassign.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 -cwrappers.c-owrappers.o/ usr / local / opt / llvm / bin / clang -fopenmp -dynamiclib -Wl、-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_definedsuppress -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.soassign.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.owrappers.o -fopenmp -F / Library / Frameworks / R.framework / .. -framework R -Wl、 -フレームワーク-Wl、CoreFoundationmv data.table.so datatable.soif [""!= "Windows_NT"] && [ uname -s = 'ダーウィン']; fi/Users/a.senabouth/Library/R/3.4/library/data.table/libsにインストールします* R
    * inst*バイトコンパイルして遅延読み込み用のパッケージを準備します
    * ヘルプ**ヘルプインデックスのインストール
    *パッケージインデックスの作成*ビネットのインストール
    **インストールされたパッケージをロードできるかどうかのテスト
  • 完了(data.table)

ダウンロードされたソースパッケージは
'/ private / var / folder / zz / zyxvpxvq6csfxvn_n0001lp0000cxh / T / Rtmpl7TqS4 / downloaded_pa​​ckages'

R
エラー:オブジェクト 'R'が見つかりません
ライブラリ(並列)
ライブラリ(data.table)
data.table 1.10.5 INDEVELOPMENTビルド2017-10-1607:29:07 UTC; トラヴィス
学習する最速の方法(data.table作成者による): https ://www.datacamp.com/courses/data-analysis-the-data-table-way
ドキュメント:?data.table、example(data.table)、browseVignettes( "data.table")
リリースノート、ビデオ、スライド:http: //r-datatable.com
mclapply(1:2、sqrt)

*違法な操作をキャッチ*
アドレス0x7fffa9730ae4、「違法なオペコード」を引き起こします

トレースバック:
1:mcfork()
2:FUN(X [[i]]、...)
3:lapply(seq_len(cores)、inner.do)
4:mclapply(1:2、sqrt)

可能なアクション:
1:中止(有効になっている場合はコアダンプを使用)
2:通常のR出口
3:ワークスペースを保存せずにRを終了します
4:R保存ワークスペースを終了します

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

編集
ソースから1.10.4をインストールすることで動作するようになりました。
`` `{r}

require(devtools)
必要なパッケージのロード:devtools
install_version( "data.table"、version = "1.10.4"、repos = "http://cran.us.r-project.org")
URLからパッケージをダウンロードする:http: //cran.us.r-project.org/src/contrib/Archive/data.table/data.table_1.10.4.tar.gz
data.tableのインストール
'/Library/Frameworks/R.framework/Resources/bin/R' --no-site-file --no-environ
--no-save --no-restore --quiet CMD INSTALL
'/private/var/folders/zz/zyxvpxvq6csfxvn_n0001lp0000cxh/T/RtmpXDSgR8/devtoolsdf05280c79d9/data.table'
--library = '/ Users / a.senabouth / Library / R / 3.4 / library' --install-tests

  • ソースパッケージ 'data.table'をインストールしています..。
    *パッケージ 'data.table'が正常に解凍され、MD5の合計がチェックされました*ライブラリ
    / 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 -cassign.c -oassign.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 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 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 -cwrappers.c-owrappers.o
    / usr / local / opt / llvm / bin / clang -fopenmp -dynamiclib -Wl、-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_definedsuppress -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.soassign.o between.o bmerge.o chmatch .o dogroups.o fastmean.o fcast.o fmelt.o forder.o frank.o fread.o fsort.o fwrite.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.owrappers.o -fopenmp -F / Library / Frameworks / R.framework / .. -framework R -Wl、-framework -Wl、CoreFoundation
    mv data.table.so datatable.so
    if [""!= "Windows_NT"] && [ uname -s = 'ダーウィン']; 次に、install_name_tool -id datatable.so datatable.so; fi
    /Users/a.senabouth/Library/R/3.4/library/data.table/libsにインストールします
    * R* inst
    *テスト*バイトコンパイルして遅延読み込み用のパッケージを準備します
    * ヘルプ**ヘルプインデックスのインストール
    *パッケージインデックスの作成*ビネットのインストール
    **インストールされたパッケージをロードできるかどうかのテスト
  • 完了(data.table)
    >ライブラリ(data.table)
    data.table 1.10.4
    学習する最速の方法(data.table作成者による):https://www.datacamp.com/courses/data-analysis-the-data-table-way
    ドキュメント:?data.table、example(data.table)、browseVignettes( "data.table")
    リリースノート、ビデオ、スライド:http://r-datatable.com
    >ライブラリ(並列)
    > mclapply(1:2、sqrt)
    [[1]]
    [1] 1

[[2]]
[1] 1.414214
`` `

次のhttps://software.intel.com/en-us/forums/intel-c-compiler/topic/746943を投稿しました

それはおそらく間違った場所にあり、私はおそらく炎上するでしょうが、うまくいけばそれはボールを転がすでしょう。

@mattdowle追加/実行してほしいことがあるかどうか教えてください

@asenabouthと同じエラーを再現し、ソースから1.10.4を再インストールすると問題が修正されたことを確認したかった。

sessionInfo:

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 

私のマシンにいくつかの詳細を記録するだけです

library(parallel)
library(data.table)
mclapply(1:2, sqrt)

を生成します

 *** caught illegal operation ***
address 0x7fffb500eae4, cause 'illegal opcode'

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

興味深いことに、

> 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 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

これが関連しているかどうかを確認します

https://github.com/Rdatatable/data.table/wiki/Installationの指示にも従いましたが、問題は引き続き発生します。

編集:
mclapplyillegal operationの元の問題(コンパイラエラーunsupported option '-fopenmp'ではありません-指示に従うことで修正されました)

みんなありがとう。 1.10.4は正常に機能しているように見えますが、1.10.4-2は機能していないのは興味深いことです。 フォークが呼び出されるとすぐにクラッシュするようです。 NEWSで私が言及した試みはその分野でした。

まず、何が変わらなかったか。 data.tableをロードすると、 init.copenmp-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
}

したがって、 parallel::mclapplyがそのfork() $を呼び出すと、 when_fork関数が実行されます。 1.10.4-2では次のようになります。

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;
}

以前(1.10.4)は、 omp_set_num_threads(1)を呼び出すために使用されておらず、静的変数DTthreadsを設定するだけでした。

void when_fork() {    # v 1.10.4
  DTthreads = 1;
}

私が考えることができるのは、 omp_set_num_threads(1)への呼び出しがそれをクラッシュさせているということだけです。 しかし、これはOpenMPで呼び出すことができる最も単純な関数です。 おそらく、それはどういうわけか、ライブラリに適切にバインドされていませんか?

  1. parallel::mclapplyを呼び出すときにクラッシュを再現できる人にとって、パッケージparallelをロードしなくても、新しいセッションで単純なfwrite()問題なく機能しますか? 必要に応じて多くのCPUを使用していますか? テストするには大きなDTが必要になります。そうでない場合は、小さなデータに1つのスレッドを使用するだけです。 OpenMPを使用するとクラッシュする場合は、リンクに問題があります。 リンクラインのこれらのフラグが何を意味するのか誰かが知っていますか、そしてそれらはMacOSでそれと関係があるのでしょうか? : -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress

  2. devでomp_set_num_threads(1)への呼び出しを再度削除してみることができ、1.10.5で問題が発生した人は、変更後にdevを再試行できますか?

  3. 奇妙なことに、テストはMacOSのCRANでクラッシュすることなく合格しています。 parallel::mclapplyを呼び出す1705テストをテストし、すべてのテストを2つのスレッドを使用してCRANで実行します。 CRANマシンと人々が問題を抱えているマシンの違いは何ですか?

@joethorleyそれは奇妙です。 ここでMacOSの手順を実行した後でも、 unsupported option '-fopenmp'を取得します。 他の誰かがその時どのように進歩するかを提案できますか? 私は途方に暮れています。

@joethorley gettextをインストールしましたか? 私はしなかったことがわかりました。 それが完了すると、システム上でパッケージを正しくコンパイルすることができました。

@mattdowleここの指示に従った後、 unsupported option '-fopenmp'エラーは消えませんでしたが、エラーが発生しました

 *** caught illegal operation ***
address 0x7fffb500eae4, cause 'illegal opcode'

発生した。

私のMakevarsは

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

私の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 

と私の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

  1. fwrite()は私のマシンで動作しているようです
> 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 gettextをインストールしていて、指示に従うとパッケージを正しくコンパイルできました。 私の投稿は少し不明瞭だったので編集しました。

@mattdowle

  1. devでomp_set_num_threads(1)の呼び出しを削除した場合は、devを再試行します。

ソースまたはバイナリのいずれかでCRANから1.10.4.2をインストールすると、mclapplyがハングします。 github.com/Rdatatable/dataをインストールします。 ソースのtable @ masterは、元のmclapplyハングを生成しました。

現在のマスターのこの変更されたバージョンをインストールする

$ 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
インデックスd6e3b70..8c0236d100644
--- a / src / openmp-utils.c
+++ b / src / openmp-utils.c
@@ -62,7 +62,7 @@ void when_fork(){
// IntelのOpenMP実装の回避策を試みましたが、その後スレッドが実行されたままになります
//並列領域; これらはフォークするとクラッシュします。
#ifdef _OPENMP

  • omp_set_num_threads(1);
    + // omp_set_num_threads(1);
    #endif

// GNU OpenMPは、DTthreadsを1に設定するだけで問題ないようです。これにより、次の並列領域が制限されます。

clears the hang for me.

The R we use (installed as a binary from CRAN) is the 3.4.2 release

R.version
_
プラットフォームx86_64-apple-darwin15.6.0
アーチx86_64
os darwin15.6.0
システムx86_64、darwin15.6.0
状態
メジャー3
マイナー4.2
2017年
09月
28日目
svn rev 73368
言語R
version.string Rバージョン3.4.2(2017-09-28)
ニックネームショートサマー
`` `

環境変数OMP_NUM_THREADS = 2を設定しても、結果は変わりませんでした。

when_fork() omp_set_num_threads(1);をコメントアウトすると、私のマシンの問題も修正されることを確認できます

> mclapply(1:2, sqrt)
[[1]]
[1] 1

[[2]]
[1] 1.414214

みんな、ありがとう。 開発で修正を行い、合格しています。 @joethorleyあなたまたは他の誰かが最新の1.10.5が今大丈夫であることを確認しますか。 CRANに行くために1.10.4-3の準備を始めます。

@mattdowle

修正されていることを確認できます。

$ 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

@joethorleyに感謝します! 1.10.4-3にCRANに提出され、すべてが順調に進んでいるため、CRANの魔法がコースを実行するまでに数日かかります。

v1.10.4-3での変更(2017年10月20日CRAN)

  1. parallel::mclapplyが使用され、data.tableがロードされるだけの場合のMacOSでのクラッシュ/ハングを修正しました。 #2418 。 奇妙なことに、テスト1705(data.tableでmclapplyをテストする)を含むすべてのテストは、CRANで正常に合格しました。 おそらく、MacOSのいくつかのバージョンまたはMacOS上のライブラリのいくつかのバージョンのようです。 この修正が機能することを報告および確認してくれたMartinMorganに感謝します。 また、asenabouth、JoeThorleyおよびDantonNoriegaのテスト、デバッグ、およびdata.table内の自動並列処理( fwriteなど)がこれらのMacOSインストールでも正常に機能することを確認してくれたことに感謝します。 1.10.4-1および1.10.4-2については、以下のニュース項目も参照してください。

とりあえず締めくくります。 1.10.4-3に問題がある場合は、再度開くか、新しい問題を開いてください。

@mattdowle :v1.10.4-2はまだCRANによって配布されているバージョンのようです。 v1.10.4-3はまだCRAN送信キューで待機していますか、それとも他の問題が発生しましたか?

(この問題の回避策を迅速に入手していただきありがとうございます。残念ながら、macOSの多数のユーザーに影響を及ぼしているようです)

@kevinusheyはい1.10.4-3がキューで待機していました(「再チェック」ステータスで、それが何を意味するのかわかりませんが、6日間)。 CRANにメールを送信しましたが、CRANにリリースされました。

多分私は何か間違ったことをしているが、私はまだ私の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

ソースからクランバージョンをインストールすると、次のようになります。

> 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

必要に応じて詳細をお知らせします。

@davidgohel :R LLVMツールチェーンをローカルにインストールする方法については、このガイドを参照してください。 http://thecoatlessprofessor.com/programming/openmp-in-r-on-os-x/

または、 R.home("etc/Makeconf")でファイルを編集し、そこに表示されている-fopenmpのインスタンスを削除して、コンパイルでAppleシステムツールチェーンでOpenMPを使用しないようにすることをお勧めします。

@kevinushey OK、別の解決策を試してみます。 私は最初の解決策で何かを台無しにしたと思います。

これを~/.R/Makevarsファイルに追加すると、HighSierraでOpenMPを使用せずにdata.tableをコンパイルできます。

# 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ありがとう、うまくいった

R.home("etc/Makeconf")でファイルを編集しようとしましたが、編集できません。 また、 ~/.R/Makevarsというファイルがないようです。 それ以上の提案:)ありがとう

@ValeriVoev ~/.R/Makevarsのファイルは通常存在しません。 自分で作成する必要があります。 (つまり、ホームディレクトリに.Rというフォルダを作成し、そのフォルダ内にMakevarsファイルを作成します)

ありがとう@ kevinushey-私はついにそれを動作させ、 data.table 1.10.4-3をインストールし、RStudioはもうクラッシュしません。 私もclangをインストールしました-それが役に立ったかどうかはわかりません。

私はまだこのエラーをランダムに見ています

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/.

そして、ケースは本当にトリッキーです。

  1. data.table1.10.4と1.10.4-3は私にとって同じです。
  2. すべてのチャンクを実行すると問題なく実行できる並列コードを備えたビネットがあります。 ただし、そのビネットには上記のエラーが発生します。
  3. 単純な並列コードmclapply(1:2, sqrt)をビネットの先頭に配置すると、ビネットを編むときにエラーが発生しなくなります。

これはすべて環境の変化に関係しているように見えました。 残念ながら、今のところ簡単な再現可能な例はありません。 私のコードは非常に複雑で、他にもたくさんのことが含まれています。

dracodocと同様に、(6480)をランダムにキャッチします。 macOS 10.13.3、R 3.4.3、data.table1.10.4-3。 ここでは単純なRであり、コードが複雑すぎて再現できません。

コードの開始時に単純なmclapplyが機能し、コードの残りの部分も機能する場合があります。 私の場合、 mclapply(1:2, sqrt)を追加してもうまくいきませんが、一見ランダムな数の試行を実行するとうまくいきます(コードをfor (i in 1:10) mclapply(1:10000000, sqrt)で開始します)。

編集:残念ながら、実行は安定していないようです。mcmapplyは起動しますが、しばらくするとハングします。

私はこれらのさらなるコメントを見たところです。 dev 1.10.5を試すか、次のCRANリリースを待ってください(できればすぐに)。 それでも問題が解決しない場合は、新しい問題を提起してください。

dev1.10.5でも同じ問題が発生しています。 新しい問題が作成されました。

このページは役に立ちましたか?
0 / 5 - 0 評価