L20 · 20 دقيقة
Slurm وتقديم الوظائف
مورد، زمن، مسار.
أهداف التعلّم
- كتابة طلب وظيفة مفاهيمي: اسم، زمن، GPU، مسار العمل.
- تتبع الوظائف دون قتل وظائف الآخرين.
- حفظ رقم الوظيفة مع hash البروتوكول.
الجدولة جزء من المنهج
Slurm يوزّع وظائف العنقود. تطلب موارد: زمن جدار، عدد المهام، GPUs. الطلب الخيالي يُؤجَّل؛ الطلب الصادق يُشغَّل. السكربت يحمّل modules، ينتقل إلى الدليل، يشغّل mdrun، ويكتب إلى مسار تحت مشروعك لا /tmp الممسوح.
#SBATCH --job-name=md-ligA #SBATCH --time=24:00:00 #SBATCH --ntasks=1 #SBATCH --cpus-per-task=8 #SBATCH --gres=gpu:1
الغرض: ترويسة مفاهيمية شائعة لوظيفة GPU واحدة — الأسماء الدقيقة للقسم قد تختلف.
المُدخل: ملف سكربت يُقدَّم بـ sbatch.
المُخرج: رقم وظيفة من المجدول.
المعنى: --time زمن جدار لا زمن فيزيائي للمحاكاة. إن لم تكفِ تُقتل الوظيفة.
أخطاء شائعة: gres غير مسموح في القسم؛ أو طلب GPU دون أن يفهمه المحرك فينتظر إلى الأبد.
sbatch run.slurm && squeue -u $USER
الغرض: تقديم الوظيفة ومشاهدة جدولك.
المُدخل: سكربت صالح في الدليل الصحيح.
المُخرج: معرف وظيفة ثم صف في الطابور.
المعنى: PD انتظار، R تشغيل، CG إنهاء. تعلم رموز موقعك.
أخطاء شائعة: Invalid account أو partition — مشكلة سياسة لا فيزياء.
لماذا؟ — لماذا يُذكر رقم الوظيفة في دفتر المختبر؟
لربط الأرقام في الورقة بسجل العنقود: أي عقدة، أي زمن، أي ملف خرج، وأي إيداع Git.
ماذا لو؟ — ماذا لو طلبت 7 أيام لمسار 10 ns ينتهي في ساعتين؟
تُعاقب أولوية الطابور في كثير من المواقع. قِس ns/day أولاً واطلب هامشاً معقولاً لا خيالاً.
تمرين
اكتب أربعة أسطر ترويسة لثلاث نُسخ كوظائف منفصلة (مفهوماً) ولماذا منفصلة.
مواضيع مرتبطة