| get job id | R Documentation |
This function obtains job id which can be used to divide jobs.
get.jid(n, method = .pbd_env$SPMD.CT$divide.method[1], all = FALSE,
comm = .pbd_env$SPMD.CT$comm, reduced = FALSE)
n |
total number of jobs. |
method |
a way to divide jobs. |
all |
indicate if return all id for each processor. |
comm |
a communicator number. |
reduced |
indicate if return should be a reduced representation. |
n is total number of jobs needed to be divided into all processors
(comm.size(comm), i.e. 1:n will be split according to
the rank of processor (comm.rank(comm)) and method.
Job id will be returned. Currently, three possible methods are provided.
"block" will use return id's which are nearly equal size blocks.
For example,
7 jobs in 4 processors will have jid=1 for rank 0, jid=2,3
for rank 1, jid=4,5 for rank 2, and jid=6,7 for rank 3.
"block0" will use return id's which are nearly equal size blocks,
in the opposite direction of "block".
For example,
7 jobs in 4 processors will have jid=1,2 for rank 0, jid=3,4
for rank 1, jid=5,6 for rank 2, and jid=7 for rank 3.
"cycle" will use return id's which are nearly equal size in cycle.
For example, 7 jobs in 4 processors will have jid=1,5 for rank 0,
jid=2,6 for rank 1, jid=3,7 for rank 2, and jid=4
for rank 3.
get.jid() returns a vector containing job id for each individual
processor if all = FALSE. While it returns a list containing all
job id for all processor if all = TRUE. The list has length equal
to comm.size.
Wei-Chen Chen wccsnow@gmail.com, George Ostrouchov, Drew Schmidt, Pragneshkumar Patel, and Hao Yu.
Programming with Big Data in R Website: https://pbdr.org/
task.pull() and comm.chunk().
### Save code in a file "demo.r" and run with 2 processors by
### SHELL> mpiexec -np 2 Rscript demo.r
spmd.code <- "
### Initialize
suppressMessages(library(pbdMPI, quietly = TRUE))
### Examples.
comm.cat(\">>> block\n\", quiet = TRUE)
jid <- get.jid(7, method = \"block\")
comm.print(jid, all.rank = TRUE)
comm.cat(\">>> cycle\n\", quiet = TRUE)
jid <- get.jid(7, method = \"cycle\")
comm.print(jid, all.rank = TRUE)
comm.cat(\">>> block (all)\n\", quiet = TRUE)
alljid <- get.jid(7, method = \"block\", all = TRUE)
comm.print(alljid)
comm.cat(\">>> cycle (all)\n\", quiet = TRUE)
alljid <- get.jid(7, method = \"cycle\", all = TRUE)
comm.print(alljid)
### Finish.
finalize()
"
pbdMPI::execmpi(spmd.code, nranks = 2L)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.