Maslak sistemine iş vermek

UHeM sitesinden
Atla: kullan, ara


UHeM'e yeni alınan Maslak Kümesini kullanmak için kullanıcılarımız mlogin.uhem.itu.edu.tr makinasına ssh yapmalıdırlar.

Maslak Kümesi Donanım Bilgisi

Bu kümenin hesaplama sunucularının donanımları:

Makina Adı İşlemci Bilgisi Çekirdek Sayısı Hafıza Miktarı Özel Donanım Bu makinalarda

Çalışacak Kuyruklar

Sadece Bu Makinalarda

Çalışacak Kuyruk

mlogin (login node) Intel(R) Xeon(R) CPU

E5-2683 v3 @ 2.00GHz

28 64GB Nvidia GP-GPU

(Tesla K20m)

Login makinasında

iş çalıştırılamaz

m001 - m011 Intel(R) Xeon(R) CPU

E5-2680 v3 @ 2.50GHz

24 64GB YOK defq (varsayılan kuyruk)
m012 - m013 Intel(R) Xeon(R) CPU

E5-2680 v3 @ 2.50GHz

24 256GB 1TB Nvme SSD

(Intel 750 Series)

defq, bigmemq bigmemq
m014 - m015 Intel(R) Xeon(R) CPU

E5-2683 v3 @ 2.00GHz

28 64GB Nvidia GP-GPU

(Tesla K20m)

defq, gpuq gpuq


Kuyruk ve Disk Sistemi

Maslak kümesinin kuyruk yönetim yazılımı Slurm 'dür. Slurm kuyruk sisteminde iş verme komutları, LSF kuyruk sisteminden farklıdır.


mlogin makinasına login olduğumuzda, lnode makinasındaki gibi /AKDENIZ ve /RS dizinleri olduğunu göreceksiniz. Ancak ev dizininizde lnode makinasındaki dosyalarınızı bulamayacaksınız. Bunun sebebi her ne kadar maslak kümesinde de /AKDENIZ ve /RS dizinleri mevcut olsa da bu lnode makinasınınkinden farklı bir disktir. İhtiyaç duyduğunuz dosyalarınızı bu diske de kopyalamanız gerekecektir.


Projenizin Tanımlı Olduğunu Kontrol Etmek

Maslak kümesi sadece 15 makinadan oluştuğundan (yakın zamanda artması planlanmaktadır), bu aşamada sadece ücretli projelerin kullanımına ayrılmıştır. Bu sebeble maslak kümesine login olduğunuzda sizin üyesi bulunduğunuz projelerin bu kümede çalışacak şekilde ayarlanmış olup olmadığına bakınız. Bu bilgiyi projelerim komutuyla alabilirsiniz. Bu komut tüm projelerinizi değil, sadece maslak kümesinde çalışacabilecek şekilde ayarlanmış projeleri gösterir:


 $ projelerim
 
Kullanilabilir Projeler: t0111 hsaat
 
  Proje Adi(Account)        Kullanici   KalanCpuDakika   MaxIsVerme  MaxCpuCalis MaxIsCalisan
 ------------------- ---------------- ---------------- ------------ ------------ ------------
               t0111                                 0
               t0111            ahmet
               t0111            kadir
  Proje Adi(Account)        Kullanici   KalanCpuDakika   MaxIsVerme  MaxCpuCalis MaxIsCalisan
 ------------------- ---------------- ---------------- ------------ ------------ ------------
               hsaat                             19994           40          130           20
               hsaat            ahmet
               hsaat            kadir
 
Burada verilen 'KalanCpuDakika' bilgisi halen calisan isleri ve son 6 saatte bitmis isleri icermez.


Yukarıdaki çıktıda kullanıcının maslak kümesinde çalışabilen t0111 ve hsaat adlı iki projesi olduğu gözüküyor. Bu projelerden t0111 projesinin KalanCpuDakika sütununda 0 değeri gözüküyor. Bu atanan CpuDakika miktarının tüketildiğini yada projenin başka bir sebeble iş vermeye kapatıldığını göstermekte. hsaat projesinin KalanCpuDakika sütununda ise 19994 değeri var. hsaat projesi iş vermek için kullanılabilir durumda.

Ayrıca her projenin altındaki satırlarda o projeye iş verebilecek kullanıcı listesi de görüntelenmektedir.


Eğer hiç bir projemiz bu sistemde ayarlı olmasa idi projelerim komutu aşağıdaki çıktıyı verecekti:

 $ projelerim
 
	 *** Kullanilabilir proje yok!


Slurm İş Dosyası / Betiği

Slurm kuyruk sistemi, LSF kuyruk sisteminden farklı olsa da, genel mantık aynıdır. Dolayısı ile LSF'deki iş dosyası yapısına oldukça benzer bir şekilde iş dosyası hazırlanır. LSF sisteminde #BSUB ile verilen parametreler, Slurm'de #SBATCH ile verilmektedir.


