From c34c5f38d16b4244fc1a75988fcacc28eb53b970 Mon Sep 17 00:00:00 2001 From: Francesco Sabatini <francesco.sabatini@idiv.de> Date: Mon, 24 Feb 2020 22:44:15 +0100 Subject: [PATCH] Optimized A97 for cluster --- code/A97_ElevationExtract.R | 15 +++++++-------- code/cli_A97.r | 4 ++-- code/submit-A97.sh | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/code/A97_ElevationExtract.R b/code/A97_ElevationExtract.R index 611eb55..ef9e403 100644 --- a/code/A97_ElevationExtract.R +++ b/code/A97_ElevationExtract.R @@ -55,12 +55,12 @@ ElevationExtract <- function(header, output, ncores, chunk.i){ print(paste(length(todo), "tiles to do")) print("divide in chunks") - #divide in chunks #should take around 40' - indices <- 1:length(todo) - todo.chunks <- split(indices, sort(indices%%99)) + #divide in chunks + todo.chunks <- split(todo, sort(todo%%10)) print(paste("start main foreach loop on chunk n=", chunk.i)) - foreach(i = todo.cunks[[chunk.i]]) %dopar% { + print(paste(length(todo.chunks[[chunk.i]]), "to do")) + foreach(i = todo.chunks[[chunk.i]]) %dopar% { print(paste("doing", i)) #create sp and project data if(nrow(header.tiles %>% @@ -82,11 +82,10 @@ ElevationExtract <- function(header, output, ncores, chunk.i){ ) if(!exists("raster.tile")) { raster.tile <- NA + print(paste("tile", i, "doesn't work!, skip to next")) save(raster.tile, file = paste(output, "elevation_tile_", i, "failed.RData", sep="")) - message(paste("tile", i, "doesn't work!, skip to next")) rm(raster.tile) - next - } + } else { # clip dem tile with continent shape raster.tile <- mask(raster.tile, continent.high.merc) @@ -111,7 +110,7 @@ ElevationExtract <- function(header, output, ncores, chunk.i){ #save output save(output.tile, file = paste(output, "elevation_tile_", i, ".RData", sep="")) print(paste(i, "done")) - } + }} stopCluster(cl) } diff --git a/code/cli_A97.r b/code/cli_A97.r index 653390d..d376731 100644 --- a/code/cli_A97.r +++ b/code/cli_A97.r @@ -21,7 +21,7 @@ options <- list ( ), make_option( opt_str = c("-i", "--chunk.i"), - dest = "chunkn", + dest = "chunk.i", type = "integer", default = 1, help = "which chunk out of 99", @@ -45,7 +45,7 @@ cli <- parse_args(parser, positional_arguments = 2) header <- cli$args[1] output <- cli$args[2] ncores <- cli$options$ncores -chunkn <- cli$options$chunk.i +chunk.i <- cli$options$chunk.i # ------------------------------------------------------------------------------ diff --git a/code/submit-A97.sh b/code/submit-A97.sh index e0b14fe..dd9e18b 100644 --- a/code/submit-A97.sh +++ b/code/submit-A97.sh @@ -13,7 +13,7 @@ #$ -cwd -#$ -t 1-99 +#$ -t 1-10 module load R -- GitLab