مفاهیم و منابع Slurm¶
Slurm سیستم مدیریت صف و منابع محاسباتی کلاستر است. وقتی برنامهای را با Slurm اجرا میکنید، در واقع به سامانه میگویید چه مقدار CPU، حافظه، زمان و نوع صف نیاز دارید. سپس Slurm بر اساس وضعیت کلاستر، Job شما را روی یک نود مناسب اجرا میکند.
چرا از Slurm استفاده میکنیم؟¶
JupyterLab برای کار تعاملی، تست کد و تحلیل مناسب است؛ اما اجرای سنگین و طولانی داخل JupyterLab ممکن است باعث کندی، قطع Session یا مصرف نامناسب منابع شود. Slurm کمک میکند اجرای محاسبات قابل پیگیری، منظم و منصفانه باشد.
| نوع کار | روش پیشنهادی |
|---|---|
| تست چند خط کد | JupyterLab یا Terminal |
| اجرای کوتاه آزمایشی | Slurm با منابع کم |
| اجرای چندساعته | Slurm |
| اجرای چندروزه | Slurm با Partition مناسب |
| اجرای چندین ورودی | Slurm Array Job |
| پردازش داده بزرگ | Slurm |
مفاهیم اصلی¶
| مفهوم | توضیح |
|---|---|
| Job | کاری که به Slurm ارسال میکنید |
| Job ID | شماره اختصاصی هر Job |
| Partition | صف اجرای Job، مثل short، normal، long |
| Node | سرور محاسباتی که Job روی آن اجرا میشود |
| CPU/Core | واحد پردازشی موردنیاز |
| Memory/RAM | حافظه موردنیاز |
| Walltime | حداکثر زمان مجاز اجرای Job |
| Account | حساب Slurm برای ثبت مصرف منابع |
Partitionهای رایج سامانه¶
| Partition | کاربرد |
|---|---|
short | تستهای کوتاه و سریع |
normal | اجرای عمومی و پیشفرض |
long | کارهای طولانیتر |
bigmem | کارهای نیازمند حافظه زیاد |
انتخاب ساده
برای بیشتر کاربران، شروع با normal مناسب است. برای تستهای خیلی کوتاه از short و برای کارهای طولانی از long استفاده کنید.
فرمت زمان¶
Slurm زمان را معمولاً به شکل ساعت، دقیقه و ثانیه یا روز-ساعت میگیرد.
| مثال | معنی |
|---|---|
00:10:00 | ده دقیقه |
02:00:00 | دو ساعت |
1-00:00:00 | یک روز |
7-00:00:00 | هفت روز |
تفاوت ntasks و cpus-per-task¶
برای بیشتر برنامههای ساده Python یا MATLAB، این حالت کافی است:
یعنی Job شما روی یک نود اجرا میشود، یک Task دارد و برای همان Task دو CPU رزرو میکند.
| گزینه | کاربرد |
|---|---|
--nodes | تعداد نودهای موردنیاز |
--ntasks | تعداد Task یا Process |
--cpus-per-task | تعداد CPU برای هر Task |
حافظه¶
حافظه را با --mem مشخص میکنید:
اگر حافظه کمتر از نیاز برنامه باشد، Job ممکن است با خطای حافظه متوقف شود. اگر حافظه خیلی زیاد درخواست کنید، ممکن است Job دیرتر وارد اجرا شود.
پیشنهاد اولیه برای منابع¶
| نوع کار | CPU | RAM | زمان |
|---|---|---|---|
| تست ساده | 1 | 1G تا 2G | 5 تا 15 دقیقه |
| تحلیل سبک | 2 | 2G تا 4G | 30 دقیقه تا 2 ساعت |
| تحلیل متوسط | 2 تا 4 | 4G تا 8G | چند ساعت |
| کار طولانی | 2 تا 4 | متناسب با داده | چند روز |
منابع زیاد همیشه بهتر نیست
اگر برنامه شما موازی نوشته نشده باشد، گرفتن CPU بیشتر الزاماً سرعت را زیاد نمیکند و فقط منابع کلاستر را اشغال میکند.