Data.table: Menggunakan gcc di macOS sebagai kompiler default?

Dibuat pada 31 Okt 2019  ·  5Komentar  ·  Sumber: Rdatatable/data.table

Setelah membaca dan mencoba instruksi kompiler untuk macOS, saya bertanya-tanya apakah gcc dari homebrew akan menjadi alternatif yang lebih baik daripada llvm .

Seperti yang dinyatakan di wiki, kompiler yang mendukung openmp menyebabkan masalah dengan paket lain. Cukup merepotkan untuk mengomentari compiler llvm setiap saat jika seseorang ingin mengkompilasi paket lain.

Saat ini saya menggunakan penyiapan berikut dengan gcc diinstal melalui brew install gcc . Sejauh ini tidak ada masalah untuk paket apa pun.

CXX_STD = CXX14

CC=ccache /usr/local/bin/gcc-9
CC11=ccache /usr/local/bin/gcc-9
CC14=ccache /usr/local/bin/gcc-9
CXX=ccache /usr/local/bin/g++-9
CXX11=ccache /usr/local/bin/g++-9
CXX14=ccache /usr/local/bin/g++-9
## -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

Selain itu, saya menggunakan ccache seperti yang Anda lihat. Dikombinasikan dengan pengaturan ~/.ccache/ccache.conf bawah ini, saya memiliki pengaturan kompiler C yang kuat yang mendukung caching.

max_size = 5.0G
# important for R CMD INSTALL *.tar.gz as tarballs are expanded freshly -> fresh ctime
sloppiness = include_file_ctime
# also important as the (temp.) directory name will differ
hash_dir = false

(Bagian ccache diambil dari kiriman ini oleh Dirk.)

install platform-specific question

Komentar yang paling membantu

Saya menggunakan pendekatan yang disarankan di https://github.com/rmacoslib/r-macos-rtools . Saya menggunakan clang7 yang disediakan di https://cloud.r-project.org/bin/macosx/tools dan hanya perlu menentukan yang berikut di ~/.R/Makevars :

CC=/usr/local/clang7/bin/clang
CXX=/usr/local/clang7/bin/clang++
CXX1X=/usr/local/clang7/bin/clang++
CXX11=/usr/local/clang7/bin/clang++
CXX14=/usr/local/clang7/bin/clang++
CXX17=/usr/local/clang7/bin/clang++
LDFLAGS=-L/usr/local/clang7/lib

Dan semuanya bekerja dengan lancar dan konsisten.

Saya tidak yakin mengapa instruksi macOS terlihat begitu rumit, yang dengan mudah akan membuat pengguna pemula yang menggunakan macOS mengalami kesulitan bahkan menginstal data.table dari sumber.

Semua 5 komentar

Saya menggunakan pendekatan yang disarankan di https://github.com/rmacoslib/r-macos-rtools . Saya menggunakan clang7 yang disediakan di https://cloud.r-project.org/bin/macosx/tools dan hanya perlu menentukan yang berikut di ~/.R/Makevars :

CC=/usr/local/clang7/bin/clang
CXX=/usr/local/clang7/bin/clang++
CXX1X=/usr/local/clang7/bin/clang++
CXX11=/usr/local/clang7/bin/clang++
CXX14=/usr/local/clang7/bin/clang++
CXX17=/usr/local/clang7/bin/clang++
LDFLAGS=-L/usr/local/clang7/lib

Dan semuanya bekerja dengan lancar dan konsisten.

Saya tidak yakin mengapa instruksi macOS terlihat begitu rumit, yang dengan mudah akan membuat pengguna pemula yang menggunakan macOS mengalami kesulitan bahkan menginstal data.table dari sumber.

Bagi saya, pendekatan gcc adalah yang tercepat dan paling stabil sejauh ini.
Saya tidak yakin apa peringatan lain yang mungkin diperkenalkan pada macOS. 🤔

@jangorecki Siapa yang bertanggung jawab untuk bagian terkait C di {data.table} atau mungkin memiliki pengetahuan yang lebih mendalam tentang apa yang terjadi di balik layar?

gcc adalah kompiler yang digunakan pada semua distro Linux utama, adakah yang mencegahnya untuk mengaturnya sebagai default pada macOS?

Tidak ada satu orang pun yang bertanggung jawab atas bagian C dari DT. Matt dan Arun menulis sebagian besar materi C. AFAIR @arunsrinivasan ada di macOS jadi pandangannya tentang masalah ini bisa sangat membantu.

Saya lebih suka menggunakan gcc sendiri, tetapi kebetulan clang adalah yang default di MacOS. Mencoba mengubah kompiler default secara global untuk pengguna Mac akan menyebabkan lebih banyak masalah daripada penyelesaiannya. Jadi saya tidak berpikir mengubah default adalah cara yang harus dilakukan.
Sekarang https://github.com/Rdatatable/data.table/pull/4735 digabungkan (dan sudah dipublikasikan ke CRAN sebagai 1.13.2), pengguna seharusnya dapat lebih mudah menyesuaikan build data.table mereka. Oleh karena itu, ini harus menangani kasus penggunaan Anda. Jika tidak, beri tahu kami.

Hai @ pat-s. Terima kasih atas masukan Anda di sini. Saya hanya akan menambahkan bahwa jika instruksi MacOS di halaman Instalasi kami dapat disederhanakan, itu akan sangat disambut baik. Silakan lanjutkan dan ubah sendiri langsung ke wiki. Tidak ada izin yang diperlukan untuk mengubah wiki, itulah alasan kami menjadikannya wiki.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat