Data.table: [Permintaan] Uji kompatibilitas kompiler dengan `-fopenmp` sebelum menggunakan `SHLIB_OPENMP_CFLAGS`

Dibuat pada 12 Mei 2017  ·  3Komentar  ·  Sumber: Rdatatable/data.table

Ini akan memungkinkan instalasi data.table pada sistem / kompiler yang tidak mendukung openmp, bahkan jika file Makeconf situs mendefinisikan SHLIB_OPENMP_CFLAGS . Ini adalah kasus pada macOS pada R 3.4.0 dengan compiler dentang default.

Sesuatu seperti berikut ini sudah cukup, perhatikan bahwa ifeq adalah ekstensi buatan GNU, jadi perlu dicatat di DESCRIPTION Anda

``` kulit
CXX11=$(kulit "${R_HOME}"/bin/R CMD konfigurasi CXX11)
ifeq ($(shell $(CXX11) -fopenmp -E -xc++ - 2>&1 >/dev/null && echo 'true'), benar)
PKG_CFLAGS=$(SHLIB_OPENMP_CFLAGS)
PKG_LIBS=$(SHLIB_OPENMP_CFLAGS)
berakhir jika

openmp

Komentar yang paling membantu

Sekedar catatan bahwa ini masih menyebabkan masalah (misalnya yang baru ini di komunitas R), terutama setelah rilis baru ketika CRAN belum membangun biner. Sekarang setelah Anda menggunakan skrip konfigurasi (https://github.com/Rdatatable/data.table/pull/3951), mungkin ada baiknya menambahkan tes ini ke skrip konfigurasi sehingga kompilasi akan bekerja dengan rantai alat macOS asli (walaupun tanpa paralelisasi).

Semua 3 komentar

Masalah ini saat ini memblokir penggunaan data.table di Mac dengan versi pengembangan R , yang pada gilirannya memblokir sejumlah paket lain, dan pada gilirannya, pengembangan dan pembaruan paket:

> sessionInfo()
R Under development (unstable) (2017-05-26 r72742)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.5

Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets 
[6] methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0   

Sekedar catatan bahwa ini masih menyebabkan masalah (misalnya yang baru ini di komunitas R), terutama setelah rilis baru ketika CRAN belum membangun biner. Sekarang setelah Anda menggunakan skrip konfigurasi (https://github.com/Rdatatable/data.table/pull/3951), mungkin ada baiknya menambahkan tes ini ke skrip konfigurasi sehingga kompilasi akan bekerja dengan rantai alat macOS asli (walaupun tanpa paralelisasi).

@jimhester Terima kasih atas catatannya. Saya pikir itu sudah bekerja dengan kompiler tanpa openmp, dan itu diperiksa di CRAN_Release.cmd di sini: https://github.com/Rdatatable/data.table/blob/b2d618ce291a50872e10fc1ca7137faa8484005a/.dev/CRAN_Release.cmd#L183. Tapi jelas saya salah dan itu tidak cukup. Saya akan mencoba memahami apa yang Anda katakan dan sarankan.

Saya sedikit frustrasi dengan klaim dari pengguna bahwa data.table memblokir apa pun. MacOS itulah masalahnya ... mengapa tidak menyertakan openmp secara default? Semuanya bekerja dengan lancar di Linux dan Windows.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat