Parallel computing

Dear all, I am trying to develop a parallel computing code in R, I know how to do grid by grid, but its my first time running codes in parallel. can you please check my code, if this looks ok.

library(ncdf4)
library(trend)
library(parallel)
library(doParallel)
library(foreach)

calc_trend <- function(infile, outfile, spinup = 6, ncores = 40) {
# Read only coordinates in master
  nc  <- nc_open(infile)
  lon <- ncvar_get(nc, "lon")
  lat <- ncvar_get(nc, "lat")
  ny  <- length(lat)
  nt  <- dim(ncvar_get(nc, "tavg", start=c(1,1,1), count=c(1,1,-1)))[1]  # probe nt cheaply
  nc_close(nc)

  # Re-read nt properly
  nc  <- nc_open(infile)
  nt  <- dim(nc$var[["tavg"]]$varsize)[3]
  nc_close(nc)

  nx <- length(lon)

  cat("Dataset:", nx, "x", ny, "x", nt, "\n")
  cat("Cores  :", ncores, "\n")

  cl <- makeCluster(ncores)
  registerDoParallel(cl)

  results <- foreach(
    i         = 1:nx,
    .packages = c("ncdf4", "trend", "modifiedmk"),
    .combine  = "rbind",
    .inorder  = TRUE
  ) %dopar% {

    slope_row <- rep(NA_real_, ny)
    tau_row   <- rep(NA_real_, ny)
    pval_row  <- rep(NA_real_, ny)

    tryCatch({
      nc_w     <- nc_open(infile)
      Rr_strip <- ncvar_get(nc_w, "tavg",
                            start = c(i, 1, 1),
                            count = c(1, ny, -1))
      nc_close(nc_w)

      for (j in 1:ny) {
        Rr <- as.numeric(Rr_strip[j, ])
        Rr <- Rr[-(1:spinup)]
        Rr <- Rr[is.finite(Rr)]

        if (length(Rr) > 10 && sd(Rr) > 0) {
          tryCatch({
            slp          <- sens.slope(Rr)
            slope_row[j] <- slp$estimates * 12
            mk_res        <- mmkh(Rr)
            tau_row[j]   <- mk_res["Tau"][[1]]
            pval_row[j]  <- mk_res["new P-value"][[1]]
          }, error = function(e) {})
        }
      }
    }, error = function(e) {
      cat("Strip error at i=", i, ":", conditionMessage(e), "\n")
    })

    c(slope_row, tau_row, pval_row)
  }

  stopCluster(cl)

  # Rebuild arrays
  slope  <- matrix(results[, 1:ny],              nrow = nx)
  mk_tau <- matrix(results[, (ny+1):(2*ny)],     nrow = nx)
  pvalue <- matrix(results[, (2*ny+1):(3*ny)],   nrow = nx)

  # Write NetCDF
  lon_dim <- ncdim_def("lon", "degrees_east",  lon)
  lat_dim <- ncdim_def("lat", "degrees_north", lat)

  var1 <- ncvar_def("sen_slope", "tavg/year", list(lon_dim, lat_dim), NA, compression=5)
  var2 <- ncvar_def("mk_tau",    "1",          list(lon_dim, lat_dim), NA, compression=5)
  var3 <- ncvar_def("pvalue",    "1",          list(lon_dim, lat_dim), NA, compression=5)

  ncnew <- nc_create(outfile, list(var1, var2, var3))
  ncvar_put(ncnew, var1, slope)
  ncvar_put(ncnew, var2, mk_tau)
  ncvar_put(ncnew, var3, pvalue)
  nc_close(ncnew)

  cat("Finished:", outfile, "\n")
}

calc__trend(
  "Global_temperature.nc",
  "Global_temperature_trend.nc",
  spinup = 6,
  ncores = 10
)