web-dev-qa-db-ja.com

Slurm:GPUとCPUのみのジョブ用に2つの別々のキューがあります

現時点では、それぞれ4つのGPUを備えた6つのノードの小さなクラスターを管理するようにSlurmをセットアップしました。これまではうまく機能していましたが、CPUの処理能力のみを必要とするジョブにIntel Core i7-5820KCPUを利用したいと考えています。各CPUには6つのコアと12のスレッドがあり、各GPUには1つのスレッド/論理コアが必要です。したがって、「CPUのみ」のジョブに使用できる残りのスレッドは(ノードごとに)8つです。

現在の構成:

cat /etc/slurm-llnl/gres.conf

Name=gpu File=/dev/nvidia0
Name=gpu File=/dev/nvidia1
Name=gpu File=/dev/nvidia2
Name=gpu File=/dev/nvidia3

cat /etc/slurm-llnl/slurm.conf(抜粋)

SchedulerType=sched/builtin
SelectType=select/cons_res
SelectTypeParameters=CR_Core
AccountingStorageType=accounting_storage/none
GresTypes=gpu
MaxTasksPerNode=4

NodeName=node1 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
NodeName=node2 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
NodeName=node3 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
NodeName=node4 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
NodeName=node5 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN
NodeName=node6 CoresPerSocket=4 Procs=8 Sockets=1 ThreadsPerCore=2 Gres=gpu:4 State=UNKNOWN

PartitionName=gpu Nodes=node[2-6] Default=NO Shared=NO MaxTime=INFINITE State=UP
PartitionName=short Nodes=node1 Default=YES Shared=NO MaxTime=INFINITE State=UP

最初のステップは、CoresPerSocket=4 Procs=8CoresPerSocket=6 Procs=12に変更することだと思います。これは、実際のハードウェアと一致するためです。

私はすでにドキュメントを調べようとしましたが、それでも何をすべきかわかりません。 gres.confを変更する必要がありますか? CPUにどのFile=を指定する必要がありますか?次に、cpuonlyと呼ばれる3番目のパーティションを追加すると思いました。しかし、それは私がやろうとしていることを達成するための正しい方法でさえありますか? NodeNameで始まる行のGres=パラメーターに何かを追加する必要があると思います。

1
Micha
  • GPU用とCPUジョブ用の2つのパーティションを設定します。それぞれにMaxCPUsPerNodeを使用します。
  • CPUsパラメータを使用してノードを設定します。追加されるすべてのMaxCPUsPerNodeは、これ以下である必要があります(使用可能なCPU /コア/スレッド)
  • 使用する SelectTypeParameters=CR_CPU
  • 使用する SchedulerType=sched/backfill
1
Micha