[R-pkg-devel] Setting OpenMP threads (globally) for an R package

Evan Biederstedt ev@n@b|eder@tedt @end|ng |rom gm@||@com
Thu Mar 17 14:51:52 CET 2022


Hi R-package-devel

I'm developing an R package which uses `parallel::mclapply` and several
other library dependencies which possibly rely upon OpenMP. Unfortunately,
some functions explode the amount of memory used.

I've noticed that if I set `export OMP_NUM_THREADS=1` before starting R,
the memory is far more manageable.

My question is, if there a way for me to achieve this behavior within the R
package itself?

My initial try was to use `R/zzz.R` and an `.onLoad()` function to load
these global variables upon loading the library.

```
.onLoad <- function(libname, pkgname){
  Sys.setenv(OMP_NUM_THREADS=1)
}
```

But this doesn't work. The memory still explodes. In fact, I'm worried that
this cannot be done within an R package itself, as R has already started,
e.g.  https://stackoverflow.com/a/27320691/5269850

Is there a recommended approach for this problem when writing R packages?

Package here: https://github.com/kharchenkolab/numbat

Related question on SO:
https://stackoverflow.com/questions/71507979/set-openmp-threads-for-all-dependencies-in-r-package

Any help appreciated. Thanks, Evan

	[[alternative HTML version deleted]]



More information about the R-package-devel mailing list