Change the parallel access mode of a NetCDF variable from independent to collective and vice versa.
var.par.nc(ncfile, variable, access="NC_COLLECTIVE")
Object of class "
Numeric ID or name of the variable for which to change the parallel access mode. Use "NC_GLOBAL" to change the parallel access mode for all variables in the dataset.
Parallel access mode as one of the following strings: "
Parallel file access is either collective (all processors must participate) or independent (any processor may access the data without waiting for others). Data reads and writes (i.e. calls to
var.get.nc) are independent by default. Use this function to change the parallel access mode for a variable from independent to collective mode or vice versa.
All netCDF metadata writing operations are collective - all creation of groups, types, variables, dimensions, or attributes.
Note that when the file format is "classic" or "offset64", the change always applies to all variables in the file, even if a single variable is specified in argument
Pavel Michna, Milton Woods
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
## Not run: # This example assumes that the NetCDF library was built with MPI support, # and that both RNetCDF and pbdMPI are installed in R. # If the example code is stored in a file myexample.R, # run R under MPI using a command similar to: # SHELL> mpiexec -np 2 Rscript --vanilla myexample.R library(pbdMPI, quiet = TRUE) library(RNetCDF, quiet = TRUE) # Get MPI parameters init() rank <- comm.rank() size <- comm.size() # Define dimensions and data nr <- 5 nc_local <- 4 nc <- nc_local * size data_local <- matrix(rank, nrow=nr, ncol=nc_local) # Open file for parallel access and define metadata filename <- "myexample.nc" info.create() ncid <- create.nc(filename, format="netcdf4", mpi_comm=comm.c2f(), mpi_info=info.c2f()) rdim <- dim.def.nc(ncid, "rows", nr) cdim <- dim.def.nc(ncid, "cols", nc) varid <- var.def.nc(ncid, "data", "NC_INT", c(rdim, cdim)) # Use collective I/O var.par.nc(ncid, "data", "NC_COLLECTIVE") # Write data var.put.nc(ncid, varid, data_local, start=c(1,rank*nc_local+1), count=c(nr,nc_local)) # Finish up close.nc(ncid) info.free() finalize() ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.