From 9e3b11c96e65711741f1e8d11a0695ce16faa6e8 Mon Sep 17 00:00:00 2001 From: Tyler Date: Wed, 4 Jul 2018 10:03:05 -0400 Subject: [PATCH] Multicore memory fix --- DESCRIPTION | 2 +- R/ray_shade.R | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 8ce1693e..9b611e74 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: rayshader Type: Package Title: Raytraces Elevation Matrices to Produce Global Illumination Relief Maps -Version: 0.3.1 +Version: 0.3.2 Date: 2018-06-30 Author: Tyler Morgan-Wall Maintainer: Tyler Morgan-Wall diff --git a/R/ray_shade.R b/R/ray_shade.R index a84941b3..44d8a50c 100644 --- a/R/ray_shade.R +++ b/R/ray_shade.R @@ -72,8 +72,8 @@ ray_shade = function(heightmap, anglebreaks=seq(40,50,1), sunangle=315, maxsearc } cl = parallel::makeCluster(numbercores, ...) doParallel::registerDoParallel(cl, cores = numbercores) - shadowmatrix = tryCatch({ - foreach::foreach(i=1:nrow(heightmap), .combine="rbind", .packages = c("rayshader")) %dopar% { + shadowmatrixlist = tryCatch({ + foreach::foreach(i=1:nrow(heightmap), .packages = c("rayshader")) %dopar% { rayshade_multicore(sunangle = sunangle_rad, anglebreaks = anglebreaks_rad, heightmap = heightmap, zscale = zscale, maxsearch = maxsearch, row = i-1, cache_mask = cache_mask[i,]) @@ -83,6 +83,7 @@ ray_shade = function(heightmap, anglebreaks=seq(40,50,1), sunangle=315, maxsearc parallel::stopCluster(cl) }, error = function (e) {}) }) + shadowmatrix = do.call(rbind,shadowmatrixlist) shadowmatrix[shadowmatrix<0] = 0 if(remove_edges) { shadowmatrix = shadowmatrix[c(-1,-nrow(shadowmatrix)),c(-1,-ncol(shadowmatrix))]