Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
doku:rstat [2015/04/28 09:21] – ir | doku:rstat [2021/09/29 12:25] (current) – [Example] goldenberg | ||
---|---|---|---|
Line 3: | Line 3: | ||
[[http:// | [[http:// | ||
- | We installed the libraries Rmpi, doMPI and foreach and their dependencies on VSC2 and VSC3. | + | We installed the libraries Rmpi, doMPI and foreach and their dependencies on VSC2 and VSC4. |
- | This libraries give you the possibilty | + | These libraries give you the possibility |
- | Example | + | ==== Example |
+ | |||
+ | Given a simple for loop: | ||
< | < | ||
for (i in 1:50) {mean(rnorm(1e+07))} | for (i in 1:50) {mean(rnorm(1e+07))} | ||
</ | </ | ||
- | sequentially it takes on VSC3: | + | === Sequential execution === |
+ | |||
+ | Sequential execution | ||
< | < | ||
/ | / | ||
Line 19: | Line 23: | ||
</ | </ | ||
- | using this script on VSC2: | + | === Parallel execution === |
+ | |||
+ | In R, the code **berk-rmpi.R** may be parallelized in the following form: | ||
< | < | ||
- | #$ -N rstat | + | # basic example with foreach |
- | #$ -V | + | # start R as usual:' |
- | #$ -pe mpich 16 | + | library (Rmpi) |
- | #$ -l h_rt=01:00:00 | + | library (doMPI) |
- | echo $NSLOTS | + | cl <- startMPIcluster () |
- | mpirun -machinefile $TMPDIR/ | + | registerDoMPI (cl) |
+ | |||
+ | result <- foreach (i = 1:50) %dopar% { | ||
+ | mean(rnorm(1e+07)) | ||
+ | } | ||
+ | |||
+ | closeCluster(cl) | ||
+ | mpi.finalize() | ||
</ | </ | ||
- | using this script on VSC3: | + | On VSC3 the script reads: |
< | < | ||
#!/bin/sh | #!/bin/sh | ||
Line 44: | Line 57: | ||
mpirun R CMD BATCH berk-rmpi.R | mpirun R CMD BATCH berk-rmpi.R | ||
</ | </ | ||
- | + | yielding to an execution time [s] of | |
- | berk-rmpi.R: | + | |
- | < | + | |
- | # basic example with foreach | + | |
- | # start R as usual:' | + | |
- | library (Rmpi) | + | |
- | library (doMPI) | + | |
- | cl <- startMPIcluster () | + | |
- | registerDoMPI (cl) | + | |
- | + | ||
- | result <- foreach (i = 1:50) %dopar% { | + | |
- | mean(rnorm(1e+07)) | + | |
- | } | + | |
- | + | ||
- | closeCluster(cl) | + | |
- | mpi.finalize() | + | |
- | </ | + | |
- | + | ||
- | takes on VSC2: | + | |
< | < | ||
> proc.time() | > proc.time() | ||
| | ||
- | | + | |
</ | </ |