Μετάβαση στο περιεχόμενο

Σειριακές Εργασίες

Υποβολή σειριακής εργασίας

Το παρακάτω batch script (έστω serial-nefeli) αποτελεί ένα παράδειγμα μιας απλής σειριακής εργασίας, η οποία τυπώνει το όνομα του κόμβου στον οποίο δρομολογήθηκε, «κοιμάται» για 60 δευτερόλεπτα και στη συνέχεια ενημερώνει για την ολοκλήρωσή της.

Παράδειγμα

#!/bin/bash
#SBATCH --job-name=serial-job-nefeli      
#SBATCH --time=00:05:00                # Run time (days-hh:mm:ss) - (max 7days)      
#SBATCH --partition=highcpu            # Submit to queue/partition named highcpu
#SBATCH --ntasks=1                   

echo "Job started on $(hostname)"
sleep 60

echo "Job finished after 60 seconds!"

Δημιουργούμε το αρχείο serial-nefeli.sh με το παραπάνω περιεχόμενο ή μεταφέρουμε το αρχείο από τον υπολογιστή μας με την εντολή gcloud compute scp.

Μεταφορά αρχείων στη συστοιχία

  gcloud beta compute scp --recurse <directory-name> nefeli-slurm-login-001:/home/<username>

Δημιουργία αρχείου

Για τη δημιουργία ενός αρχείου μπορούμε να χρησιμοποιήσουμε έναν text editor (π.χ. Vim). Για περισσότερες πληροφορίες σχετικά με τη λειτουργία τους, συμβουλευτείτε την ενότητα text editors.

Οι γραμμές που ξεκινούν με #SBATCH αποτελούν τις οδηγίες (directives) για τη δρομολόγηση εργασιών στην υπολογιστική συστοιχία.

Partition υψηλής μνήμης

highmem partition

Για την εκτέλεση εργασιών υψηλής μνήμης (>210GB), ορίζουμε το partition σε highmem και δεσμεύουμε τους απαραίτητους πόρους ως εξής:

   SBATCH --partition=highmem
   SBATCH --mem=500GB

Παράμετροι Slurm

Περισσότερες επιλογές υπάρχουν στην ενότητα Παράμετροι Slurm. Επίσης, μπορείτε να συμβουλευτείτε το man page (manual) της εντολής sbatch, χρησιμοποιώντας την εντολή:

  man sbatch

Για να υποβάλουμε την εργασία, τρέχουμε την παρακάτω εντολή από το directory στο οποίο βρίσκεται το serial-nefeli.sh:

Terminal Output

  sbatch serial-nefeli.sh
  Submitted batch job 279

Παρακολούθηση εξέλιξης εργασίας

Εφόσον η προηγούμενη εντολή έχει εκτελεστεί σωστά, επιστρέφει ένα μοναδικό αναγνωριστικό (JOB_ID) της εργασίας που υποβλήθηκε. Στη συγκεκριμένη περίπτωση είναι το 279.

Μπορείτε να παρακολουθείτε την εξέλιξη της εργασίας μέσω των αρχείων εξόδου που παράγονται απευθείας στον φάκελο από όπου την υποβάλατε, με την παρακάτω εντολή, αντικαθιστώντας το σωστό JOB_ID. Για να διακόψετε την εντολή, πληκτρολογείστε Ctrl+C.

  tail -f slurm-279.out

Terminal Output

  Job started on nefeli-highcpunodeset-0
  Job finished after 60 seconds!

'Ελεγχος status εργασίας

Για να ελέγξουμε το status στο οποίο βρίσκεται μία εργασία που έχουμε υποβάλει στην υπολογιστική συστοιχία, χρησιμοποιούμε την εντολή squeue. Το παρακάτω είναι ένα παράδειγμα της εξόδου που δίνει η εντολή squeue.

Terminal output

squeue
         JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
           227   highcpu TestJob TestUser PD       0:00      1 (Resources)
           226   highcpu TestJob TestUser  R 1-01:42:34      1 nefeli-highcpunodeset-2
           225   highcpu TestJob TestUser  R 1-04:03:40      1 nefeli-highcpunodeset-1
           232   highcpu TestJob TestUser  R 1-07:40:49      1 nefeli-highcpunodeset-4
           231   highcpu TestJob TestUser  R 1-08:58:07      1 nefeli-highcpunodeset-0
           230   highcpu TestJob TestUser  R 1-09:02:16      1 nefeli-highcpunodeset-3
           229   highcpu TestJob TestUser  R 1-14:06:13      1 nefeli-highcpunodeset-6
           228   highcpu TestJob TestUser  R 1-14:21:23      1 nefeli-highcpunodeset-5

State Examples

Το state της εργασίας (στήλη ST) είναι, συνήθως, ένα από τα παρακάτω:

  • R : RUNNING - Job currently has an allocation
  • PD: PENDING - Job is awaiting resource allocation
  • S : SUSPENDED - Job has an allocation, but execution has been suspended and CPUs have been released for other jobs
  • CG: COMPLETING - Job is in the process of completing. Some processes on some nodes may still be active
  • CD: COMPLETED - Job has terminated all processes on all nodes with an exit code of zero

Ακύρωση εργασίας

Για να ακυρώσουμε την εκτέλεση μίας εργασίας, χρησιμοποιούμε την εντολή scancel σε συνδυασμό με το JOB_ID ή με το JOB_NAME της εργασίας που θέλουμε να ακυρώσουμε.

Παράδειγμα

  scancel 279              # ακυρώνει τα jobs με JOB_ID=279
  scancel -n TestJob        # ακυρώνει τα jobs με JOB_NAME=TestJob
  scancel -u TestUser       # ακυρώνει τα jobs που έχει υποβάλλει ο χρήστης TestUser