multicore
を使用するdoMC
を使用します。私がデバッグしていたとき(コンソールで)、横になってfork-bombedになったことが数回起こりました。実行中のRプロセスの数を制限する方法はありますか
Rにsetrlimit()システムコールがありますか? このためpyhtonで私はRプロセスの数が
EDIT数に実行されている制限したい理想的resource.RLIMIT_NPROC
使用します。OSはLinuxのCentOSのである6
multicore
を使用するdoMC
を使用します。私がデバッグしていたとき(コンソールで)、横になってfork-bombedになったことが数回起こりました。実行中のRプロセスの数を制限する方法はありますか
Rにsetrlimit()システムコールがありますか? このためpyhtonで私はRプロセスの数が
EDIT数に実行されている制限したい理想的resource.RLIMIT_NPROC
使用します。OSはLinuxのCentOSのである6
複数の選択肢があります。 RhpcBLASctl:ここでは私のお気に入りのツールのWriting R Extensions, Section 1.2.1.1
Packages are not standard-alone programs, and an R process could
contain more than one OpenMP-enabled package as well as other components
(for example, an optimized BLAS) making use of OpenMP. So careful
consideration needs to be given to resource usage. OpenMP works with
parallel regions, and for most implementations the default is to use as
many threads as 'CPUs' for such regions. Parallel regions can be
nested, although it is common to use only a single thread below the
first level. The correctness of the detected number of 'CPUs' and the
assumption that the R process is entitled to use them all are both
dubious assumptions. The best way to limit resources is to limit the
overall number of threads available to OpenMP in the R process: this can
be done via environment variable 'OMP_THREAD_LIMIT', where
implemented.(4) Alternatively, the number of threads per region can be
limited by the environment variable 'OMP_NUM_THREADS' or API call
'omp_set_num_threads', or, better, for the regions in your code as part
of their specification. E.g. R uses
#pragma omp parallel for num_threads(nthreads) ...
That way you only control your own code and not that of other OpenMP
users.
つから関連するセクションでは、これを制御するパッケージです。ここではその説明は次のとおり
'BLAS'(別名 'GotoBLAS'、 'ACML' および 'MKL')上のスレッドの数を制御します。 'OpenMP'のスレッド数を制御することが可能です。実現可能であれば、多くの論理コアと物理コアを にしてください。
パラレルセッションの数と、各並列スレッドに割り当てられたBLASコアの数を制御する必要があります。パラレルパッケージには、セッションあたり2つのスレッドのデフォルトがある理由があります。
このすべては、実行しているLinuxまたはUnixのフレーバーにはほとんど依存していないはずです。さて、OS Xはもちろん(まだ!)OpenMPを提供していないという事実は別として、
非常に外側のレベルは、doMC
とフレンドから制御できます。
非常に有望に見えます、ありがとう私はそれを掘るでしょう – statquant
あなたはregisterDoMC
を使用することができます(参照DOC here)
registerDoMC(cores=<some number>)
は別のオプションはRスクリプトを実行する前にulimit
コマンドを使用することです。
ulimit -u <some number>
Rが生成できるプロセスの数を制限します。
複数のRプロセスが同時に使用するCPUの総数を制限する場合は、cgroupsまたはcpusetsを使用し、Rプロセスをcgroupまたはcpusetに接続する必要があります。それらはcgroupまたはcpusetで定義された物理CPUSに限定されます。 cgroupはより多くの制御(例えばメモリも)を可能にしますが、セットアップがより複雑です。
あなたの編集をありがとう、私はそれを見てみましょう – statquant
使用しているOSは何ですか?私は 'doMC'を使っているならLinuxと仮定します。 – cdeterman