En basit hali ile bir iş dosyası aşağıdaki gibidir. Tabi ki değişik ihtiyaçlar için pek çok ilave parametre mevcuttur. Bu betiği /RS/progs2/slurm_betikleri/basit.sh adresinde bulabilirsiniz:

#!/bin/bash
#SBATCH -A hsaat                # account / proje adi
#SBATCH -n 4                    # cekirdek / islemci sayisi
 
module load openmpi/mlnx/gcc/64/1.8.8
 
mpirun ./calisacak.x


Yukarıdaki betikte geçen parametrelerin açıklamaları:

Parametre Açıklama
#SBATCH -A <proje_adi> Proje adı, projelerim komutu ile iş verilebileceğini gördüğünüz bir proje olmalıdır.
#SBATCH -n <cekirdek_sayisi> Çekirdek (core) yani işlemci sayısı.


Bu örnekte bir kuyruk (queue /partition) belirtilmemiştir. Bu sebeble işimiz varsayılan kuyruk olan defq kuyruğunda (queue /partition) çalışacaktır. Ayrıca programın çıktıları slurm-XXX.out isimli bir dosyaya yazılacak. Dosyanın adındaki XXX yerine iş numarası (job ID) gelecek.

Daha Karışık Bir Örnek İş

İlave Slurm parametreleri içeren bu betiği /RS/progs2/slurm_betikleri/ilave.sh adresinde bulabilirsiniz. Bu betik doğrudan alıp kullanmanız için değil, verilebilecek parametreler için bir örnek olsun diye hazırlanmıştır. Lütfen gerekmeyen parametreleri çıkararak kullanınız:


#!/bin/bash
 
#SBATCH -J "ilave slurm parametreli"     # isin adi
 
#SBATCH -A hsaat                         # account / proje adi
#SBATCH -p bigmemq                       # kuyruk (partition/queue) adi
 
#SBATCH -o slurm.%j.out                  # cikti dosyasi %j => is no olacak
#SBATCH -e slurm.%j.err                  # hata ciktisi dosyasi
#SBATCH --open-mode=append               # cikti dosyalari zaten varsa
                                         # append yada truncate
 
#SBATCH -n 4                             # cekirdek / islemci sayisi
#SBATCH -N 1                             # bilgisayar sayisi
#SBATCH -t 0-3:00                        # isin calisma suresi
                                         # 3 saat demek (D-HH:MM)
 
#SBATCH --mail-type=END,FAIL             # is bitince yada sorun cikarsa mail at
#SBATCH --mail-user=ahmetmc@itu.edu.tr   # mail atilacak adres
 
#SBATCH --checkpoint=0-0:45              # checkpoint araligi (45dakikada bir)
#SBATCH --checkpoint-dir=/RS/users/ali   # checkpoint kaydedilecek dizin
 
#SBATCH --gres=gpu:1                     # ilave kaynak (1 gpu gerekli)
#SBATCH --exclude=m014                   # istemedigimiz makina listesi
 
 
module load openmpi/mlnx/gcc/64/1.8.8
 
mpirun ./calisacak.x

İş Teslimi

Hazırladığımız betiği Slurm kuyruk sisteminde çalıştırmak için:

 $ sbatch basit.sh
Submitted batch job 182


İşlerimizin Durumuna Bakmak

İşlerimizin çalışıp, çalışmadığını görmek için squeue komutunu kullanabiliriz. Bu komutu -u <kullanıcı_adı> parametresiz verirseniz tüm kullanıcıların işlerini göstereceğinden -u parametresini unutmayınız:

 $ squeue -l -u ahmet
Tue Feb  2 16:08:09 2016
             JOBID PARTITION     NAME     USER    STATE       TIME TIME_LIMI  NODES NODELIST(REASON)
               182      defq basit.sh    ahmet  RUNNING       0:32 5-00:00:00      1 m001


Aynı işi KalanCpuDakika değeri 0 olan t0111 projesi (-A account) ile verse idik, reddedilmeyecek ama çalışmadan PENDING durumunda kalacaktır. Bekleme sebebi (REASON) sütunundaki AssocGrpCPUMinsLimit değeri bu durumu ifade etmektedir.:

 $ squeue -l  -u ahmet
Tue Feb  2 16:09:09 2016
             JOBID PARTITION     NAME     USER    STATE       TIME TIME_LIMI  NODES NODELIST(REASON)
               183      defq basit.sh    ahmet  PENDING       0:00 5-00:00:00      1 (AssocGrpCPUMinsLimit)


İşler tamamlandıktan kısa bir süre sonra squeue komutu çıktısında gözükmez olur. Bu durumdaki işlerimiz hakkında bilgi almak için sacct komutunu kullanabiliriz:

 $ sacct
       JobID    JobName  Partition    Account  AllocCPUS      State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
181            basit.sh       defq      hsaat          4 CANCELLED+      0:0
181.batch         batch                 hsaat          4  CANCELLED     0:15
182            basit.sh       defq      hsaat          4    RUNNING      0:0
183            basit.sh       defq      t0111          4    PENDING      0:0


Çalışan İşi Sonlandırmak

Çalışan bir işimizi sonlandırmak istersek scancel komutuna parametre olarak iş numarasını (job ID) vermeliyiz:

 $ scancel  182


scancel bir çıktı vermeden işimizi sonlandıracaktır. Sonlandırılan işler sacct komutunun çıktısında CANCELLED+ olarak gözükecekler.


Maslak Kümesinde module Komutu

Maslak kümesindeki pek çok program için module dosyaları hazır gelmektedir. Bu module listesine erişmek için module avail komutunu kullanabilirsiniz:

 $ module avail

Bu listede görülen yeniler modülü, ilave module dosyalarının kullanılabilmesi sağlar. Burada program derlerken gerekebilecek pek çok kütüphanenin değişik derleme seçenekleri ile derlenmiş module dosyaları mevcuttur.


Bu listede görülen bir diğer önemli module, eskiler modülü, lnode makinasındaki module dosyalarının kullanılabilmesi sağlar. Ancak bu module dosyalarının kullanılabilmesi, ilgili programların bu sistemde de düzgün çalışacağı anlamında değerlendirilmemelidir. Bu konuda Module Komutu ile Çevre Değişkenlerinin Ayarlanması sayfasında ayrıntılı bilgi bulabilirsiniz.


mlogin makinasına login olunduğu zaman otomatik olarak shared ve uhem-bin module dosyaları yüklenmektedir. Diğer makinalarda kullanmak için (iş dosyası içinde mesela), /cm/shared/modulefiles listesindeki module dosyalarından birini yüklemek isterseniz, bu module dosyasından önce module load shared komutunu çalıştırmalısınız.


GPU İşi Çalıştırmak

Maslak kümesinde, hem bazı hesaplama sunucularinda, hem de kullanıcıların maslak kümesine iş vermek için kullanacakları mlogin makinasında GPU mevcuttur. Dolayısı ile kullanıcılarımız GPU kullanacak programlarını mlogin makinasinda doğrudan derleyip, kısa süreler için sınayabilirler. Ancak uzun süreli çalıştırmalarınızı bu makinada yapmamalısınız.

GPU kullanan işlerinizi çalıştırmanız için GPU içeren hesaplama makinalarımız m014 ve m015 'dir. Bu makinalara özel gpuq kuyruğu da mevcuttur. Dolayısı ile bir GPU işi çalıştırılacağı zaman Slurm'e gpuq kuyruğunu ve bir GPU kaynağını kullanmak istediğimizi söylememiz gerekecek. Ayrıca gerekli çevre değişkeni ayarlamaları için gereken cuda modüllerini de yüklemeliyiz.


GPU işi için hazırlanan bu betiği /RS/progs2/slurm_betikleri/gpu.sh adresinde bulabilirsiniz:

#!/bin/bash
 
#SBATCH -J "GPU"                         # isin adi
 
#SBATCH -A hsaat                         # account / proje adi
#SBATCH -p gpuq                          # kuyruk (partition/queue) adi
 
#SBATCH -n 4                             # cekirdek / islemci sayisi
#SBATCH -N 1                             # bilgisayar sayisi
#SBATCH --gres=gpu:1                     # ilave kaynak (1 gpu gerekli)
 
module load cuda75/toolkit/7.5.18
 
#calisacak gpu isi
nvidia-smi


Çok Hafıza Gerektiren ve Çok Miktarda Veri Okuma / Yazma Yapan İşler

Bu tip işler için düşünülmüş kuyruğumuz bigmem kuyruğudur. Bu kuyruktaki makinalarımız (m012 ve m013), 256GB hafızaya ve 1TB Nvme Pcie SSD kartına sahptir. Nvme kartı sayesinde 1200 MB/s 'e varan hızlarda veri yazılabilmektedir. Bu kart, yerel scratch diski olarak kullanılmak uzere /SCR adresinde kullanımdadır.


Bu kuyruğa verilen Gaussian 09 işleri otomatik olarak nvme SSD dizinini (/SCR) kullanacak şekilde ayarlanmaktadır.

Gaussian İşi Çalıştırmak

Maslak kümesinde gaussian işi çalıştırmak için gereken gaussian betiği hazırlanmıştır. Bu betikle ilgili bilgileri Gaussian Kullanım Kılavuzu sayfasında bulabilirsiniz.