模型拟合在 CentOS 上单线程运行
我正在拟合 Beta 回归模型与betareg包betamix
中的函数的混合。我最初在 Mac OS X 上开发代码,但现在我在一个 HPC 集群上运行它(即大规模迁移),LSF 用于作业管理和 CentOS 在节点上。对于这两种情况,我都使用由以下 YAML 定义的 Conda 环境
betareg.yaml
name: betareg
channels:
- conda-forge
- bioconda
- defaults
dependencies:
- r-base=4.0.3
- r-tidyverse
- r-magrittr
- r-cowplot
- r-knitr
- r-flexmix
- r-betareg
在我的本地机器上,该betamix
步骤会自动扩展到所有可用内核。然而,在集群上,我通过 Snakemake 部署作业并提供了threads: 16
,监控显示所有作业都在单线程运行,尽管 Snakemake 日志清楚地显示每个作业正确分配了 16 个内核。
并行包?
比较sessionInfo()
这两种情况的输出表明没有parallel
加载到 HPC 上下文中。但是,显式添加library(parallel)
并没有什么不同。
相同的 BLAS 库版本
另一个想法是,也许 BLAS 库是不同的,但是,它们似乎也匹配(尽管显然是特定于平台的构建)。
osx-64 BLAS
## Matrix products: default
## BLAS/LAPACK: /Users/user/miniconda3/envs/betareg/lib/libopenblasp-r0.3.12.dylib
linux-64 BLAS
## Matrix products: default
## BLAS/LAPACK: /home/user/mm-stem-cluster/.snakemake/conda/80842b70/lib/libopenblasp-r0.3.12.so
如何让 CentOS 执行以使用所有分配的线程?