Tuyên bố từ chối trách nhiệm: Bài đăng này khá dài khi tôi cố gắng cung cấp tất cả thông tin cấu hình có liên quan.
Tình trạng và vấn đề:
Tôi quản trị một cụm gpu và tôi muốn sử dụng slurm để quản lý công việc. Thật không may, tôi không thể yêu cầu GPU bằng cách sử dụng plugin tài nguyên chung tương ứng của slurm.
Lưu ý: test.sh là một tập lệnh nhỏ in biến môi trường CUDA_VISIBLE_DEVICE.
Chạy việc --gres=gpu:1
không hoàn thành
Chạy srun -n1 --gres=gpu:1 test.sh
kết quả trong lỗi sau:
srun: error: Unable to allocate resources: Requested node configuration is not available
Nhật ký:
gres: gpu state for job 83
gres_cnt:4 node_cnt:0 type:(null)
_pick_best_nodes: job 83 never runnable
_slurm_rpc_allocate_resources: Requested node configuration is not available
Chạy việc --gres=gram:500
không hoàn thành
srun -n1 --gres=gram:500 test.sh
Tuy nhiên, nếu tôi gọi , công việc sẽ chạy và in
CUDA_VISIBLE_DEVICES=NoDevFiles
Nhật ký:
sched: _slurm_rpc_allocate_resources JobId=76 NodeList=smurf01 usec=193
debug: Configuration for job 76 complete
debug: laying out the 1 tasks on 1 hosts smurf01 dist 1
job_complete: JobID=76 State=0x1 NodeCnt=1 WIFEXITED 1 WEXITSTATUS 0
job_complete: JobID=76 State=0x8003 NodeCnt=1 done
Do đó, slurm dường như được cấu hình chính xác để chạy các công việc sử dụng srun
với các tài nguyên chung được yêu cầu bằng cách sử dụng --gres
nhưng không nhận ra gpus vì một số lý do.
Ý tưởng đầu tiên của tôi là sử dụng một tên khác cho tài nguyên chung gpu vì các tài nguyên chung khác dường như hoạt động nhưng tôi muốn bám vào plugin gpu.
Cấu hình
Cụm có nhiều hơn hai máy chủ nô lệ nhưng để rõ ràng, tôi sẽ sử dụng hai máy chủ nô lệ được cấu hình hơi khác nhau và máy chủ bộ điều khiển: papa (bộ điều khiển), smurf01 và smurf02.
slurm.conf
Các phần có liên quan đến tổng quát của cấu hình bùn:
...
TaskPlugin=task/cgroup
...
GresTypes=gpu,ram,gram,scratch
...
NodeName=smurf01 NodeAddr=192.168.1.101 Feature="intel,fermi" Boards=1 SocketsPerBoard=2 CoresPerSocket=6 ThreadsPerCore=2 Gres=gpu:tesla:8,ram:48,gram:no_consume:6000,scratch:1300
NodeName=smurf02 NodeAddr=192.168.1.102 Feature="intel,fermi" Boards=1 SocketsPerBoard=2 CoresPerSocket=6 ThreadsPerCore=1 Gres=gpu:tesla:8,ram:48,gram:no_consume:6000,scratch:1300
...
Lưu ý: ram tính bằng GB, gram tính bằng MB và cào lại bằng GB.
Đầu ra của scontrol show node
NodeName=smurf01 Arch=x86_64 CoresPerSocket=6
CPUAlloc=0 CPUErr=0 CPUTot=24 CPULoad=0.01 Features=intel,fermi
Gres=gpu:tesla:8,ram:48,gram:no_consume:6000,scratch:1300
NodeAddr=192.168.1.101 NodeHostName=smurf01 Version=14.11
OS=Linux RealMemory=1 AllocMem=0 Sockets=2 Boards=1
State=IDLE ThreadsPerCore=2 TmpDisk=0 Weight=1
BootTime=2015-04-23T13:58:15 SlurmdStartTime=2015-04-24T10:30:46
CurrentWatts=0 LowestJoules=0 ConsumedJoules=0
ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
NodeName=smurf02 Arch=x86_64 CoresPerSocket=6
CPUAlloc=0 CPUErr=0 CPUTot=12 CPULoad=0.01 Features=intel,fermi
Gres=gpu:tesla:8,ram:48,gram:no_consume:6000,scratch:1300
NodeAddr=192.168.1.102 NodeHostName=smurf02 Version=14.11
OS=Linux RealMemory=1 AllocMem=0 Sockets=2 Boards=1
State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=1
BootTime=2015-04-23T13:57:56 SlurmdStartTime=2015-04-24T10:24:12
CurrentWatts=0 LowestJoules=0 ConsumedJoules=0
ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
cấu hình smurf01
GPU
> ls /dev | grep nvidia
nvidia0
...
nvidia7
> nvidia-smi | grep Tesla
| 0 Tesla M2090 On | 0000:08:00.0 Off | 0 |
...
| 7 Tesla M2090 On | 0000:1B:00.0 Off | 0 |
...
gres.conf
Name=gpu Type=tesla File=/dev/nvidia0 CPUs=0
Name=gpu Type=tesla File=/dev/nvidia1 CPUs=1
Name=gpu Type=tesla File=/dev/nvidia2 CPUs=2
Name=gpu Type=tesla File=/dev/nvidia3 CPUs=3
Name=gpu Type=tesla File=/dev/nvidia4 CPUs=4
Name=gpu Type=tesla File=/dev/nvidia5 CPUs=5
Name=gpu Type=tesla File=/dev/nvidia6 CPUs=6
Name=gpu Type=tesla File=/dev/nvidia7 CPUs=7
Name=ram Count=48
Name=gram Count=6000
Name=scratch Count=1300
cấu hình smurf02
GPU
Cấu hình / đầu ra tương tự như smurf01.
gres.conf trên smurf02
Name=gpu Count=8 Type=tesla File=/dev/nvidia[0-7]
Name=ram Count=48
Name=gram Count=6000
Name=scratch Count=1300
Lưu ý: Các deamon đã được khởi động lại, các máy cũng đã được khởi động lại. Người sử dụng bùn và công việc gửi công việc có cùng id / nhóm trên các nút nô lệ và trình điều khiển và xác thực munge đang hoạt động đúng.
Nhật ký đầu ra
Tôi đã thêm DebugFlags=Gres
vào tệp slurm.conf và GPU dường như được Plugin nhận ra:
Nhật ký điều khiển
gres / gpu: state for smurf01
gres_cnt found : 8 configured : 8 avail : 8 alloc : 0
gres_bit_alloc :
gres_used : (null)
topo_cpus_bitmap[0] : 0
topo_gres_bitmap[0] : 0
topo_gres_cnt_alloc[0] : 0
topo_gres_cnt_avail[0] : 1
type[0] : tesla
topo_cpus_bitmap[1] : 1
topo_gres_bitmap[1] : 1
topo_gres_cnt_alloc[1] : 0
topo_gres_cnt_avail[1] : 1
type[1] : tesla
topo_cpus_bitmap[2] : 2
topo_gres_bitmap[2] : 2
topo_gres_cnt_alloc[2] : 0
topo_gres_cnt_avail[2] : 1
type[2] : tesla
topo_cpus_bitmap[3] : 3
topo_gres_bitmap[3] : 3
topo_gres_cnt_alloc[3] : 0
topo_gres_cnt_avail[3] : 1
type[3] : tesla
topo_cpus_bitmap[4] : 4
topo_gres_bitmap[4] : 4
topo_gres_cnt_alloc[4] : 0
topo_gres_cnt_avail[4] : 1
type[4] : tesla
topo_cpus_bitmap[5] : 5
topo_gres_bitmap[5] : 5
topo_gres_cnt_alloc[5] : 0
topo_gres_cnt_avail[5] : 1
type[5] : tesla
topo_cpus_bitmap[6] : 6
topo_gres_bitmap[6] : 6
topo_gres_cnt_alloc[6] : 0
topo_gres_cnt_avail[6] : 1
type[6] : tesla
topo_cpus_bitmap[7] : 7
topo_gres_bitmap[7] : 7
topo_gres_cnt_alloc[7] : 0
topo_gres_cnt_avail[7] : 1
type[7] : tesla
type_cnt_alloc[0] : 0
type_cnt_avail[0] : 8
type[0] : tesla
...
gres/gpu: state for smurf02
gres_cnt found:TBD configured:8 avail:8 alloc:0
gres_bit_alloc:
gres_used:(null)
type_cnt_alloc[0]:0
type_cnt_avail[0]:8
type[0]:tesla
Nhật ký nô lệ
Gres Name = gpu Type = tesla Count = 8 ID = 7696487 File = / dev / nvidia[0 - 7]
...
gpu 0 is device number 0
gpu 1 is device number 1
gpu 2 is device number 2
gpu 3 is device number 3
gpu 4 is device number 4
gpu 5 is device number 5
gpu 6 is device number 6
gpu 7 is device number 7
--gres=gpu:tesla:1
?