2012-03-12 38 views
20

Có cách nào để phát hiện phiên bản BLAS mà R đang sử dụng từ bên trong R không? Tôi đang sử dụng Ubuntu, và tôi có một vài phiên bản BLAS được cài đặt - Tôi chỉ không biết cái nào là "hoạt động" từ quan điểm của R!Phát hiện R của phiên bản Blas

Tôi biết về http://r.789695.n4.nabble.com/is-Rs-own-BLAS-td911515.html nơi Brian Ripley cho biết vào tháng 6 năm 2006 rằng điều đó là không thể - nhưng mọi thứ đã thay đổi?

+1

Bạn có kiểm tra xem có gì trong dòng này trong gói [gcbd] [1] không? Đó là nơi tôi có một cái nhìn để bắt đầu. [1]: http://cran.r-project.org/web/packages/gcbd/index.html – cbeleites

Trả lời

14

Tôi nghĩ bạn không thể. R sẽ được xây dựng dựa trên giao diện BLAS và bản thân R không phải gói nào cung cấp thư viện thực.

Bạn chỉ có thể xem kết quả ldd. Trên máy chủ của tôi, điều này trỏ tới Atlas

[email protected]:~$ ldd /usr/lib/R/bin/exec/R 
    linux-vdso.so.1 => (0x00007fffc8ddb000) 
    libR.so => /usr/lib/libR.so (0x00007f8be940c000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8be91ef000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8be8e4d000) 
    libblas.so.3gf => /usr/lib/atlas-base/atlas/libblas.so.3gf (0x00007f8be88e4000) 
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8be8660000) 
    libreadline.so.6 => /lib/libreadline.so.6 (0x00007f8be841d000) 
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f8be81e1000) 
    liblzma.so.2 => /usr/lib/liblzma.so.2 (0x00007f8be7fbf000) 
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8be7da6000) 
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f8be7b9e000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8be799a000) 
    libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f8be778b000) 
    /lib64/ld-linux-x86-64.so.2 (0x00007f8be99a5000) 
    libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007f8be7475000) 
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8be725f000) 
    libtinfo.so.5 => /lib/libtinfo.so.5 (0x00007f8be7037000) 
    libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f8be6e01000) 
[email protected]:~$ 

có ý nghĩa khi gói cung cấp BLAS này được ưu tiên cao nhất cho bao bì Debian.

+1

Đối với người dùng mac, tôi nghĩ điều này sẽ hoạt động 'otool -L /Library/Frameworks/R.framework/R ' – user2503795

+0

Và trên debian hoặc ubuntu, tôi nghĩ bạn có thể làm:' update-alternatives --config libblas.so.3'. Sử dụng 'ldd' như Dirk viết, tôi thấy điểm R của tôi là'/usr/lib/libblas.so.3' là một liên kết đến '/ etc/alternatives/libblas.so.3' –

+0

Vâng, nếu bạn biết ít về hệ thống của bạn thì 'cập nhật thay thế' là tốt. Tôi xây dựng khung gcbd/thử nghiệm cũ hơn/họa tiết xung quanh mẹo đó. Tôi không chắc chắn tôi khuyên bạn nên nó như là một (R-người dùng) phải đối mặt với lệnh. –

3

Câu trả lời một phần cho linux nếu lsof được cài đặt.

# on a system using openblas: 
> grep('blas', system2('lsof', c('-p', Sys.getpid()), stdout=TRUE), value = TRUE) 
[1] "R  282 docker mem REG 0,52 29998440  233 /usr/lib/libopenblasp-r0.2.12.so" 


# on a system using R internal Blas: 
> grep('blas', system2('lsof', c('-p', Sys.getpid()), stdout=TRUE), value = TRUE) 
[1] "R  157 docker mem REG 0,44 180936  3105 /usr/local/lib/R/lib/libRblas.so" 
Các vấn đề liên quan