sbatch(1) Slurm Commands sbatch(1) نام (NAME) sbatch - ارسال یک اسکریپت دسته‌ای به Slurm. خلاصه دستور (SYNOPSIS) sbatch [OPTIONS(0)...] [ : [OPTIONS(N)...]] script(0) [args(0)...] گزینه(ها) چندین کار را در یک کار ناهمگن زمان‌بندی‌شده به‌طور هم‌زمان تعریف می‌کنند. برای جزئیات بیشتر درباره کارهای ناهمگن، سند زیر را ببینید: https://slurm.schedmd.com/heterogeneous_jobs.html توضیحات (DESCRIPTION) دستور sbatch یک اسکریپت دسته‌ای (batch script) را به Slurm ارسال می‌کند. اسکریپت دسته‌ای می‌تواند از طریق نام فایل در خط فرمان به sbatch داده شود، یا اگر نام فایلی مشخص نشده باشد، sbatch اسکریپت را از ورودی استاندارد می‌خواند. اسکریپت دسته‌ای ممکن است شامل یک یا چند خط باشد که با "#SBATCH" شروع شده و به دنبال آن هر یک از گزینه‌های خط فرمان که در این صفحه مستند شده‌اند قرار گیرند. دستورالعمل‌های #SBATCH مستقیماً توسط Slurm خوانده می‌شوند، بنابراین نحو مخصوص شل از جمله نام متغیرها به عنوان متن لفظی (literal) خوانده خواهد شد. هنگامی که به اولین خط غیرتوضیحی و غیرخالی در اسکریپت برسد، دیگر هیچ دستورالعمل #SBATCH پردازش نخواهد شد. مثال زیر را ببینید. دستور sbatch بلافاصله پس از انتقال موفقیت‌آمیز اسکریپت به کنترلر Slurm و اختصاص یک شناسه کار (job ID) به آن، خارج می‌شود. لزوماً منابع به سرعت به اسکریپت دسته‌ای اختصاص داده نمی‌شوند؛ ممکن است پیش از اینکه منابع مورد نیازش در دسترس قرار گیرند، مدتی در صف کارهای معلق بماند. به‌طور پیش‌فرض، هر دو خروجی استاندارد و خطای استاندارد به فایلی به نام "slurm-%j.out" هدایت می‌شوند، که در آن "%j" با شماره تخصیص کار جایگزین می‌شود. این فایل روی اولین گرهِ تخصیص کار ایجاد خواهد شد. به غیر از خود اسکریپت دسته‌ای، Slurm هیچ‌گونه جابه‌جایی برای فایل‌های کاربر انجام نمی‌دهد. هنگامی که تخصیص منابع برای کار دسته‌ای اعطا شد، Slurm یک نسخه منفرد از اسکریپت دسته‌ای را روی یکی از گره‌های تخصیص‌یافته اجرا می‌کند. میزبان دسته‌ای (batch host) معمولاً اولین گره در تخصیص است، اما به دلیل گزینه --batch ممکن است در جای دیگری قرار گیرد. سند زیر تأثیر گزینه‌های مختلف بر تخصیص پردازنده‌ها (CPUs) به کارها و وظایف را شرح می‌دهد: https://slurm.schedmd.com/cpu_management.html مقدار بازگشتی (RETURN VALUE) دستور sbatch در صورت موفقیت مقدار 0 یا در صورت شکست کد خطا را برمی‌گرداند. تفکیک مسیر اسکریپت (SCRIPT PATH RESOLUTION) مسیر اسکریپت دسته‌ای به ترتیب زیر تفکیک می‌شود: 1. اگر اسکریپت با "." شروع شود، مسیر به این صورت ساخته می‌شود: دایرکتوری کاری فعلی / script 2. اگر اسکریپت با "/" شروع شود، مسیر مطلق در نظر گرفته می‌شود. 3. اگر اسکریپت در دایرکتوری کاری جاری باشد. 4. اگر اسکریپت از طریق PATH قابل تفکیک باشد. path_resolution(7) را ببینید. دایرکتوری کاری جاری همان دایرکتوری کاری فرایند فراخواننده است، مگر اینکه آرگومان --chdir ارسال شده باشد، که دایرکتوری کاری جاری را بازنویسی خواهد کرد. گزینه‌ها (OPTIONS) -A, --account= منابع استفاده‌شده توسط این کار را به حساب مشخص‌شده شارژ می‌کند. account یک رشته دلخواه است. نام حساب می‌تواند پس از ارسال کار با استفاده از دستور scontrol تغییر یابد. --acctg-freq==[,=...] فواصل نمونه‌برداری حسابداری کار و پروفایل‌سازی را به ثانیه تعیین می‌کند. این گزینه می‌تواند برای بازنویسی پارامتر JobAcctGatherFrequency در فایل slurm.conf استفاده شود. = فاصله نمونه‌برداری وظیفه را برای پلاگین jobacct_gather یا فاصله نمونه‌برداری را برای یک نوع پروفایل‌سازی توسط پلاگین acct_gather_profile مشخص می‌کند. چندین جفت = جداشده با کاما می‌توانند مشخص شوند. مقادیر پشتیبانی‌شده برای datatype عبارتند از: task فاصله نمونه‌برداری برای پلاگین‌های jobacct_gather و برای پروفایل‌سازی وظیفه توسط پلاگین acct_gather_profile. نکته: این بسامد برای پایش مصرف حافظه استفاده می‌شود. در صورت اعمال محدودیت‌های حافظه، بالاترین بسامدی که کاربر می‌تواند درخواست کند همان است که در فایل slurm.conf پیکربندی شده است. این مقدار را نمی‌توان غیرفعال کرد. energy فاصله نمونه‌برداری برای پروفایل‌سازی مصرف انرژی با استفاده از پلاگین acct_gather_energy. network فاصله نمونه‌برداری برای پروفایل‌سازی infiniband با استفاده از پلاگین acct_gather_interconnect. filesystem فاصله نمونه‌برداری برای پروفایل‌سازی سیستم‌فایل با استفاده از پلاگین acct_gather_filesystem. مقدار پیش‌فرض برای فاصله نمونه‌برداری وظیفه ۳۰ ثانیه است. مقدار پیش‌فرض برای تمام فاصله‌های دیگر 0 است. فاصله 0 نمونه‌برداری از نوع مشخص‌شده را غیرفعال می‌کند. اگر فاصله نمونه‌برداری وظیفه 0 باشد، اطلاعات حسابداری تنها هنگام پایان کار جمع‌آوری می‌شود (که تداخل Slurm با کار را کاهش می‌دهد). مقادیر کوچک‌تر (غیر صفر) تأثیر بیشتری بر عملکرد کار دارند، اما مقدار ۳۰ ثانیه بعید است برای برنامه‌هایی با کمتر از 10,000 وظیفه محسوس باشد. -a, --array= ارسال یک آرایه کار (job array)؛ چندین کار که با پارامترهای یکسان اجرا می‌شوند. مشخصه indexes تعیین می‌کند که چه مقادیری برای اندیس آرایه باید استفاده شود. مقادیر متعدد می‌توانند با استفاده از یک فهرست جداشده با کاما و/یا بازه‌ای از مقادیر با جداکننده "-" مشخص شوند. برای مثال، "--array=0-15" یا "--array=0,6,16-32". یک تابع گام نیز می‌تواند با یک پسوند شامل دونقطه و یک عدد مشخص شود. برای مثال، "--array=0-15:4" معادل با "--array=0,4,8,12" است. حداکثر تعداد وظایف هم‌زمان در حال اجرا از این آرایه کار را می‌توان با استفاده از جداکننده "%" مشخص کرد. برای مثال "--array=0-15%4" تعداد وظایف هم‌زمان در حال اجرا از این آرایه کار را به ۴ محدود می‌کند. حداقل مقدار اندیس 0 است. حداکثر مقدار یکی کمتر از پارامتر پیکربندی MaxArraySize است. نکته: در حال حاضر، آرایه‌های کار فدرال فقط روی کلاستر محلی اجرا می‌شوند. --batch= گره‌ها می‌توانند دارای features (ویژگی‌هایی) باشند که توسط مدیر Slurm به آن‌ها اختصاص یافته است. کاربران می‌توانند با استفاده از این گزینه مشخص کنند کدام‌یک از این features برای اسکریپت دسته‌ای آن‌ها مورد نیاز است. برای مثال تخصیص منابع یک کار ممکن است شامل هر دو گره Intel Haswell و KNL به ترتیب با ویژگی‌های "haswell" و "knl" باشد. در چنین پیکربندی، اسکریپت دسته‌ای معمولاً با اجرا روی یک گره سریع‌تر Haswell سودمندتر خواهد بود. این مورد با استفاده از گزینه "--batch=haswell" مشخص می‌شود. مشخصات می‌توانند شامل عملگرهای AND و OR با استفاده از جداکننده‌های امپرسند (&) و خط عمودی (|) باشند. برای مثال: "--batch=haswell|broadwell" یا "--batch=haswell|big_memory". آرگومان --batch باید زیرمجموعه‌ای از آرگومان --constraint= کار باشد (یعنی کار نمی‌تواند فقط گره‌های KNL را درخواست کند، اما اجرای اسکریپت را روی یک گره Haswell الزامی بداند). اگر درخواست از طریق منابع تخصیص‌یافته به کار قابل برآورده شدن نباشد، اسکریپت دسته‌ای روی اولین گرهِ تخصیص کار اجرا خواهد شد. --bb= مشخصات بافر انفجاری (burst buffer). قالب این مشخصات وابسته به سیستم است. همچنین --bbf را ببینید. هنگامی که گزینه --bb استفاده می‌شود، Slurm این گزینه را تجزیه کرده و یک فایل اسکریپت موقت بافر انفجاری ایجاد می‌کند که به صورت داخلی توسط پلاگین‌های بافر انفجاری استفاده می‌شود. برای اطلاعات بیشتر و مثال‌ها، راهنمای بافر انفجاری Slurm را ببینید: https://slurm.schedmd.com/burst_buffer.html --bbf= مسیر فایل حاوی مشخصات بافر انفجاری (burst buffer). قالب این مشخصات وابسته به سیستم است. این دستورالعمل‌های بافر انفجاری در اسکریپت دسته‌ای ارسال‌شده درج خواهند شد. برای اطلاعات بیشتر و مثال‌ها، راهنمای بافر انفجاری Slurm را ببینید: https://slurm.schedmd.com/burst_buffer.html -b, --begin=