Hi again,

Thanks @Dirk for pointing the issue with the encoding of my original message (it cannot be read from the list archive either). I do not understand what could have been the problem since there was no issue with other mails sent to the list earlier on the same day in the same condition. I am resending it below from my webmail instead of my mailer, hoping it will work better this time, and so that everyone can see my original message.

Regarding my issue, I did not know about the \dontshow tag, so I will use it. Thanks.

Best

----

Hi,

We have a package that runs parallel computations (work in progress, can be found here https://github.com/getkeops/keops/tree/fix_rkeops_v2_keops_v2.3/rkeops).

The package deeply relies on a Python package through `reticulate` that itself interfaces OpenMP-based C++ code, which can thus run parallel computations.

Users of our package can control CPU resource usage thanks to a wrapper function around `RhpcBLASctl::omp_set_num_threads(n_core)` available in our package.

By default, OpenMP uses all available cores which is a bad practice for CRAN checks. It is recommended to only use 2 CPU cores for computation per CRAN policies (which is totally understandable).

For unit test run with `testthat`, we can use a `tests/testthat/setup.R` file to run any arbitrary code before running the tests, so I can setup a limit on CPU usage here.

For my Rmarkdown vignette build, I have a code chunk not included in the output document that setup a limit using our wrapper function.

However, regarding example run, is there a way to automatically setup some resource limit before running package examples, or to automatically run some code (i.e. add code at top of generated `<pkg>-Ex.R` file) before running all the examples?

If not, I will have to repeat the function call that setup limit before every examples in my package (around 70 exported functions in my package), which does not seems to be really optimal.

In the same spirit, generally my example run breaks because `reticulate` is not explicitly initialized (I am not facing this issue in interactive or standard script mode and I do not understand why), so I would need to run something like `reticulate::py_available(initialize = TRUE)` or `reticulate::py_config()` before running my examples (so to prepend this at the top of the generated example file).

Also, our package generate cache files in `tools::R_user_dir()` directory because it does JIT compilation (and the generated library files are cached for reuse). We have a function to clean them, so I would need to call this function after example runs so that these files are removed (again for CRAN check).

Note: at the moment I have \dontrun tags around almost all my examples to avoid all these issues, but it was highlighted in a recent CRAN submission that it should be reduced to a minimum if possible.

Thanks in advance,
Best regards,


---
Ghislain Durif
-------------------------------------------
Research engineer -- CNRS
LBMC, ENS Lyon (France)
Webpage: https://gdurif.perso.math.cnrs.fr

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to