RパッケージRsgeを使用すると、SGE管理対象クラスターにジョブを送信できます。基本的に、必要な環境をディスクに保存し、ジョブ送信スクリプトを作成し、qsubを介して実行してから、結果を照合して返します。
基本的にqsubへの呼び出しをラップするため、PBSでも機能するはずです(ただし、PBSを知らないため、保証できません)。qsubコマンドと、Rsgeに関連付けられたグローバルオプション(options()
出力の接頭辞sge。)を変更することで使用されるオプションを変更できます。
もはやCRANにはありませんが、githubから入手できます:https ://github.com/bodepd/Rsge 、これ以上維持されているようには見えませんが。
これを使用するには、パッケージに付属の適用タイプ関数の1つを使用します。sge.apply、sge.parRapply、sge.parCapply、sge.parLapply、およびsge.parSapplyは、apply、rapply、rapply(t(x)と同等の並列処理です。 、…)、それぞれlapplyとsapply。非並列関数に渡される標準パラメーターに加えて、他のいくつかのパラメーターが必要です。
njobs: Number of parallel jobs to use
global.savelist: Character vector giving the names of variables
from the global environment that should be imported.
function.savelist: Character vector giving the variables to save from
the local environment.
packages: List of library packages to be loaded by each worker process
before computation is started.
2つのsavelistパラメーターとpackagesパラメーターは、基本的に、コードを実行する前に、クラスターマシンで実行されているRの新しいインスタンスにロードする必要がある変数、関数、およびパッケージを指定します。Xのさまざまなコンポーネント(リストアイテムまたはdata.frameの行/列)は、njobsのさまざまなジョブに分割され、ジョブ配列としてSGEに送信されます。各ノードはRのインスタンスを開始し、指定された変数、関数、およびパッケージをロードし、コードを実行し、結果を保存してtmpファイルに保存します。制御Rインスタンスは、ジョブがいつ完了したかを確認し、tmpファイルからデータをロードし、結果を結合して最終結果を取得します。
たとえば、遺伝子リストのランダムサンプルの統計を計算します。
library(Rsge)
library(some.bioc.library)
gene.list <- read.delim(“gene.list.tsv”)
compute.sample <- function(gene.list) {
gene.list.sample <- sample(1000, gene.list)
statistic <- some.slow.bioc.function(gene.list.sample)
return (statistic)
}
results <- sge.parSapply(1:10000, function(x) compute.sample,
njobs = 100,
global.savelist = c(“gene.list”),
function.savelist(“compute.sample”),
packages = c(“some.bioc.library”))