From pdalgd at gmail.com  Wed Aug 21 16:39:13 2013
From: pdalgd at gmail.com (peter dalgaard)
Date: Wed, 21 Aug 2013 16:39:13 +0200
Subject: [Rd] Problem with R >3.0.0
In-Reply-To: <5214C7E4.7000901@stats.ox.ac.uk>
References: <CE38EC7A.1872F%sheltons@stemcell.ucsf.edu>
	<E7CFD001-DE7D-4534-B1A2-8C5E1F5613BB@gmail.com>
	<5214C7E4.7000901@stats.ox.ac.uk>
Message-ID: <C7B04BCF-0772-42B3-8CA1-50C98A5E3C4A@gmail.com>


On Aug 21, 2013, at 16:00 , Prof Brian Ripley wrote:

> On 21/08/2013 13:45, peter dalgaard wrote:
>> 
>> On Aug 20, 2013, at 19:42 , Shelton, Samuel wrote:
>> 
>>> Hi all,
>>> 
>>> Thanks for getting back to me. We would like to move over to v3.0.0 on our
>>> cluster so that we can build matrices larger than 46300*46300 (limit in R
>>> <3.0.0)
>>> but so far we can't get things to work with R v3.0.0 and higher. I am
>>> trying to trouble shoot at the moment and I am now thinking that the
>>> problem is actually with the diag function that has been rewritten in
>>> version 3.0.0.
>>> 
>>> 
>>> The problem is definitely with the diag function and it does not occur on
>>> smaller matrices (20000*20000) and I think it maybe a bug.
>>> This illustrates the problem:
>>> 
>>> This was done on an iMac i5 with OSX 10.8.5 16GB Ram and with R 3.0.1 (but
>>> I do see the same for 3.0.0). This does not occur when I run it with R
>>> 2.15.2.
>>> 
>> 
>> 
>> Thanks. I can condense this to
>> 
>>> M <- matrix(1,23170,23170) ; diag(M) <- 0 ; range(colSums(M))
>> [1] 23169 23169
>>> M <- matrix(1,23171,23171) ; diag(M) <- 0 ; range(colSums(M))
>> [1]     0 23170
> 
> A much faster check is to look at M[1:3, 1:3]

That doesn't show the issue for larger values of 23171, though.


> 
>> and the fact that 2^14.5 is 23170.48 is not likely to be a coincidence...
>> 
>> It is only happening with some of my builds, though. In particular, my MacPorts build of 3.0.1 does not have the problem on Snow Leopard, nor does the CRAN build of 3.0.0, still on Snow Leopard. It takes forever to check on a 4GB machine....
> 
> Note that does not use the diag() function but diag<-(), which is essentially unchanged since 2.15.x (the error detection was moved above an expensive calculation).
> 
> It works correctly on x86_64 Linux and Solaris.  I suspect a platform-specific issue in
> 
>        x[cbind(i, i)] <- value

Likely. I'm not seeing it on the iMac/SnowLeopard, only on the MacPro/Lion. I'm upgrading the MacPorts R on the MacPro now to see whether it has issues too, but of course that reinstalls everything but the kitchen sink...

-- 
Peter Dalgaard, Professor
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



[Rd] Problem with R >3.0.0
peter dalgaard