我们如何为工作站配置具有多个节点的扭矩?

我们如何为工作站配置具有多个节点的扭矩?

我有一台配备 48 核 CPU + 4 个 NVIDIA GPU 的 GPU 工作站。我将把这台机器变成一个小型集群,其中包含:

4 个节点 12 核 +1 CPU/节点

我已经使用以下命令在这台机器上安装了 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 个 GPU 都分布到这个节点。

我只是想知道我们该如何解决这个问题?

答案1

我的回答可能不是直接回答你的问题,但我几年前就讨论过这个话题了,我建议你使用泥浆而不是扭矩。据我记得扭矩不使用 CUDA_VISIBLE_DEVICES用于调度进程的环境变量无需任何额外的补丁,但这就是 NVIDIA 的初衷(因此大多数应用程序都在寻找 CUDA_VISIBLE_DEVICES)。

Slurm 通过通用资源内置了 gpu 支持。在混合环境中,您甚至可以定义多种卡类型并指定应该为您的工作使用哪种卡。

除了我们的 20 张卡设置之外,我还看到了几个更大的 gpu 集群,它们都在使用 slurm。

相关内容