[R] R and ATLAS

Dirk Eddelbuettel edd at debian.org
Thu May 27 13:03:06 CEST 2010


On 26 May 2010 at 20:29, Jonathan Greenberg wrote:
| Peter and Dirk:
| 
| Thanks for the quick response -- I'm trying to get multiple CPU
| responses as Peter indicated should happen, but those R commands only
| illicit a single CPU response.
| 
| When I check the libraries:
| 
| ldd /usr/lib/R/bin/exec/R
| 	linux-vdso.so.1 =>  (0x00007fffd05ff000)
| 	libR.so => /usr/lib/R/lib/libR.so (0x00007f5f3b667000)
| 	libc.so.6 => /lib/libc.so.6 (0x00007f5f3b313000)
| 	libblas.so.3gf => /usr/lib/libblas.so.3gf (0x00007f5f3a7fe000)
| 	libgfortran.so.3 => /usr/lib/libgfortran.so.3 (0x00007f5f3a512000)
| 	libm.so.6 => /lib/libm.so.6 (0x00007f5f3a290000)
| 	libreadline.so.6 => /lib/libreadline.so.6 (0x00007f5f3a04b000)
| 	libpcre.so.3 => /lib/libpcre.so.3 (0x00007f5f39e1c000)
| 	libbz2.so.1.0 => /lib/libbz2.so.1.0 (0x00007f5f39c0c000)
| 	libz.so.1 => /usr/lib/libz.so.1 (0x00007f5f399f4000)
| 	libdl.so.2 => /lib/libdl.so.2 (0x00007f5f397f0000)
| 	/lib64/ld-linux-x86-64.so.2 (0x00007f5f3bbec000)
| 	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f5f395da000)
| 	libpthread.so.0 => /lib/libpthread.so.0 (0x00007f5f393bd000)
| 	libncurses.so.5 => /lib/libncurses.so.5 (0x00007f5f39177000)
| 
| Following /usr/lib/libblas.so.3gf :
| ls -l /usr/lib/libblas.so.3gf
| /usr/lib/libblas.so.3gf -> /etc/alternatives/libblas.so.3gf
| 
| And again following this:
| ls -l /etc/alternatives/libblas.so.3gf
| /etc/alternatives/libblas.so.3gf -> /usr/lib/atlas-base/atlas/libblas.so.3gf
| 
| So it appears to be properly linked to Atlas.  Note that I got this
| same response from both the binary install of r-base (apt-get install
| r-base) and the source build of r-base-dev (apt-get source -b
| r-base-dev).  Also, I did a "tuned" install of ATLAS 3.8.3 using:
| 
| apt-get source atlas -t unstable
| cd atlas-3.8.3
| DEFAULTS=n fakeroot debian/rules custom
| 
| I did notice during the VERY long compilation that it seemed to
| correctly identify that I have 4 CPUs.
| 
| Can someone confirm that the test:
| 
| a = matrix(rnorm(5000*5000), 5000, 5000)
| b = matrix(rnorm(5000*5000), 5000, 5000)
| c = a%*%b
| 
| Should illicit a multi-CPU response with R/ATLAS?  If so, any
| suggestions on how to tweak my install to get it working?  Thanks!

I suggest that you 

  a) talk to Sylvestre, the Atlas maintainer (CC'ed), as the last time I
     checked I thought our Atlas 3.8.* package were configure to be
     single-threaded so while you did the right thing with the local tuning,
     you may have omitted another toggle to give you multi-threaded Atlas

  b) look into Goto Blas from tacc.utexas.edu and/or Intel MKLs as well.

Lastly, my preferred test is

   N <- someNumber
   a <- matrix(rnorm(N*N), ncol=N)
   n <- someOtherNumber
   summary(replicate(n,system.time(crossprod(A))[3]))

:)

Dirk

| --j
| 
| On Wed, May 26, 2010 at 3:17 PM, Peter Langfelder
| <peter.langfelder at gmail.com> wrote:
| > If you didn't specify an external BLAS when you ran R configure
| > script, you are not using ATLAS. If you're not sure and you still have
| > the output of the configure script, at the end it'll say whether it
| > uses an external BLAS.
| >
| > Alternatively, you may also want to generate two random 5000x5000
| > matrices and do their multiplication
| >
| > a = matrix(rnorm(5000*5000), 5000, 5000)
| > b = matrix(rnorm(5000*5000), 5000, 5000)
| > c = a%*%b
| >
| > While the calculation is running, in a separate terminal, run top and
| > watch how much CPU R takes. AFAIK standard installation of R is single
| > threaded and will only use one CPU (up to 100%). ATLAS is
| > multithreaded and (unless you configured it otherwise) it will use all
| > available processors, so if you have a 4-core machine, you will see
| > CPU usage of nearly 400%. Note though that this will not discriminate
| > ATLAS from other multi-threaded BLASes.
| >
| > HTH,
| >
| > Peter
| >
| >
| > On Wed, May 26, 2010 at 2:16 PM, Jonathan Greenberg
| > <greenberg at ucdavis.edu> wrote:
| >> Rhelpers:
| >>
| >> I recently installed the 64-bit version of R on my Debian system, and
| >> afterwards was asked if it was compiled using ATLAS.  Is there a way
| >> to test to see if R is using ATLAS?
| >>
| >> --j
| >>
| >> ______________________________________________
| >> R-help at r-project.org mailing list
| >> https://stat.ethz.ch/mailman/listinfo/r-help
| >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
| >> and provide commented, minimal, self-contained, reproducible code.
| >>
| >
| > ______________________________________________
| > R-help at r-project.org mailing list
| > https://stat.ethz.ch/mailman/listinfo/r-help
| > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
| > and provide commented, minimal, self-contained, reproducible code.
| >
| 
| ______________________________________________
| R-help at r-project.org mailing list
| https://stat.ethz.ch/mailman/listinfo/r-help
| PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
| and provide commented, minimal, self-contained, reproducible code.

-- 
  Regards, Dirk



More information about the R-help mailing list