Karl Forner
2012-Feb-23 18:06 UTC
[Rd] RcppProgress: progress monitoring and interrupting c++ code, request for comments
Hello,
I just created a little package, RcppProgress, to display a progress bar to
monitor the execution status of a C++ code loop, possibly multihreaded with
OpenMP.
I also implemented the possibility to check for user interruption, using
the work-around by Simon Urbanek.
I just uploaded the package on my R-forge project, so you should be able to
get the package from
https://r-forge.r-project.org/scm/viewvc.php/pkg/RcppProgress/?root=gwas-bin-tests
* The progress bar is displayed using REprintf, so that it works also in
the eclipse StatET console, provided that you disable the scroll lock.
* You should be able to nicely interrupt the execution by typing CTRL+C in
the R console, or by clicking the "cancel current task" in the StatET
console.
* I tried to write a small documentation, included in the package, but
basically you use it like this:
The main loop:
Progress p(max, display_progress); // create the progress monitor
#pragma omp parallel for schedule(dynamic)
for (int i = 0; i < max; ++i) {
if ( ! p.is_aborted() ) { // the only way to exit an OpenMP loop
long_computation(nb);
p.increment(); // update the progress
}
}
and in your computation intensive function:
void long_computation(int nb) {
double sum = 0;
for (int i = 0; i < nb; ++i) {
if ( Progress::check_abort() )
return;
for (int j = 0; j < nb; ++j) {
sum += Rf_dlnorm(i+j, 0.0, 1.0, 0);
}
}
}
I provided two small R test functions so that you can see how it looks,
please see the doc.
I would be extremely grateful if you could give me comments, criticisms
and other suggestions.
I try to release this in order to reuse this functionality in my other
packages.
Best regards,
Karl Forner
[[alternative HTML version deleted]]
Seemingly Similar Threads
- Unable to execute lm function within a Rscript launch in the Linux Terminal
- GenABEL - problems with load.gwaa.data
- c/c++ Random Number Generators Benchmarks using OpenMP
- Using PCA to correct p-values from snpMatrix
- Calculation of e^{z^2/2} for a normal deviate z
