দাবি অস্বীকার: আমি প্রাসঙ্গিক কনফিগারেশন সম্পর্কিত সমস্ত তথ্য সরবরাহ করার চেষ্টা করেছি বলে এই পোস্টটি বেশ দীর্ঘ।
স্থিতি এবং সমস্যা:
আমি একটি জিপিইউ ক্লাস্টার প্রশাসক এবং আমি চাকরি পরিচালনার জন্য স্লর্ম ব্যবহার করতে চাই। দুর্ভাগ্যক্রমে, আমি স্লরমের সংশ্লিষ্ট জেনেরিক রিসোর্স প্লাগইন ব্যবহার করে জিপিইউগুলিকে অনুরোধ করতে পারি না।
দ্রষ্টব্য: পরীক্ষা.শ হ'ল একটি ছোট স্ক্রিপ্ট যা পরিবেশগত পরিবর্তনশীল CUDA_VISIBLE_DEVICES মুদ্রণ করে।
দিয়ে কাজ চালানো শেষ --gres=gpu:1
হয় না
srun -n1 --gres=gpu:1 test.sh
নিম্নলিখিত ত্রুটিতে চলমান ফলাফল:
srun: error: Unable to allocate resources: Requested node configuration is not available
লগইন করুন:
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
সাথে কাজ চালানো --gres=gram:500
সম্পূর্ণ হয়
আমি যদি ফোন করি srun -n1 --gres=gram:500 test.sh
তবে চাকরীটি চলে এবং প্রিন্ট করে
CUDA_VISIBLE_DEVICES=NoDevFiles
লগইন করুন:
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
এইভাবে স্লর্মটি srun
অনুরোধ করা জেনেরিক রিসোর্সগুলি ব্যবহার করে কাজ চালানোর জন্য সঠিকভাবে কনফিগার করা হয়েছে বলে মনে হয় --gres
তবে কোনও কারণে জিপিএসকে স্বীকৃতি দেয় না।
আমার প্রথম ধারণাটি ছিল জিপিইউ জেনেরিক রিসোর্সের জন্য অন্য নামটি ব্যবহার করা যেমন অন্যান্য জেনেরিক সংস্থানগুলি কাজ করে বলে মনে হয় তবে আমি জিপিইউ প্লাগইন ধরে রাখতে চাই।
কনফিগারেশন
এই ক্লাস্টারে দুটিরও বেশি ক্রীতদাস হোস্ট রয়েছে তবে স্বচ্ছতার জন্য আমি দুটি আলাদাভাবে কনফিগার করা দুটি ক্রীতদাস হোস্ট এবং নিয়ামক হোস্টকে আটকে রাখব: প্যাপা (নিয়ামক), স্মুরফ01 এবং স্মুরফ02.´
slurm.conf
স্লর্ম কনফিগারেশনের জেনেরিক-রিসোর্স-প্রাসঙ্গিক অংশগুলি:
...
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
...
দ্রষ্টব্য: র্যাম জিবিতে, গ্রাম এমবিতে এবং আবার জিবিতে স্ক্র্যাচ।
আউটপুট 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
smurf01 কনফিগারেশন
জিপিইউ
> 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
smurf02 কনফিগারেশন
জিপিইউ
স্মুরফ01 হিসাবে একই কনফিগারেশন / আউটপুট।
স্মারফ02 এ gres.conf
Name=gpu Count=8 Type=tesla File=/dev/nvidia[0-7]
Name=ram Count=48
Name=gram Count=6000
Name=scratch Count=1300
দ্রষ্টব্য: ডিমনগুলি পুনরায় চালু করা হয়েছে, মেশিনগুলি পুনরায় বুট করা হয়েছে। স্লর্ম এবং জব জমা দেওয়ার ব্যবহারকারীর স্লেভ এবং কন্ট্রোলার নোডগুলিতে একই আইডি / গ্রুপ রয়েছে এবং মুং প্রমাণীকরণ সঠিকভাবে কাজ করছে।
লগ আউটপুট
আমি DebugFlags=Gres
slurm.conf ফাইলে যুক্ত করেছি এবং GPU গুলি প্লাগইন দ্বারা স্বীকৃত বলে মনে হচ্ছে:
নিয়ামক লগ
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
স্লেভ লগ
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
?