I have also encountered a similar problem. My mvabund package runs much faster on linux/OSX than on windows with both R/2.15.1 and R/2.15.2. For example, with mvabund_3.6.3 and R/2.15.2, system.time(example(anova.manyglm))
on OSX returns user system elapsed 3.351 0.006 3.381 but on windows 7 it returns user system elapsed 13.13 0.00 13.14 I also used svd frequently in my c code though by calling the gsl functions only. In my memory, I think the comp time difference is not that significant with earlier R versions. So maybe it is worth an investigation? Many thanks, Yi Wang On Thu, Dec 13, 2012 at 5:33 PM, Uwe Ligges <lig...@statistik.tu-dortmund.de > wrote: > Long message, but as far as I can see, this is not about base R but the > contributed package Amelia: Please discuss possible improvements with its > maintainer. > > Best, > Uwe Ligges > > > On 12.12.2012 19:14, Paul Johnson wrote: > >> Speaking of optimization and speeding up R calculations... >> >> I mentioned last week I want to speed up calculation of generalized >> inverses. On Debian Wheezy with R-2.15.2, I see a huge speedup using a >> souped up generalized inverse algorithm published by >> >> V. N. Katsikis, D. Pappas, Fast computing of theMoore-Penrose inverse >> matrix, Electronic Journal of Linear Algebra, >> 17(2008), 637-650. >> >> I was so delighted to see the computation time drop on my Debian >> system that I boasted to the WIndows users and gave them a test case. >> They answered back "there's no benefits, plus Windows is faster than >> Linux". >> >> That sent me off on a bit of a goose chase, but I think I'm beginning >> to understand the situation. I believe R-2.15.2 introduced a tighter >> requirement for precision, thus triggering longer-lasting calculations >> in many example scripts. Better algorithms can avoid some of that >> slowdown, as you see in this test case. >> >> Here is the test code you can run to see: >> >> http://pj.freefaculty.org/**scraps/profile/prof-puzzle-1.R<http://pj.freefaculty.org/scraps/profile/prof-puzzle-1.R> >> >> It downloads a data file from that same directory and then runs some >> multiple imputations with the Amelia package. >> >> Here's the output from my computer >> >> http://pj.freefaculty.org/**scraps/profile/prof-puzzle-1.**Rout<http://pj.freefaculty.org/scraps/profile/prof-puzzle-1.Rout> >> >> That includes the profile of the calculations that depend on the >> ordinary generalized inverse algorithm based on svd and the new one. >> >> See? The KP algorithm is faster. And just as accurate as >> Amelia:::mpinv or MASS::ginv (for details on that, please review my >> notes in >> http://pj.freefaculty.org/**scraps/profile/qrginv.R<http://pj.freefaculty.org/scraps/profile/qrginv.R> >> ). >> >> So I asked WIndows users for more detailed feedback, including >> sessionInfo(), and I noticed that my proposed algorithm is not faster >> on Windows--WITH OLD R! >> >> Here's the script output with R-2.15.0, shows no speedup from the >> KPginv algorithm >> >> http://pj.freefaculty.org/**scraps/profile/prof-puzzle-1-**Windows.Rout<http://pj.freefaculty.org/scraps/profile/prof-puzzle-1-Windows.Rout> >> >> On the same machine, I updated to R-2.15.2, and we see the same >> speedup from the KPginv algorithm >> >> http://pj.freefaculty.org/**scraps/profile/prof-puzzle-1-** >> CRMDA02-WinR2.15.2.Rout<http://pj.freefaculty.org/scraps/profile/prof-puzzle-1-CRMDA02-WinR2.15.2.Rout> >> >> After that, I realized it is an R version change, not an OS >> difference, I was a bit relieved. >> >> What causes the difference in this case? In the Amelia code, they try >> to avoid doing the generalized inverse by using the ordinary solve(), >> and if that fails, then they do the generalized inverse. In R 2.15.0, >> the near singularity of the matrix is ignored, but not in R 2.15.2. >> The ordinary solve is failing almost all the time, thus triggering the >> use of the svd based generalized inverse. Which is slower. >> >> The Katsikis and Pappas 2008 algorithm is the fastest one I've found >> after translating from Matlab to R. It is not so universally >> applicable as svd based methods, it will fail if there are linearly >> dependent columns. However, it does tolerate columns of all zeros, >> which seems to be the problem case in the particular application I am >> testing. >> >> I tried very hard to get the newer algorithm described here to go as >> fast, but it is way way slower, at least in the implementations I >> tried: >> ## KPP >> ## Vasilios N. Katsikis, Dimitrios Pappas, Athanassios Petralias. "An >> improved method for >> ## the computation of the Moore Penrose inverse matrix," Applied >> ## Mathematics and Computation, 2011 >> >> The notes on that are in the qrginv.R file linked above. >> >> The fact that I can't make that newer KPP algorithm go faster, >> although the authors show it can go faster in Matlab, leads me to a >> bunch of other questions and possibly the need to implement all of >> this in C with LAPACK or EIGEN or something like that, but at this >> point, I've got to return to my normal job. If somebody is good at >> R's .Call interface and can make a pure C implementation of KPP. >> >> I think the key thing is that with R-2.15.2, there is an svd-related >> bottleneck in the multiple imputation algorithms in Amelia. The >> replacement version of the function Amelia:::mpinv does reclaim a 30% >> time saving, while generating imputations that are identical, so far >> as i can tell. >> >> pj >> >> >> >> > ______________________________**________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/**listinfo/r-devel<https://stat.ethz.ch/mailman/listinfo/r-devel> > -- -- Dr. Wang, Yi (Alice) Research Assistant Professor Institute of Computational and Theoretical Studies Department of Computer Science Faculty of Science Hong Kong Baptist University Kowloon Tong, Hong Kong Email: yiw...@comp.hkbu.edu.hk Tel: +852-3411-2789 Web: http://www.icts.hkbu.edu.hk/yiwang/public/ [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel