آزمایشگاه پردازش موازی دانشکدگان علوم دانشگاه تهران

راهنمای استفاده از سامانه



 

•   ارسال محاسبات  (qsub)

برای استفاده از نودهای محاسباتی ما بایستی آن را به صورت یک بسته کاری (فایل *.sh) به سامانه ( SGE (Sun Grid Engineارسال نمایید. بدین منظور ابتدا بایستی یک رابط ssh به client را دانلود و نصب نمایید. به عنوان نمونه می‌توانید از PuTTy استفاده کنید که آن را می‌توانید از این لینک دانلود نمایید.

   

اگر از خارج از دانشگاه می‌خواهید به سرور های ما متصل شوید، بایستی حتما از UTVPN استفاده کنید. اطلاعات تکمیلی در این خصوص را می‌توانید در این لینک ببینید. اعضای غیر دانشگاه تهران برای دریافت یوزر پسورد موقت دانشگاه تهران می‌توانند درخواست خود را به رایانامه utsciencelabs@gmail.com ارسال نمایند.

نرم افزار PuTTy را اجرا کرده و اطلاعات زیر را در آن وارد کنید. توصیه می‌شود برای دسترسی راحت تر بعدی این اتصال را ذخیره نمایید:

Host Name (or IP address): 172.16.48.252

Port: 22

 

پس از اتصال به client یوزر و پسورد خود را که بعد از ثبت نام دریافت کرده اید وارد کنید. برای ثبت نام می‌توانید به این لینک مراجعه کنید.

 

 

بایستی با دستورات زیر آشنا شوید:

qsub

 qstat

qdel

qhost

 qsh

برای استفاده سریع از راهنمای هر کدام از دستورات بالا آن دستور را به همراه -h اجرا کنید. به عنوان مثال:

qstat -h

در بخش‌های زیر تلاش داریم آشنایی مختصری با این دستورات ایجاد نماییم. برای اطلاعات بیشتر می‌توانید صفحه Son of Grid Engine را ببینید.

دستور qsub برای ارسال فایل های *.sh به سامانه است که به صورت کلی زیر اجرا می‌شود:

qsub -q queue.q [options] path/job.sh [ job_script_arguments ...]

در دستور بالا job.sh فایل shell script حاوی دستورات batch است که در ادامه نمونه‌هایی از آن‌ها را برایتان گذاشته‌ایم و path نیز مسیر این فایل در محل ذخیره سازی فایل‌های شما بر روی سرور است. در صورت استفاده از یک binary استفاده از qsub -b ضروری است. همچنین queue.q نام صفی است که قرار است کار شما به آن ارسال شود (درحال حاضر تنها یک صف gpu.q به صورت پیش‌فرض وجود دارد). شما می‌توانید لیست صف‌ها را با استفاده از qconf  مشاهده کنید. برای مطالعه بیشتر در خصوص دستور qsub راهنمای این دستور را ببینید. همچنین راهنمای دستور qconf را نیز مشاهده کنید.

پس از ارسال کار می‌توانید وضعیت آن را در صف با استفاده از دستور qstat مشاهده کنید. گزینه -f در این دستور به شما کمک می‌کند لیست کامل تمام صف‌ها و jobها را مشاهده کنید.

qstat -f

مطالب بیشتر در خصوص دستور qstat را می‌توانید در این لینک مطالعه کنید. برای حذف هر یک از کارهای ارسالی بایستی از دستور qdel به همراه شماره کار که از طریق qstat قابل مشاهده است استفاده نمایید. مطالب بیشتر در خصوص qdel را در این لینک مطالعه کنید.

شکل زیر مثالی از سه دستور qsub، qstat و qdel را نشان می‌دهد.

در حال حاضر تنها امکان پشتیبانی از Bash (bin/bash) فراهم است.  دو متد در حال حاضر برای استفاده از qsub به کار گرفته می‌شود:

روش اول: می توان به طور مستقیم option ها را در دستور qsub به صورت زیر وارد کرد:

qsub -q gpu.q -cwd -o output.dat -e error.dat job_script [ argument ... ]

روش دوم (توصیه شده): می‌توان optionها را در فایل *.sh وارد کرد.

qsub job_script [ argument ... ]

در این حالت optionها در فایل *.sh مانند مثال زیر آورده می‌شوند. خطوطی که با #$ آغاز می‌شوند به عنوان option به دستور qsub داده می‌شوند در حالی که جزو دستورات اصلی ارسال شده به نود محاسباتی محسوب نمی‌شوند. به عنوان نمونه فایل *.sh زیر معادل با دستور بیان شده در روش اول است (برای مطالعه بیشتر در خصوص دستور qsub راهنمای این دستور را ببینید).

******************************************************************

#!/bin/bash

#$ -q gpu.q

#$ -cwd

#$ -o output.dat

#$ -e error.dat

 ./your_commands

 

*****************************************************************

مت your commands می‌توانید دستورات خود را برای اجرای نرم افزار مورد نظر خودتان و یا نصب نرم افزارهای مورد نیاز در فضای ذخیره سازی خودتان بیاورید. نمونه‌های زیر مثال‌هایی از این دستورات هستند.

   اجرای یک فایل نرم افزار R

R CMD BATCH my_file.R

نصب یک پکیج  R در محل اختصاصی شما

R CMD INSTALL -l /home/user/Rpackagename.tar.gz

اجرای یک برنامه متلب به همراه گزارش زمان شروع و خاتمه برنامه

echo "Job started at `date`"

matlab my_file.m

echo "Job Ended at `date`"

اجرای یک برنامه پایتون

python python_script.py

برای دسترسی راحت تر به فایل‌های خود در ویندوز می‌توانید از نرم افزار WinSCP  استفاده کنید. این نرم افزار را می‌توانید از این لینک دانلود کنید. تصویر زیر نحوه ورود به نرم افزار را نشان‌ می‌دهد.

<>·راه‌های گوناگونی برای محاسبات موازی وجود دارد که در زیر مثال‌هایی را می‌آوریم.

 

Sequential jobs

qsub job_script

که در آن فایل job_script می‌تواند به صورت زیر باشد (در صورت کپی کردن و چسباندن مثال‌ها مراقب شکست خط ها و کاراکترهای خاص باشید): همچنین این مطلب را هم مطالعه کنید.

 

 

******************************************************************

#!/bin/bash
# Name your job. Unless you use the -o and -e options, output will
# go to a unique file name.ojob_id for each job.
#$ -N name
# Execute job in the queue "std.q" unless you have special requirements.
#$ -q std.q

# The SGE batch system uses the current directory as working directory.
# Both files (output.dat and error.dat) will be placed in the current
# directory. The batch system assumes to find the executable in this directory.
#$ -cwd

# Redirect output stream to this file.
#$ -o output.dat

# Redirect error stream to this file.
#$ -e error.dat

# Send status information to this email address.
#$ -M Karl.Mustermann@xxx.com

# Send an e-mail when the job is done.
#$ -m e

# For example an additional script file to be executed in the current
# working directory. In such a case assure that script.sh has
# execute permission (chmod +x script.sh).
./script.sh

*****************************************************************

 

Parallel MPI jobs

qsub job_script

که در آن فایل job_script می‌تواند به صورت زیر باشد (در صورت کپی کردن و چسباندن مثال‌ها مراقب شکست خط ها و کاراکترهای خاص باشید) همچنین می‌توانید این مطلب را مطالعه کنید.

******************************************************************

#!/bin/bash
# Execute job in the queue "std.q" unless you have special requirements.
#$ -q std.q

# The batch system should use the current directory as working directory.
#$ -cwd

# Name your job. Unless you use the -o and -e options, output will
# go to a unique file name.ojob_id for each job.
#$ -N name

# Redirect output stream to this file.
#$ -o output.dat

# Join the error stream to the output stream.
#$ -j yes

# Send status information to this email address.
#$ -M Karl.Mustermann@xxx.com

# Send me an e-mail when the job has finished.
#$ -m e
# Use the parallel environment "openmpi-fillup", which assigns as many processes
# as available on each host. If there are not enough machines to run the MPI job
# on the maximum of 16 cores, the batch system will gradually try to run the job
# on fewer cores, but not less than 8.
#$ -pe openmpi-fillup 8-16

mpirun -np $NSLOTS ./your_mpi_executable [extra arguments]

*****************************************************************

 

Parallel OpenMP jobs

qsub job_script

که در آن فایل job_script می‌تواند به صورت زیر باشد (در صورت کپی کردن و چسباندن مثال‌ها مراقب شکست خط ها و کاراکترهای خاص باشید). همچنین می‌توانید این مطلب را مطالعه کنید.

******************************************************************

#!/bin/bash
# Name your job. Unless you use the -o and -e options, output will
# go to a unique file name.ojob_id for each job.
#$ -N name

# Execute job in the queue "std.q" unless you have special requirements.
#$ -q std.q

# The batch system should use the current directory as working directory.
#$ -cwd

# Redirect output stream to this file.
#$ -o output.dat

# Join the error stream to the output stream.

#$ -j yes

# Send status information to this email address.
#$ -M Karl.Mustermann@xxx.com

# Send me an e-mail when the job has finished.
#$ -m e

# Use the parallel environment "openmp". If there are not enough free cpus on all
# of the system's machines to run the job on the maximum of 8 cores, the batch
# system will gradually try to run the job on fewer cores, but not less than 4.
#$ -pe openmp 4-8

export OMP_NUM_THREADS=$NSLOTS
./your_openmp_executable

*****************************************************************

ارسال برنامه‌های تعاملی interactive jobs (qsh)

ارسال کارهای تعاملی در شرایطی مفید است که یک برنامه به نوعی مداخله مستقیم نیاز دارد. این معمولاً برای برنامه های X-Windows یا در شرایطی که پردازش بیشتر به تفسیر شما از نتایج فوری بستگی دارد، صادق است. یک مثال معمولی برای هر دوی این موارد یک جلسه debugging گرافیکی است. تنها روشی که کلاستر ما از آن پشتیبانی می‌کند استفاده از دستور qsh است. برای مطالعه بیشتر این دستور می‌توانید این لینک را مطالعه کنید. می‌توان به صورت زیر دستور qsh را مجبور به خواندن optionها از یک فایل optionfile  کرد

 qsh -@ optionfile

این فایل می‌تواند شکلی مثل شکل زیر داشته باشد.

******************************************************************


# Select queue
-q std.q

# Name your job
-N my_name

# Export some of your current environment variables
-v var1[=val1],var2[=val2],...

# Use the current directory as working directory
-cwd

*****************************************************************


توجه کنید که استفاده از گزینه -now n برای اجرای qsh در کلاستر ضروری است، زیرا باعث می شود اجازه دهد که برنامه در صف انتظار قرار گیرد. توجه کنید که این گزینه برای qsub پیش فرض است ولی برای qsh اینگونه نیست.  

qsh -now n [...]

توجه کنید که برنامه های تعاملی خود را به محض آن که دیگر به آنها نیازی ندارید خودتان خاتمه دهید.

برای مطالعه بیشتر در خصوص تمامی مطالب فوق حتما از لینک‌های داده شده استفاده کرده و یا در اینترنت در خصوص هر یک از دستورات و یا مشکلات احتمالی جستجو نمایید.