1

LSFを使用してリソースが割り当てられているLinuxクラスターにアクセスします。これは一般的なツールであり、Scali(http://www.scali.com/workload-management/high-performance-computing)から提供されていると思います。インタラクティブキューで、コアの最大数を要求して取得しました。4.しかし、Pythonのマルチプロセッシングモジュールが認識するCPUの数を確認すると、その数は12であり、ノードに割り当てられた物理コアの数です。マルチプロセッシングモジュールには、LSFが課すべき/課すであろう境界を尊重する問題があるようです。これはLSFまたはPythonの問題ですか?

[lsandor@iliadaccess03 peers_prisons]$ bsub -Is -n 4 -q interact sh
Job <7408231> is submitted to queue <interact>.
<<Waiting for dispatch ...>>
<<Starting on heroint5>>
sh-3.2$ python3
Python 3.2 (r32:88445, Jun 13 2011, 09:20:03) 
[GCC 4.3.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import multiprocessing
>>> 
>>> multiprocessing.cpu_count()
12
4

3 に答える 3

1

問題ではありませんが、プログラムはキューイング システムによって割り当てられたリソースの量を尊重する必要がありますが、これは 100% よりもかなり少ない場合があります。私は、LSF に OS レベルのフックがあり、コンプライアンスを強化しているとは思いませんし、おそらくそうすべきではありません。

過去に、これがラッパー スクリプトで処理されるのを見てきました。プログラムとジョブを同時に適切な設定でセットアップし、起動するもの。

于 2011-09-16T20:55:39.267 に答える
1

パーティーには少し遅れましたが、@ Paddy3118 の回答を拡張すると、スパン指定は必要ありません。代わりに、環境変数LSB_DJOB_NUMPROCは割り当てられたコアの数を保持します。少なくとも、私が利用できる LSF バージョン (9.1.2) ではそうです。

于 2015-07-09T16:52:47.033 に答える
0

-n オプションを使用して lsf に送信し、必要なプロセッサの数を指定してからspan、次のコマンドのように使用して、同じホストで 4 つのプロセッサを使用できるようにする要求を使用する場合:

bsub -n 4 -R "span[hosts=1]" my_job

次に、my_job は次の環境変数セットで開始されます。これは Python スクリプトで問い合わせることができ、開始するサブプロセスの数を LSF によって割り当てられた数と同じに設定できます。

LSB_HOSTS= "hostA hostA hostA hostA"
LSB_MCPU_HOSTS="hostA 4" 

(または、サブプロセスの数は、サブプロセスを起動する Python スクリプトを考慮して、LSF によって割り当てられたプロセスの数 - 1 にする必要があります :-)

于 2012-08-04T06:27:38.097 に答える