CentOS でモデル フィッティングをシングル スレッドで実行
betaregパッケージのbetamix
関数を使用してベータ回帰モデルを組み合わせています。私はもともと Mac OS X でコードを開発しましたが、現在はジョブ管理用の LSF とノード上の CentOS を備えた HPC クラスターで実行しています (つまり、大規模に移行しています)。どちらの状況でも、次の 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 ライブラリ バージョン
もう 1 つの考えは、おそらく 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 を実行するにはどうすればよいですか?