Sarıyer sistemine iş vermek

UHeM sitesinden
Uhem (Mesaj | katkılar) tarafından oluşturulmuş 09:02, 11 Temmuz 2017 tarihli sürüm

Atla: kullan, ara


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

Sarıyer 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

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

E5-2680 v4 @ 2.40GHz

28 128GB YOK Login makinasında

iş çalıştırılamaz

s001 - s040 Intel(R) Xeon(R) CPU

E5-2680 v4 @ 2.40GHz

28 128GB YOK defq (varsayılan kuyruk, 5 gün)

shortq (5 dakika)

longq (21 gün)

f001 - f003 Intel(R) Xeon(R) CPU

E5-2680 v4 @ 2.40GHz

28 128GB Nvidia GP-GPU

(Tesla K20m)

gpuq (3 gün)
f004 - f007 Intel(R) Xeon(R) CPU

E5-2680 v4 @ 2.40GHz

28 512GB YOK bigmemq (7 gün)


Disk Sistemi

Sarıyer kümesinde disk yapısı maslak ve karadeniz makinalarından farklıdır. Sarıyer kümesinde diğer sistemlerimizdeki gibi /AKDENIZ ve /RS şeklinde iki farklı ev dizini yoktur. Eski sistemlerimizdeki dosyalarınız, Sarıyer kümesindeki ev dizininizde bulunmamaktadır. Çünkü /okyanus diski, lnode ve mlogin makinalarınınkinden farklı bir disktir. İhtiyaç duyduğunuz dosyalarınızı bu diske de kopyalamanız gerekecektir.


Bu kümenin diski olan /okyanus diskinde /okyanus/progs dizini yeni programların bulunduğu yerdir.


Sadece eski programların çalışması için /RS/progs ve /RS/progs2 dizinleri mevcuttur. Bu dizinlerde sadece eski sistemlerden taşınan programlar mevcuttur. Her ne kadar karadeniz ve maslak sistemlerindeki programlar yeni sisteme taşınmış olsalar da, bu eski programların düzgün çalıştığını göstermez. Eski programları gerçekten gerekli olmadıkça kullanmayınız.


Eski sistemlerdeki module dosyaları da yeni sisteme taşınmıştır. Karadeniz module dosyalarına erişmek için eski-moduller-karadeniz ve Maslak module dosyalarına erişmek için eski-moduller-maslak modulelerini yüklemeniz gerekmektedir.


Yeni programları kullanmak için gereken module dosyalarının bir kısmı bir module yüklemeden görülebilmektedir, ancak bir kısmı için ilave-moduller modul dosyası yüklenmelidir (module load ilave-moduller).


Kuyruk Sistemi

Sarıyer kümesinin kuyruk yönetim yazılımı Slurm 'dür. Slurm kuyruk sisteminde iş verme komutları, LSF kuyruk sisteminden farklıdır. Slurm maslak kümesinde de kullandılan yazılımdır. Ancak Sarıyer kümesindeki slurm ayarları eski sistemlerimizden oldukça farklıdır.


Slurm birden çok bilgisayarın birlikte kullanıldığı sistemlerde (küme, cluster), çalıştırılacak programların verimli çalışabilmesi için gereksinimlerine göre uygun bilgisayarlar üzerinde çalıştırılmasını sağlayan bir iş kuyruk sistemidir. Kuyruk sisteminde boşta yeterli işlemci yoksa, yeterli işlemci boşalıncaya kadar işimiz kuyrukta bekletilir. Böylece birden çok programın aynı kaynağı kullanarak birbirlerini yavaşlatması engellenmiş olur.

Kume.gif


Küme yapısında kullanıcılar kullanacakları bilgisayarlara doğrudan erişemezler. Bunun yerine login node denilen, amacı sadece Slurm'e iş vermek olan bilgisayarlara bağlanılır. Burada, Slurm komutları ile çalışmasını istedikleri programı bir iş olarak kuyruğa verirler. Sistemde boş işlemciler var ise iş hemen çalışır. Bilgisayarlar uygun değilse, iş çalıştırmak için bekletilir. Bu şekil gerçek hayattaki kuyruklar gibi, sistemde bir yoğunluk varsa işler birikir ve sıraları geldiğinde çalıştırılırlar.


Bizim login node olarak kullandığımız sariyer isimli bir bilgisayarımız mevcuttur. Bu makinaya, önce VPN Bağlantısı yaptıktan sonra, sariyer.uhem.itu.edu.tr adresine ssh bağlantısı yaparak ulaşabilirsiniz.




Kullanılabilecek Kuyruklar ve Doluluk

Kullanılabilecek kuyruk (queue) isimlerini ve ne kadar bir doluluk olduğunu görebilmek için bosmakinalar komutunu kullanabilirsiniz:


$ bosmakinalar
 
      KUYRUK	ISLEMCI	ISLEMCI	BEKLYEN	MAKINA	MAKINA	ENFAZLA-SURE	ENFAZLA
         ADI	   BOS	  TUMU	 ISTEK	   BOS	  TUMU	GUN-SA:DA:SN	MAKINA/IS
  ==========	=======	=======	=======	======	======	=============	==========
        defq	  392	 1176	  224	   14	   42	  5-00:00:00	SINIRSIZ
      shortq	   56	  196	    0	    2	    7	    01:00:00	SINIRSIZ
       longq	  196	  560	    0	    7	   20	 21-00:00:00	SINIRSIZ
        gpuq	   56	   84	    0	    2	    3	  3-00:00:00	SINIRSIZ
     bigmemq	    0	  112	    0	    0	    4	  7-00:00:00	SINIRSIZ
        mixq	  168	  364	    0	    6	   13	  5-00:00:00	SINIRSIZ


Buradaki kuyruklardan defq herhangi bir kuyruk adı verilmezse işin çalıştırılacağı varsayılan kuyruktur. Genel olarak işinizi bu kuyrukta çalıştırmanız uygun olur. Görüleceği gibi bu kuyruk diğer kuyruklardan çok daha fazla makinayı kullanabilmektedir.


shortq ise daha çok ufak denemeler için kısa süreli (1 saat) bir kuyruktur. gpuq gpu kartı bulunan makinaları kullanmak içindir. bigmemq kuyruğu ise 512GB hafızası olan makinaları kullanmak içindir. Bu kuyruktaki makinalar normalden 1.5 kat daha pahalı fiyatlanmaktadır. Ayrıca büyük hafızalı bir makinada az hafıza kullanan programlar normalden biraz daha yavaş çalışacaklardır. Bu sebeble gerekmedikce bu kuyruğu kullanmamanızı tavsiye ederiz. Bu kuyruk dışındaki makinalarımız 128GB hafızaya sahiptir ki, bu miktar zaten çoğu iş için gerekenden fazladır.


Projenizin Tanımlı Olduğunu Kontrol Etmek

Sarıyer kümesini kullanmak için sariyer makinasına 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 sarıyer 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 sarıyer 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 /okyanus/progs/slurm_betikleri/basit.sh adresinde bulabilirsiniz:

#!/bin/bash
#SBATCH -A hsaat                # account / proje adi
#SBATCH -n 4                    # cekirdek / islemci sayisi
 
module load mpi/openmpi-x86_64
 
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 /okyanus/progs/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, bu cikti parametrelerini vermek gerekli degildir.
#SBATCH -e slurm.%j.err                  # hata ciktisi dosyasi, bu cikti parametrelerini vermek gerekli degildir.
#SBATCH --open-mode=append               # cikti dosyalari zaten varsa , bu cikti parametrelerini vermek gerekli degildir.
                                         # 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=/okyanus/users/ali   # checkpoint kaydedilecek dizin
 
#SBATCH --gres=gpu:1                          # ilave kaynak (1 gpu gerekli)
#SBATCH --exclude=m014                        # istemedigimiz makina listesi
 
 
module load mpi/openmpi-x86_64
 
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. Ancak daha pratik bir çözüm olarak isler komutunu hazırladık:

 $ isler
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 s001


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.:

 $ isler
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 isler komutu çıktısında değişir:

 $ isler
       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 İşin İşlemci ve Hafıza Kullanımına Bakmak

Çalışan bir işimizin düzgün çalıştığını takip etmek için çalıştığı bilgisayarın yük (load) durumuna ve hafıza kullanımına bakmak gerekebilir. Bir işin çalıştığı tüm bilgisayarlara ssh yapıp bu bilgileri toplamak zor olacağı için isler komutu bu işi sizin için yapabilir. isler komutuna iş numarası vererek çalıştırdığımızda, işimizin çalıştığı tüm bilgisayarların bilgileri ekrana basılacaktır:


$ isler 1500
| MAKINA  YUK      HAFIZA  SWAP | MAKINA  YUK      HAFIZA  SWAP | MAKINA  YUK      HAFIZA  SWAP |
|-------------------------------|-------------------------------|-------------------------------|
| s001  27/28     21/3/128  0/4 | s002  26/28     19/3/128  0/4 | s003  26/28     19/3/128  0/4 |
|-------------------------------|-------------------------------|-------------------------------|
| s004  26/28     19/3/128  0/4 | s005  26/28     19/3/128  0/4 | s006  26/28     19/3/128  0/4 |
|-------------------------------|-------------------------------|-------------------------------|
| s007  26/28     19/3/128  0/4 | s008  26/28     19/3/128  0/4 | s009  26/28     19/3/128  0/4 |
|-------------------------------|-------------------------------|-------------------------------|
| s010  27/28     19/3/128  0/4 | s011  26/28     19/3/128  0/4 | s012  26/28     19/3/128  0/4 |
|-------------------------------|-------------------------------|-------------------------------|
| s013  26/28     19/3/128  0/4 | s014  26/28     19/3/128  0/4 | s015  26/28     19/3/128  0/4 |
|-------------------------------|-------------------------------|-------------------------------|
| s016  26/28     19/3/128  0/4 | s017  25/28     19/3/128  0/4 | s018  26/28     19/3/128  0/4 |
|-------------------------------|-------------------------------|-------------------------------|
| s019  25/28     18/3/128  0/4 |
|-------------------------------|-------------------------------|-------------------------------|
 
Buradaki YUK sutunu load/islemci, HAFIZA istenenGB/kullanilanGB/MevcutGB,
SWAP sutunu ise kullanilanGB/MevcutGB bilgisini gosterir.
Bu komut isinizin calistigi bilgisayarlara ssh yaptigi icin cok kullanmaniz isinizi yavaslatir.


Yukarıdaki çıktıda gözüken HAFIZA bilgilerinde istenenGB, Virtual Memory Size değerleri toplamıdır (top komutunda VIRT yada ps komutunda VSZ sütunu). Bu bilgi önemlidir, çünkü bazen programlar yüksek miktarda hafıza talep edip, alamayınca sorun yaşayabilirler.


Eğer işiniz bir gpu takılı makinada çalışıyorsa, isler komutu çıktısı, gpu kartının adını ve yük-hafıza kullanım yüzdesini de görüntüler:


$ isler 1504
| MAKINA  YUK      HAFIZA  SWAP | MAKINA  YUK      HAFIZA  SWAP | MAKINA  YUK      HAFIZA  SWAP |
|-------------------------------|-------------------------------|-------------------------------|
| f001  28/28    93/47/128  0/4 | f001 Tesla-K20m Yuk% 0 Hfz% 0 |
|-------------------------------|-------------------------------|-------------------------------|
 
Buradaki YUK sutunu load/islemci, HAFIZA istenenGB/kullanilanGB/MevcutGB,
SWAP sutunu ise kullanilanGB/MevcutGB bilgisini gosterir.
Bu komut isinizin calistigi bilgisayarlara ssh yaptigi icin cok kullanmaniz isinizi yavaslatir.


Bu çıktıdaki ilk sütunda f001 makinasının kendi yük, hafıza ve swap durumu gösteriliyorken; ikinci sütunda f001 makinasında takılı gpu kartının (Tesla-K20m) üzerindeki yük ve hafıza kullanım yüzdesi gözükmektedir.


Ç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.


İşin Çalıştığı Makinaya Gitmek

Yukarıdaki 182 nolu iş RUNNING olarak gözükmekte. Ancak hata ayıklama, işlemci,hafıza vb. makina kaynaklarının kullanım oranını gözlemleme gibi çeşitli sebeblerle işin çalıştığı makinaya erişmek isteyebiliriz. Bu durumda squeue -l -u ahmet komutunun çıktısında gözüken makinalara (bu örnekte s001) ssh komutu ile bağlanıp, istediğimiz bilgileri doğrudan alabiliriz.


Ancak işimiz çalışmayan (yakın zamanda bitmiş olsa da) bir makinaya erişemeyiz. Aşağıdaki çıktıda göreceğiniz gibi bu makinada çalışan işiniz yok hatası ile ssh reddediliyor:

$ ssh s006
Access denied: user ahmet (uid=14) has no active jobs on this node.
Connection closed by 10.12.73.6


İnteraktif İş Başlatmak

Bazen işimizi doğrudan bulunduğumuz makinada başlatmak isteyebiliriz. Ancak sariyer kümesinin login makinası olan sariyer makinasında çok işlemci kullanan yada hafıza tüketen bir program çalıştırırsanız bu program otomatik öldürülecektir.


Mesela hata ayıklama gibi bir sebeble kullanıcılarımız bir programı doğrudan komut satırından çalıştırmak isterlerse, srun komutu ile interaktif bir iş başlatabilirler.


Bu amaçla tüm kuyruklar kullanılabilirse de eğer iş verdiğiniz kuyrukta boş makina yoksa, işiniz başlamak yerine uygun bir makina boşalıncaya kadar sizi bekleteceğinden bu amaçla açılmış shortq kuyruğunu kullanmak en mantıklısıdır:


[ahmet@sariyer ~ ]$ srun -A hsaat -N 1 -n 28 -p shortq --pty bash -i
srun: job 8475 queued and waiting for resources
srun: job 8475 has been allocated resources
[ahmet@f002 ~ 8475]$

Yukarıdaki çıktıdan da görülebileceği gibi srun komutu ile bir iş başlattık ama komut satırındaki makine bilgisi sariyer 'den f002 'ye dönüştü. Artık f002 makinasındayız. Bu makina, biz bu kabuktan (shell'den) exit komutu ile yada Ctrl-C tuşları ile çıkıncaya yada kuyruğun izin verdiği süre dolana kadar bizimdir. Hiç bir program çalıştırmasak bile komut satırında iş nosunu (bu örnekte 8475) gördüğümüz sürece bizim bir işimiz çalışıyormuşcasına bize ayrılmış ve faturalanıyor olacaktır.


Sariyer Kümesine Grafik Arabirim Kullanarak Erişmek

Sariyer kümesine grafik arabirim kullanarak uzak mesafeden erişmeyi kolaylaştırmak için x2go programı kurulmuştur. Bu program sayesinde doğrudan yada ssh ile açılan X11 Pencerelerinde yaşanan aşırı yavaşlık sorunu ortadan kalkmaktadır. Ancak bu program ile sariyer kümesine erişmek için hala önce vpn bağlantısının yapılması şarttır. x2go programını kullanmak için, bağlantı için kullanacağımız bilgisayarımıza x2go client yazılımı (http://wiki.x2go.org/doku.php/download:start) kurulmalıdır. Aşağıda bu programın nasıl kurulacağını gösteren videomuzu bulabilirsiniz:

VİDEO: X2Go Client Kurulması.mp4


Kurulumun son aşaması olarak aşağıdaki komut (nano) ile .bashrc dosyanıza source /okyanus/progs/uhem-bin/x2go-ayarla.sh satırını eklemeliyiz:


 $ nano /okyanus/users/$USER/.bashrc


source /okyanus/progs/uhem-bin/x2go-ayarla.sh


nano programından çıkmak için Ctrl ve x tuşlarına birlikte basınız. Kaydedeyim mi? sorusuna "Yes" diyerek ve enter tuşuna basarak çıkınız. Bu değişikliğin etkin olabilmesi için bulunduğunuz terminal bağlantısını sonlandırıp tekrar login olunuz.

Sariyer Kümesinde Grafik Arabirim Kullanarak İnteraktif İş Çalıştırmak

Artık sariyer kümesine grafik arabirim kullanan bir iş verebilir durumdayız. Öncelikle bosmakinalar komutu ile sistemde kullanmayı planladığımız kuyrukta boş makina olup olmadığına bakalım:


$ bosmakinalar
 
      KUYRUK	ISLEMCI	ISLEMCI	BEKLYEN	MAKINA	MAKINA	ENFAZLA-SURE	ENFAZLA
         ADI	   BOS	  TUMU	 ISTEK	   BOS	  TUMU	GUN-SA:DA:SN	MAKINA/IS
  ==========	=======	=======	=======	======	======	=============	==========
        defq	   28	 1232	  700	    1	   44	  5-00:00:00	Limit Yok
      shortq	   56	  224	    0	    2	    8	    01:00:00	Limit Yok
       longq	    0	  448	   24	    0	   16	 21-00:00:00	3
        gpuq	    0	   56	    0	    0	    2	  7-00:00:00	1
     bigmemq	   28	  112	    0	    1	    4	  7-00:00:00	Limit Yok


Bu komutun çıktısından mesela shortq kuyruğunun müsait olduğunu görüyoruz. Tabiki ihtiyacımıza uygun bir kuyruk seçmeliyiz. Gpu kullanan bir program için gpu barındıran makinaları ayırabilmek için gpuq yada 5 günden uzun sürecek işlerimiz için longq gibi.


Şimdi slurm'den salloc komutu ile bize bir makina ayırmasını isteyelim:


[mercan@sariyer ~ ]$ salloc -n 28 -N 1 -A hsaat -p shortq
salloc: Pending job allocation 14219
salloc: job 14219 queued and waiting for resources
salloc: job 14219 has been allocated resources
salloc: Granted job allocation 14219
[mercan@sariyer ~ 14219]$


Görüleceği üzere salloc komutu bize kaynak ayırdığını söyledi ve komut satırı da iş numaramızı (14219) içerecek şekilde değişti. Artık bir makina bizim kullanımımız için ayrıldı ve biz salloc komutundan exit komutu ile çıkana kadar bize ayrılmış kalacak ve tüm bu sürede ayrılan makinaları hiç kullanmasak bile kullanmışız gibi fatura edilecektir. Bize ayrılan makinaların adını sunucular komutu ile öğrenelim:


[mercan@sariyer ~ 14219]$ sunucular
f002


Görüleceği üzere bize ayrılan makina f002 makinası. Bu makinaya (bize ayrıldığı için izin verilir), grafik arabirimi destekleyecek şekilde ssh ile bağlanalım:


[mercan@sariyer ~ 14219]$ ssh -X f002
Last login: Fri Feb 17 09:59:10 2017 from sariyer
[mercan@f002 ~ ]$


Artık, f002 makinasındayız. Mesela matlab programını açmak istersek:


[mercan@f002 ~ ]$ module load MATLAB/R2016b
[mercan@f002 ~ ]$ matlab
MATLAB is selecting SOFTWARE OPENGL rendering.


matlab komutunu çalıştırdığımızda matlab grafik arabiriminin açıldığını göreceğiz. Artık matlab programımız bize ayrılmış olan f002 makinasında çalışmakta. Bu sunucuda istediğimiz gibi matlab çalıştırabiliriz. İşimizi bitirdiğimizde önce matlab'ı kapatmalı, sonra ssh'ı sonlandırmalıyız. En son olarak bir kez daha exit diyerek salloc komutundan da çıkmalıyız:


[mercan@f002 ~ ]$ exit
logout
Connection to f002 closed.
[mercan@sariyer ~ 14219]$ exit
exit
salloc: Relinquishing job allocation 14219
salloc: Job allocation 14219 has been revoked.
[mercan@sariyer ~ ]$


Ancak, salloc komutundan da çıktıktan sonra slurm'ün bize ayırdığı makinayı serbest bırakmış oluruz.


Sarıyer Kümesinde module Komutu

Sarıyer 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 konuda Module Komutu ile Çevre Değişkenlerinin Ayarlanması sayfasında ayrıntılı bilgi bulabilirsiniz.


Bu listede görülen ilave-moduller, ilave-moduller2, ilave-moduller3 modülleri, 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 listedeki eski-moduller-karadeniz modülü, lnode makinasındaki module dosyalarının kullanılabilmesi sağlar. Benzer şekilde eski-moduller-maslak modülü, mlogin 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. Eski programları gerçekten gerekli olmadıkça kullanmayınız.


Kullanım İstatistikleri

Sariyer kümesinde çalıştırdığınız işler hakkında istastiki bilgi almak isterseniz, kullanim-istatigi komutunu kullanarak son 1 aylık sürede çalıştırılan işler hakkında çeşitli bilgilere ulaşabilirsiniz. Bu hesaplamalarda 5 dakikadan kısa süren yada hatalı biten işler çıkarılmıştır. Böylece slurm'ün kendi raporlarından daha güvenilir şekilde işlerinizin harcadığı süreleri takip edebilirsiniz.


GPU İşi Çalıştırmak

Sarıyer kümesinde, sadece bir hesaplama sunucusunda GPU mevcuttur. Dolayısı ile kullanıcılarımız GPU kullanacak programlarını sariyer makinasinda doğrudan derleyemeyiz. GPU kullanan işlerinizi çalıştırmanız için GPU içeren hesaplama makinalarımıza özel gpuq kuyruğu 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.


Benzer şekilde işimizde kullanacağımız programları derlemek için de f001 makinasına erişmeliyiz. Bu amaçla bir interaktif iş vererek o makinaya erişim sağlamalıyız:

[ahmet@sariyer ~]$ srun -A hsaat -p gpuq -n 1 --pty bash -i
[ahmet@f001 ~]$ module load cuda/cuda-8.0

İşimiz bitince exit komutu yada ctrl-d tuşlarına basarak makinadan ayrılırız ve sisteme verdiğimiz interaktif iş sonlanmış olur. f001 makinasına login olduğumuz sürece bu makinayı kullanmış gibi cpu-saat harcaması düşüleceği için ve ayrıca bu sırada başkaları bu sunucuyu kullanamayacağı için gerekli olmayan durumlarda interaktif iş bağlantısını açık bırakmayınız.


GPU işi için gereken programlar hazır olduğunda uygun olan interaktif iş yerine sbatch komutu ile işimizi teslim etmektir. sbatch ile kullanmanız için aşağıdaki betik hazırlanmıştır. Bu betiği /okyanus/progs/slurm_betikleri/gpu.sh adresinde de 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 cuda/cuda-8.0
 
#calisacak gpu isi
nvidia-smi


Gaussian İşi Çalıştırmak

Sarıyer 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.



ANSYS Fluent İşi Çalıştırmak

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


Matlab İşi Çalıştırmak

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


OpenFOAM İşi Çalıştırmak

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