Tại sao yêu cầu GPU làm tài nguyên chung trên cụm chạy SLURM với plugin tích hợp không thành công?


10

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:1không hoàn thành

Chạy srun -n1 --gres=gpu:1 test.shkế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:500không hoàn thành

srun -n1 --gres=gram:500 test.shTuy 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 srunvới các tài nguyên chung được yêu cầu bằng cách sử dụng --gresnhư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=Gresvà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

Điều gì xảy ra nếu bạn yêu cầu --gres=gpu:tesla:1?
NNWizard

@NMWizard Giống như không có loại được chỉ định.
Pixool

Câu trả lời:


1

Slurm trong Phiên bản ( 14.11.5) đã cài đặt dường như có vấn đề với các loại được gán cho GPU do loại bỏ Type=...khỏi gres.confvà thay đổi các dòng cấu hình nút tương ứng (để Gres=gpu:N,ram:...) dẫn đến thực hiện thành công các công việc yêu cầu gpus thông qua --gres=gpu:N.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.