Как мы можем настроить крутящий момент с несколькими узлами для рабочей станции?
У меня есть рабочая станция с 48-ядерным процессором + 4 графических процессора NVIDIA. Я собираюсь сделать эту машину небольшим кластером, который содержит:
4 узла 12 ядра +1 ЦП / узел
Я установил Torque на этой машине с помощью команды:
./configure --without-tcl --enable-nvidia-gpus --prefix=/soft/torque-5.1.1 --with-nvml-include=/usr/local/cuda/gpukit/usr/include/nvidia/gdk --with-nvml-lib=/usr/local/cuda/lib64
Тогда я установил /etc/hosts
как:
127.0.0.1 localhost cudaC
127.0.0.1 localhost cudaC1
127.0.0.1 localhost cudaC2
127.0.0.1 localhost cudaC3
xxx.xxx.xxx.x torqueserver
после этого я добавил следующее /var/spool/torque/server_priv/nodes
:
cudaC np=12 gpus=4
cudaC1 np=12 gpus=1
cudaC2 np=12 gpus=1
cudaC3 np=12 gpus=1
Затем запустите pbsserver:
#cd /soft/torque-5.1.1/sbin
#./pbs_sever
#./pbs_sched
#./ pbs_mom
проверьте статус с помощью команды pbsnodes:
cudaC
state = free
power_state = Running
np = 12
ntype = cluster
status = rectime=1435734456,cpuclock=Fixed,varattr=,jobs=,state=free,netload=136578103,gres=,loadave=0.00,ncpus=48,physmem=65982324kb,availmem=86084596kb,totmem=86954864kb,idletime=72,nusers=2,nsessions=5,sessions=1519 2350 6570 6781 11017,uname=Linux cudaC 3.16.7-21-desktop #1 SMP PREEMPT Tue Apr 14 07:11:37 UTC 2015 (93c1539) x86_64,opsys=linux
mom_service_port = 15002
mom_manager_port = 15003
gpus = 4
gpu_status = gpu[3]=gpu_id=0000:83:00.0;gpu_pci_device_id=398594270;gpu_pci_location_id=0000:83:00.0;gpu_product_name=Graphics Device;gpu_display=Enabled;gpu_fan_speed=22%;gpu_memory_total=12287 MB;gpu_memory_used=23 MB;gpu_mode=Default;gpu_state=Unallocated;gpu_utilization=0%;gpu_memory_utilization=0%;gpu_temperature=43 C,gpu[2]=gpu_id=0000:82:00.0;gpu_pci_device_id=398594270;gpu_pci_location_id=0000:82:00.0;gpu_product_name=Graphics Device;gpu_display=Enabled;gpu_fan_speed=22%;gpu_memory_total=12287 MB;gpu_memory_used=23 MB;gpu_mode=Default;gpu_state=Unallocated;gpu_utilization=0%;gpu_memory_utilization=0%;gpu_temperature=43 C,gpu[1]=gpu_id=0000:03:00.0;gpu_pci_device_id=398594270;gpu_pci_location_id=0000:03:00.0;gpu_product_name=Graphics Device;gpu_display=Enabled;gpu_fan_speed=22%;gpu_memory_total=12287 MB;gpu_memory_used=23 MB;gpu_mode=Default;gpu_state=Unallocated;gpu_utilization=0%;gpu_memory_utilization=0%;gpu_temperature=45 C,gpu[0]=gpu_id=0000:02:00.0;gpu_pci_device_id=398594270;gpu_pci_location_id=0000:02:00.0;gpu_product_name=Graphics Device;gpu_display=Enabled;gpu_fan_speed=22%;gpu_memory_total=12287 MB;gpu_memory_used=45 MB;gpu_mode=Default;gpu_state=Unallocated;gpu_utilization=0%;gpu_memory_utilization=1%;gpu_temperature=39 C,driver_ver=346.46,timestamp=Wed Jul 1 09:07:36 2015
cudaC1
state = down
power_state = Running
np = 12
ntype = cluster
mom_service_port = 15002
mom_manager_port = 15003
gpus = 1
cudaC2
state = down
power_state = Running
np = 12
ntype = cluster
mom_service_port = 15002
mom_manager_port = 15003
gpus = 1
cudaC3
state = down
power_state = Running
np = 12
ntype = cluster
mom_service_port = 15002
mom_manager_port = 15003
gpus = 1
Кажется, что только один узел работает найти и все 4 графических процессора были распределены на этот узел.
Мне просто интересно, как мы можем решить эту проблему?
1 ответ
Мой ответ, возможно, не касается вашего вопроса напрямую, но я прошел всю эту тему пару лет назад, и я предлагаю вам использовать slurm вместо крутящего момента. Насколько я помню, крутящий момент не использует переменные среды CUDA_VISIBLE_DEVICES для планирования процессов без каких-либо дополнительных исправлений, но именно так и задумывалось NVIDIA (поэтому большинство приложений ищут CUDA_VISIBLE_DEVICES).
Вместо этого Slurm поставляется со встроенной поддержкой gpu через общие ресурсы. В смешанной среде вы даже можете определить несколько типов карт и указать, что следует использовать для вашей работы.
Помимо наших 20 карт, я видел пару больших GPU-кластеров, и все они использовали slurm.