در صف قرار دادن برنامه

شما برای اجرای برنامه مورد نظر، ابتدا باید آن را در صف قرار دهید. نرم‌افزار PBS Torque برای اینکار در نظر گرفته شده است. ابتدا اسکریپت مورد نظرتان را می‌سازید که نمونه این فایل‌ها را می‌توانید از اینجا دانلود کنید. در فایل job-script.sh ، دستورات مرتبط با در صف قرار دادن و اجرای برنامه مورد نظرتان وجود دارد. شما باید فایل اسکریپت را کنار فایل اجرایی قرار دهید. با دستور

chmod +x job-script.sh

فایل اسکریپت job-script.sh را قابل اجرا در لینوکس کنید. سپس با دستور

qsub job-script.sh

برنامه‌‌تان را در صف قرار می‌دهید. برای فهمیدن وضعیت برنامه، از دستور qstat استفاده کنید.
وضعیت R بیانگر در حال اجرا، وضعیت C بیانگر کنسل یا اتمام برنامه، وضعیت Q بیانگر این است که برنامه در صف قرار دارد.
به منظور قطع برنامه، از دستور

qdel <jobid>

استفاده می‌کنیم که <jobid>، شماره برنامه شما است که در دستور qstat مشخص می‌شود. نمونه این دستورات در فایل قرار دارد.

 

نمونه فایل PBS

نمونه دستورات PBS را در اینجا توضیح می‌دهیم. فایل job-scropt.sh شامل دستورات زیر است:

#!/bin/bash

### Job name
#PBS -N XnameX
### Keep Output and Error
#PBS -j eo
### Specify the number of nodes and thread (ppn) for your job.
#PBS -l nodes=1:ppn=1
### Tell PBS the anticipated run-time for your job, where walltime=HH:MM:SS.
#PBS -l walltime=XhrsX:XmnsX:XscsX
### Tell PBS the anticipated cpu-time for your job, where cput=HH:MM:SS
#PBS -l cput=XhrsX:XmnsX:XscsX
### To send email when the job is completed:

#PBS -m abe
### #PBS -M This email address is being protected from spambots. You need JavaScript enabled to view it.
#################################
### Switch to the working directory;
cd $PBS_O_WORKDIR
### Run:
XcommandX
echo 'done'

 

 

مفسر شل، خط‌هایی که با هشتک (#) شروع می‌شوند را به عنوان دستور شل (shell) در نظر نمی‌گیرد. و کاربر آن را برای توضیحات وارد اسکریپت خود می‌کند. این دستورات با رنگ سبز مشخص شده‌اند. البته خط اول یعنی دستور (#!/bin/bash ) ، دستور خاصی است که بیان می‌کند که برنامه bash به عنوان مفسر دستورات شل درنظر گرفته شود.
مفسر شل، تمام خطوطی که با دستور PBS# شروع می‌شوند (متن‌های خاکستری رنگ)، به عنوان دستورات PBS در نظر گرفته و بقیه خطوط (متن‌های مشکی‌رنگ) را به عنوان دستورات شل به‌حساب می‌آورد.
 
* نام برنامه اجرایی در سیستم صف را مشخص می‌کند که XnameX نام مورد نظر شماست:
#PBS -N XnameX
 
* خروجی کنسول و خطاهای برنامه را در فایلی به نام XnameX.eo خواهد ریخت:
#PBS -j eo
 
* دستورزیر، تعداد ندها (nodes) و تعداد پردازشگر هر ند (ppn) را برابر ۱ قرار می‌دهد. برای کارهای سریال این مقادیر حتما باید ۱ باشد. [ برای کارهای موازی این مقادیر را باید تغییر دهید (نمونه آن در فایل job-script-multy-thread.sh قرار دارد). ماکزیمم مقدار nodes برابر ۵ و ماکزیمم تعداد پردازشگر هر ند یعنی ppn برابر ۴۰ می‌تواند باشد ].
#PBS -l nodes=1:ppn=1
 
* زمان تخمینی اجرای برنامه که به ساعت:دقیقه‌:ثانیه است. هرچه مقدار آن کمتر باشد، نرم‌افزار صف‌ و زمان‌بندی، برنامه شما را در الویت اجرا قرار می‌دهد:
#PBS -l walltime=XhrsX:XmnsX:XscsX
* اگر برنامه شما سریال باشد، مقدار cput دقیقا همان مقدار walltime خواهد بود:
#PBS -l cput=XhrsX:XmnsX:XscsX
اما اگر به طور مثال مقدار nodes را ۲ و مقدار ppn را ۲۰ انتخاب کنید، مقدار cput را باید ۴۰ برابر مقدار walltime قرار دهید.
 
* اگر برنامه شما به هر دلیلی به اتمام برسد، به ایمیل شما در سرور، پیامی فرستاده می‌شود: علامت a بیانگر abort ، علامت e بیانگر end و علامت b بیانگر begin است. در این مورد در لحظه شروع (b) یا لحظه اتمام برنامه (end) و یا خروج برنامه (a)، پیغامی برای شما فرستاده می‌شود:
#PBS -m abe
* بیانگر آدرس ایمیل خارجی شما است که در حال حاضر، امکان فرستادن پیام به آدرس ایمیل خارج سرور فراهم نیست. لذا ما آن را به صورت توضیحات درآورده ایم:
#PBS -M This email address is being protected from spambots. You need JavaScript enabled to view it.
 
از این به بعد دستوران شل را توضیح می‌دهیم. توجه کنید دستورات شل حتما باید بعد از دستورات PBS قرار گیرند، در غیر اینصورت، اثری نخواهند داشت. دستور زیر باعث می‌شود که مسیر فایل‌های خروجی برنامه شما در دایرکتوی فعلی باشد. 
cd $PBS_O_WORKDIR
 
* در واقع دستور اجرای برنامه شماست. به طور مثال اگر، فایل اجرایی برنامه شما a.out باشد، بجای XcommandX باید ./a.out تایپ کنید.
XcommandX
* اگر برنامه شما به طور موازی و از چندین پردازشگر استفاده کند، آنگاه بجای دستور پیشین، دستور زیر در اسکریپ شما قرار می‌گیرد:
mpirun  -np Xtotal_threadsX XcommandX
که Xtotal_threadsX ، تعداد کل پردازشگرهاست (حاصل‌ضرب تعداد ندها در تعداد پردازشگرهای هر ند).