Üniversitemde bilgisayar kümemi kullanırken yerel makinemde yeniden oluşturamayacağım bir matris hatası yaşıyorum. Matris kütüphanelerinin (BLAS, LAPACK, ATLAS, vb.) Bir farkından kaynaklanmış olabileceğini düşünüyorum. Bu kütüphaneler hakkında here'u okuduğumdan başka bir şey bilmiyorum, ama sanırım R'nin hangi matris kitaplıklarının yüklü olduğunu (yani, hangisini kullandığını) söylemesini sağlamanın bir yolu olmalı. R paketlerinin hangi sürümünü kullandığını söylemek için sessionInfo() öğesine tıklayın.R yüklememin hangi matris kitaplıklarını kullandığını nasıl belirleyebilirim?
cevap
, belki de (kabuk komutları yararlanmak ör öyle dosyanın türünü görmek
(rpath <- Sys.which("R"))
# R
# "/usr/bin/R"
ldd
çalışacaktır emin olmak için:
file
ve
ldd
) küme üzerinde yeniden inşa R ne de root erişimi gerektirmeden bazı ipuçları elde etmek 210
system2("file", rpath)
# /usr/bin/R: Bourne-Again shell script, ASCII text executable
Sizinki gerçek bir yürütülebilir dosyayı (örneğin, ELF 64-bit LSB executable, x86-64, ...
) gösterirse, bu adımı atlayın.
script <- readLines(rpath)
script[grepl("/bin/", script)]
# [1] "#!/bin/bash"
# [2] " if [ -x \"/usr/${libnn}/R/bin/exec/R\" ]; then"
# [3] " elif [ -x \"/usr/${libnn_fallback}/R/bin/exec/R\" ]; then"
# [4] "## some systems have a more portable sed, e.g. /usr/xpg4/bin/sed on Solaris,"
# [5] "SED=/bin/sed"
# [6] " exec sh \"${R_HOME}/bin/Rcmd\" \"${@}\" ;;"
# [7] "R_binary=\"${R_HOME}/bin/exec${R_ARCH}/R\""
Bu gerçek yürütülebilir /usr/lib/R/bin/exec/R
(veya /usr/lib64/...
) olduğunu söylüyor. Bazı çıkarımlar alıyor, ama bu bir adım. Bu ubuntu üzerinde R-3.3.2 ile benim için çalışıyor, bu yüzden sadece farklı işletim sistemleri üzerinde benzer olacağını varsayabilirim. Bu sorunlu ise, aynı zamanda "/lib"
veya "/exec"
için grep (veya diğer komut dosyaları için tüm komut dosyasını inceleyin).Eğer komut dosyası tarafından çağrılan yolunu öğrendikten sonra (ya da başlamak için bir komut dosyası değilse)
, paylaşılan kütüphane bağımlılıklarını bulmak:
system2("ldd", "/usr/lib/R/bin/exec/R")
# linux-vdso.so.1 => (0x00007ffcfadcd000)
# libR.so => /usr/lib/R/lib/libR.so (0x00007f746f615000)
# libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f746f3eb000)
# libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f746f025000)
# libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f746eda8000)
# libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f746eaa2000)
# libreadline.so.6 => /lib/x86_64-linux-gnu/libreadline.so.6 (0x00007f746e85b000)
# libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f746e61d000)
# liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f746e3fb000)
# libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f746e1ea000)
# libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f746dfd1000)
# librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f746ddc9000)
# libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f746dbc4000)
# libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f746d9b5000)
# /lib64/ld-linux-x86-64.so.2 (0x0000560abd5fa000)
# libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f746d78b000)
Bu çıkışın 5 R hattı olduğunu göstermektedir BLAS kütüphanesini kullanarak, özellikle libblas3
.
Bildiğim kadarıyla farkındayım olarak size BLAS sürümünü verecektir (baz Ar özellikle verilmez) belirli bir işlev yoktur yeterince googling ?: http://www.stat.cmu.edu/~nmv/2013/07/09/for-faster-r-use-openblas-instead-better-than-atlas-trivial-to-switch-to-on-ubuntu/
Cevabınız için teşekkür ederiz. Bu makaleyi okuduğumdan, farklı matris kitaplıkları ile R'nin nasıl oluşturulacağı hakkında bilgi sağlar, ancak varolan bir derlemede hangi matris kitaplığının kullanıldığını bulmama yardımcı olmaz. – rcorty
biraz midir. R, muhtemelen sisteminizle birlikte gelen standart kütüphaneyi kullanacaktır (eğer birisi onu belirli bir BLAS versiyonuna sahip bir kaynaktan oluşturmamışsa).
Sen terminalden yapmak zorunda kalacaktı tip
locate libblas.so
Muhtemelen /usr/lib/libblas.so
veya /usr/lib64/libblas.so
içinde olacak ve konumu muhtemelen sembolik bağdır. Farklı bir BLAS kütüphaneye işaret sembolik bağlantılarını değiştirmek istiyorsanız Yani bağlantıları
ls -l /usr/lib/libblas.so
izleyin
update-alternatives --config libblas.so.3gf
yapmak ve kullanmak istediğiniz sürümü seçebilirsiniz. Bu mesaj daha detaylı olarak çok güzel bunu açıklıyor:
https://www.r-bloggers.com/for-faster-r-use-openblas-instead-better-than-atlas-trivial-to-switch-to-on-ubuntu/
kesinlikle istediğiniz BLAS ne olursa olsun uygulama yüklemek olacaktır, kullandığınız hangi sürümü bilmek için başka bir yol - örneğin OpenBLAS için, ve sonra standart R BLAS kütüphane yerine yeni kütüphanenize bir link. Burada açıklandığı gibi, --with-shared-blas
seçeneğiyle R yüklemek için emin olun: https://cran.r-project.org/doc/manuals/r-release/R-admin.html#BLAS Sonra sadece ihtiyacımız: Bunun için açık bir Ar işlevi olmayabilir rağmen
# navigate to your R directory
cd …/path-to-R-installation/lib/R/lib
# backup the original
mv libRblas.so libRblas.backup
# create simlink
ln –s …/path-to-new-0blas-library/new-lib.so libRblas.so
Güzel açıklama. Ayrıca, Blas'ın gerçekten problemin sebebi olup olmadığını keşfetmek için bunu kullanabileceğini tahmin ediyorum. Bir dizi Blas kütüphanesi kurarak ve hatayı yineleyip eşlemediğini görmek için tek tek test etmek için sembolik bağlantıyı güncelleyerek. – dww
Cevabınız için teşekkür ederiz. Özellikle, bir makineyi paylaştığım bir kişinin, belirli bir matris matematik kitaplığına sahip R kaynağını oluşturduğu durumla özellikle ilgileniyorum. ATLAS, BLAS, OpenBLAS, vb. Soruma yeterince açık olmasaydım özür dilerim. Ne yaptığını anlayabiliyorsam merak ediyorum. – rcorty
- 1. Bir sitenin hangi çatıyı kullandığını nasıl anlıyorsunuz?
- 2. Hangi Visual Studio Çözümlerinin hangi Projeleri kullandığını nasıl haritalandırabilirim?
- 3. R seçme matris
- 4. R: seyrek matris dönüşümü
- 5. Hangi radyo düğmesinin kabul edildiğini nasıl belirleyebilirim?
- 6. R resim() grafik matris döndürülmüş?
- 7. R - Bir koşula göre matris grubunun gruplandırılması
- 8. R uzantısı, ayar matris sıra/sütun adları
- 9. Selenium 2 Grid - Testinizin hangi düğümü kullandığını bilmek
- 10. Birisi bana bu kodun hangi teknolojiyi kullandığını söyleyebilir mi?
- 11. Hangi javascript altyapısının, gergedan veya nashorn kodumu çalıştırdığını nasıl belirleyebilirim?
- 12. MS Access veritabanımda hangi kodlama sisteminin kullanıldığını nasıl belirleyebilirim
- 13. Perl kitaplıklarını PHP'den nasıl kullanabilirim?
- 14. sklearn matris ayrıştırma örneği
- 15. Müşterilerin Kakao uygulamamı nasıl kullandığını nasıl sınayabilirim?
- 16. Java Maven'in hangi sürümünü kullanmak için kullandığını nasıl anlarım ve nasıl değiştiririm?
- 17. Uyumluluk modu açıkken doğru tarayıcı sürümünü nasıl belirleyebilirim
- 18. Matris
- 19. Cihazın açısını nasıl belirleyebilirim?
- 20. Web servisimi kimin kullandığını nasıl görebilirim
- 21. 7zip'in AES256'yı kullandığını nasıl bilebilirim?
- 22. Matris için sütun nasıl?
- 23. Bir veritabanının Postgres olduğunu ve SQL'in hangi sürümünü kullandığını nasıl doğrulayabilirim?
- 24. R - matris mizanpajını kullanarak birden fazla raster çizme
- 25. Caret'te hangi modeller X için seyrek bir matris kullanabilir?
- 26. Matris kullanılarak Quaternion to Matris
- 27. Android Studio'da yerel C kitaplıklarını nasıl kullanırım?
- 28. Samsung, Samsung akıllı TV'nin ne kullandığını?
- 29. R, yüksek boyutlu bir diziden alt matris dizisini seç
- 30. Matris satırlarının R vektörüne eşit olup olmadığını kontrol edin,
Kapsamlı ve ayrıntılı cevabınız için teşekkür ederiz. Asla kendi başıma düşünemezdim. R'nin "R --version" gibi bir "benim hakkım" fonksiyonuna sahip olmaması, ama belki de "R - buildoptiyonlar" olarak adlandırılabilmesi utanç verici. – rcorty