I have some better news. While we established that 'in theory' setting the environment variable OMP_NUM_THREADS would help (and I maintain that it is a great PITA that CRAN does not do so as a general fix for this issue) it does *not help* once R is started. OpenMP only considers the variable once at startup and does not re-read it. So we cannot set from R once R has started.
But OpenMP offers a setter (and a getter) for the thread count value. And using it addresses the issue. I created a demo package [1] which, when running on a system with both OpenMP and 'enough cores' (any modern machine will do) exhibits the warning from R CMD check --as-cran with timing enabled (i.e. env vars set). When an additional environment variable 'SHOWME' is set to 'yes', it successfully throttles via the exposed OpenMP setter. In our example, Armadillo uses it to calibrate its thread use, a lower setting is followed, and the warning is gone. I will add more convenient wrappers to RcppArmadillo itself. These are currently in a branch [2] and their use is illustrated in the help page and example of fastLm demo function [3]. I plan to make a new RcppArmadillo release with this change in the coming days, the setter and re-setter will work for any OpenMP threading changes. So if you use RcppArmadillo, this should help. (And of course there always was RhpcBLASctl doing this too.) Dirk [1] https://github.com/eddelbuettel/rcpparmadilloopenmpex [2] https://github.com/RcppCore/RcppArmadillo/tree/feature/thread_throttle\ [3] https://github.com/RcppCore/RcppArmadillo/blob/a8db424bd6aaeda2ceb897142d3c366d9c6591c7/man/fastLm.Rd#L72-L98 [4] https://cran.r-project.org/package=RhpcBLASctl -- dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel