bam (mgcv) not using the specified number of cores
oops, I just realised that the fix referred to below is in mgcv 1.8-3 - not yet on CRAN.
On 25/08/14 13:20, Simon Wood wrote:
Hi Andrew, In some of the shots you sent then top was reporting several cores working. I think the problem here may be to do with the way bam is parallelized - at present only part of the computation is in parallel - the model matrix QR decomposition part. The smoothing parameter selection is still single cored (although we are working on that), so if you watch top, you'll usually see multi-core and single core phases alternating with each other. The strategy works best in n>>p situations with few smoothing parameters. For the case where you used 31 cores, there was a bug in earlier mgcv versions in which it was assumed that when the model matrix is split into chunks for processing, each chunk would have more rows than columns. If you upgrade to the current mgcv version then this is fixed. However using 31 cores is liable to actually be less efficient than using fewer cores with the n to p (number of data to number of coefficients) ratio that you seem to have. This is because the work being done by each core is rather little, so that the overhead of stitching the cores' work back together becomes too high. Using 'use.chol=TRUE' would reduce the overheads here (although it uses a slightly less stable algorithm than the default). best, Simon On 22/08/14 06:13, Andrew Crane-Droesch wrote:
Hi Simon, (resending with all images as imgur so as to not bounce from list) Thanks for the reply. I've tried to reproduce the error, but I don't know how to show output from `top` any other way than with screenshots, so please excuse that. Here are screenshots of what happens when I run with two http://imgur.com/i26GKPo and three http://imgur.com/8SL7scy cores. In the former, it seems to be working on one core, and in the latter, it appears to be working on three. When reproducing the error, I'm getting behavior that isn't entirely consistent -- sometimes it "behaves" and operates on the asked-for number of cores, and other times not. I'm also attaching a screenshot http://imgur.com/bJfuS6R showing terminal output from a remote cluster when I run my full model (N=67K) rather than a subset (N=7K) -- I get that error "Error in qr.qty(qrx, f) : right-hand side should have 60650 not 118451 rows ..." I suppose this is a memory overload problem? Any suggestions on how to get bam to not call for more memory than the node has available would be welcome, though I suspect that is a supercomputing problem rather than a mgcv problem. I don't know much about memory management, except that R doesn't do it explicitly. Thanks, Andrew sessionInfo() for local machine: 1> sessionInfo() R version 3.0.2 (2013-09-25) Platform: x86_64-pc-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] mgcv_1.7-26 nlme_3.1-111 loaded via a namespace (and not attached): [1] grid_3.0.2 lattice_0.20-23 Matrix_1.1-4 1> On 08/21/2014 04:29 PM, Simon Wood wrote:
Hi Andrew, Could you provide a bit more information, please. In particular the results of sessionInfo() and the code that caused this weird behaviour (+ an indication of dataset size). best, Simon On 21/08/14 12:53, Andrew Crane-Droesch wrote:
I am getting strange behavior when trying to fit models to large datasets using bam. I am working on a 4-core machine, but I think that there may be 2 physical cores that the computer uses as 4 cores in some sense that I don't understand. When I run the bam using makeCluster(3), the model runs on one core. But when I run it on makeCluster(2), top shoes me that three of my cores are taken up to full capacity, and my computer slows down or crashes. How can I get it to truly run on 2 cores? I'm on a thinkpad X230, running ubuntu. Thanks, Andrew
______________________________________________ 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.
Simon Wood, Mathematical Science, University of Bath BA2 7AY UK +44 (0)1225 386603 http://people.bath.ac.uk/sw283