"Sarıyer sistemine iş vermek" sayfasının sürümleri arasındaki fark

UHeM sitesinden
Atla: kullan, ara
(Kuyruk Sistemi)
(Projenizin Tanımlı Olduğunu Kontrol Etmek)
262. satır: 262. satır:
 
  $ projelerim
 
  $ projelerim
  
  Proje      Kullanim  MaxIs  MaxCpu  MaxIs  Proje                SariyerdeTanimli
+
  Proje     Kullanim     MaxIs  MaxCpu  MaxIs  Proje                SariyerdeTanimli
  Adi       Izni       Verme  Calisan Calisan Bilgisi              Kullanicilar
+
  Adi      Izni          Verme  Calisan Calisan Bilgisi              Kullanicilar
  --------   ---------  -----  ------- ------- --------------------  ----------------
+
  -------- ------------  -----  ------- ------- --------------------  ----------------
  hsaat          ACIK    42      560     20                       ahmet kadir
+
  hsaiat    ACIK(active)    220     1176     44                       kadir ahmet
  t0111    DURDURULDU     42      560    20  CPU kota asimi uyari  ahmet
+
  t0111    DURDURULDU       42      560    20  CPU kota asimi uyari  ahmet
                                                                   
+
--------  ------------  -----  ------- ------- --------------------  ----------------
 +
Project    Project      Max    MaxCpu  MaxJob  Project              Defined-Users
 +
Name      Status      Submit Running Running  Info                at-Sariyer
  
hsaat Projesi Kullanilan CpuSaat:7093/20000 (%35),  Disk:32/200 GB (%15).
+
hsaiat Kullanilan-CpuSaat(CpuHour-Usage): 7093/20000 (%35),  Disk:32/200 GB (%15).
t0111 Projesi Kullanilan CpuSaat:203679/202906 (%100),  Disk:692/2000 GB (%34), CPU kota asimi uyarisi!
+
hsaiat Baslangic(StartDate): 2020-04-06 15:25:20,  Bitisi(EndDate): 2023-04-06 00:00:00                                                                   
 +
 
 +
t0111 Projesi Kullanilan-CpuSaat(CpuHour-Usage): 203679/202906 (%100),  Disk:692/2000 GB (%34), CPU kota asimi uyarisi!
 +
t0111 Baslangic(StartDate): 2020-01-26 15:25:20,  Bitisi(EndDate): 2022-08-01 00:00:00
  
 
Burada verilen 'CpuSaat' bilgisi halen calisan isleri ve son 6 saatte bitmis isleri icermez.
 
Burada verilen 'CpuSaat' bilgisi halen calisan isleri ve son 6 saatte bitmis isleri icermez.

12:19, 25 Ocak 2021 tarihindeki hâli


Konu başlıkları

Hızlı Başlangıç Rehberi

UHeM'deki Sarıyer Kümesini kullanmak için kullanıcılarımız, VPN ile bağlı iken, sariyer.uhem.itu.edu.tr makinasına ssh yapmalıdırlar. Bu makinada işlerini/programlarını doğrudan çalıştırmak yerine, SLURM programına bu işlerini çalıştıran bir betik (ing. script) teslim etmelidirler. SLURM boş/uygun makinada bu işi sizin yerinize çalıştıracaktır.


Özetle uygulanması gereken adımlar şunlardır:

  1. VPN Bağlantısı Kur, Bağlantı Açık Kalsın (VPN Kılavuzu),
  2. Scp/WinScp ile sariyer.uhem.itu.edu.tr makinasına İş İçin Gereken Dosyaları Yükle (SCP Kılavuzu),
  3. sariyer.uhem.itu.edu.tr makinasına Ssh/Putty Bağlantısı Kur, Aşağıdaki Komutları Orada Çalıştır (LOGINNODE Kılavuzu,SSH Kılavuzu),
    1. SLURM İş Betiği Hazırla (İş Betiği):
      1. projelerim Komutu ile Proje Seç (Proje Bilgisi),
      2. bosmakinalar yada spart Komutu ile Kuyruk Seç (Kuyruklar),
      3. module Komutu ile Program Seç (MODULE Kılavuzu,MODULE Seçimi), yada Kendi ev dizinine kullanacağın programları kur.
      4. nano Komutu ile SLURM Betiği Hazırla, yada /okyanus/progs/slurm_betikleri adresindekilerden kullan ( NANO Kılavuzu),
    2. sbatch Komutu ile SLURM'e İş Betiğini Ver (İş Teslimi),
    3. isler Komutu ile İşin Durumuna Bak (İşin Durumu),
  4. Scp/WinScp ile sariyer.uhem.itu.edu.tr makinasından Sonuç Dosyalarını İndir,
  5. Ssh/Putty Bağlantısını Kapat,
  6. VPN Bağlantısını Kapat.


Bir kere iş teslimi yaptıktan sonra, işiniz ne durumda olursa olsun (beklemede [PENDING], çalışır durumda [RUNNING] vb.farketmez), ssh ve VPN bağlantınızın açık kalmasına gerek yoktur. İşiniz boş makina bulunduğu zaman otomatik olarak çalıştırılacak ve ekrana yazdıkları slurm tarafından bir dosyaya kaydedilecektir. Siz istediğiniz zaman yeniden VPN ve ssh bağlantısını tekrar yapıp, işinizin durumuna ve sonuçlara bakabilirsiniz.

Sarıyer Kümesi Donanım Bilgisi

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

Makina Adı İşlemci Bilgisi İşlemci Kod Adı Makinadaki İşlemci

(Çekirdek) Sayısı

Hafıza Miktarı Ağ Kartı Özel Donanım Bu makinalarda

Çalışacak Kuyruklar

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

E5-2680 v4 @ 2.40GHz

Broadwell 28 128GB 56 Gbit/s Infiniband YOK Login makinasında

iş çalıştırılamaz

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

E5-2680 v4 @ 2.40GHz

Broadwell 28 128GB 56 Gbit/s Infiniband YOK defq (varsayılan kuyruk, 7 gün)

shortq (1 saat)

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

E5-2680 v4 @ 2.40GHz

Broadwell 28 128GB 56 Gbit/s Infiniband Nvidia GP-GPU

(Tesla K20m)

gpuq (7 gün)
f004 - f013 Intel(R) Xeon(R) CPU

E5-2680 v4 @ 2.40GHz

Broadwell 28 512GB 56 Gbit/s Infiniband YOK bigmemq (7 gün)
f014 Intel(R) Xeon(R) Gold

6248 CPU @ 2.50GHz

Cascadelake 40 384GB 100 Gbit/s Infiniband 4 adet Nvidia V100 (NVlink2) v100q (1 gün)
s101 - s115 Intel(R) Xeon(R) CPU

E5-2680 v3 @ 2.50GHz

Haswell 24 64GB 56 Gbit/s Infiniband YOK longq (21 gün)
s201 - s235 Intel(R) Xeon(R) Gold

6148 CPU @ 2.40GHz

Skylake 40 192GB 100 Gbit/s Infiniband YOK core40q (7 gün)


Sariyer kümesindeki tüm makinalarda Centos 7 Linux işletim sistemi yüklüdür.

Disk Sistemi

Sarıyer kümesinde disk sistemi /okyanus adıyla sisteme bağlıdır. Kullanıcı dosyaları /okyanus/users dizininde, yeni programlar ise /okyanus/progs dizinde bulunur.

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, ilave-moduller2, ilave-moduller3 gibi bir ilave modul dosyası yüklenmelidir (module load ilave-moduller). Sonrasında bu module dosyası yüklenince erişilebilir olan programlar da görülebilecektir.


Bu kümenin disk yapısı anadolu 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 makinalarınınkinden farklı bir disktir. İhtiyaç duyduğunuz dosyalarınızı bu diske de kopyalamanız gerekecektir.


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.

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'ün kendi dökümanlarına bu linkten ulaşabilirsiniz: Slurm Documentation (ingilizce)


Küme (cluster), birden çok bilgisayarın birlikte kullanılmak üzere ayarlandığı yapıya denir. Slurm kümelerde (cluster) çalıştırılacak programların verimli çalışabilmesini sağlayan bir iş kuyruk sistemidir. İşler, gereksinimlerine göre uygun bilgisayarlar üzerinde Slurm tarafından çalıştırılacaktır. 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

Login Node ve İş Çalıştırma

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 şekilde 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. Önce VPN Bağlantısı yaptıktan sonra, bu makinaya sariyer.uhem.itu.edu.tr adresine ssh bağlantısı yaparak ulaşabilirsiniz. İşlerini çalıştırmanız için gereken dosyaları yüklemek ve sonrasında sonuçta oluşan dosyaları indirmek için, yine sariyer.uhem.itu.edu.tr makinasına scp protokolünü kullanarak bağlanmalısınız. Bu konuda Scp / WinScp kullanım kılavuzu saysasında gerekli bilgileri bulabilirsiniz.


Ancak şuna dikkat ediniz: sariyer.uhem.itu.edu.tr makinasına ssh yaparak login node'a erişmiş olursunuz. İşlerinizi (programlarınızı) bu makinada doğrudan çalıştıramazsınız. Bu makina sadece işlerinizi slurm yazılımına tarif/teslim etmeniz için ve sonrasında sonuçlarına bakmanız için kullanmanız gereken bir makinadır. Aynı anda tüm kullanıcılarımız tarafından kullanılmaktadır.

Örneğin bir kullanıcımız matlab açıp, burada bir hesap yaptırmak isterse, bir başkası fluent açıp bir hesap başlatırsa vb. bir bilgisayarda pek çok iş çalıştırılmış olur. Tek bir bilgisayar bu kadar işi kaldıramayacağından, bu bilgisayarın çökmesine sebeb olacaktır. Sonuçta kimse sisteme erişemeyecektir. Böylesi bir durumdan korunmak için, kullanıcılarımız login node'unda doğrudan çok hafıza yada çok işlemci kullanan bir program çalıştırmaya kalkarlarsa otomatik olarak bu programlar durdurulmakta ve aşağıdaki gibi bir mesaj ile durum haber verilmektedir:


=========================================================
ASIRI YUK SEBEBIYLE ASAGIDAKI PROGRAM DURDURULMUSTUR:
678.1           ahmet.x
LUTFEN PROGRAMLARINIZI DOGRUDAN CALISTIRMAYINIZ, 
IS OLARAK SLURMe VERINIZ YADA SLURMden MAKINA ISTEYEREK
O MAKINADA CALISTIRINIZ.
=========================================================

Kullanılabilecek Kuyruklar ve Doluluk

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


$ bosmakinalar
 
    KUYRUK ISLEMCI ISLEMCI BEKLYEN  DIGER  MAKINA MAKINA ENFAZLA-SURE EN-AZ EN-COK ISLEMCI HAFIZA
       ADI    BOS   TUMU    ISTEK  BEKLYEN  BOS    TUMU  GUN-SA:DK:SN MAKNA MAKINA /MAKINA  (GB)
  ======== ======= ======= ======= ======= ====== ====== ============ ===== ====== ======= ======
      defq    280    2240       0     560     10     80    7-00:00:00    1      -      28    128
    shortq    392    2604       0       0     14     93      01:00:00    1      2      28    128
     longq     72     336      96       0      3     14   21-00:00:00    1      -      24     64
      gpuq     84      84       0       0      3      3    7-00:00:00    1      -      28    128
   bigmemq     28     280       0       0      1     10    7-00:00:00    1      -      28    512
      mixq     84     140       0       0      3      5    7-00:00:00    1     20      28    128
     b224q    336    2548       0       0     12     91    1-00:00:00    8     40      28    128
   core40q    400    1400       0       0     10     35    7-00:00:00    1      -      40    192
       all    864    4340       0       0     27    142    1-00:00:00    1      -      24     64


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. Bu sebeble gerekmedikce bu kuyruğu kullanmamanızı tavsiye ederiz. Bu kuyruk dışındaki makinalarımızın hafızaları zaten çoğu iş için gerekenden fazladır.


BEKLYEN ISTEK sütunu makinalar uygun olmadığı için bekleyen işlerin istediği toplam işlemci sayısını gösterir. Bu sütunda bekleyen iş görmeniz vereceğiniz işin hemen çalışmayacağını göstermez! Çünkü slurm çeşitli kriterlere göre işlere öncelik vermektedir. Örneğin yakınlarda iş çalıştırmadı iseniz ve diğer bekleyen işlerin sahiplerinin yakın zamanda çalışan işleri mevcutsa vb. sebeblerle bazen işiniz diğer kişilerin işlerinin önüne geçebilirken, bazen de diğer bekleyen kişilerin işlerinin bitmesini bekleyebilirsiniz. Bu sadece sizin işinize yada sadece onların işlerine bağlı değildir. Bazen de boş makinalar mevcut olduğu halde, gereken / istenen makina sayısından daha azı mevcut olduğu için işler bekliyor olabilir. Bu durumda slurm sonradan gelen işleri çalıştırabilir, yada ilave makina boşalınca önceden bekleyen işi çalıştırabilmek için bu makinaları boş bırakmaya karar verebilir.


DIGER BEKLYEN sütunu ise, makinalar müsait olmadığı için değil de, lisanslar, kullanıcının cpu-saat'inin kalmamsı vb. diğer nedenlerle bekleyen işlerin toplam işlemci sayısını gösterir. Bu sayı hiçbir şekilde sizin işinizi etkilemez, sadece sizi bilgi vermek için gösterilmektedir.

spart komutu ise ilave bazı bilgiler de verir: Kullanıcının verdiği, çalışan, bekleyen işlerinin sayısını ve sisteme iş verirken bilmemiz gerekecek bazı değerleri de gösterir. Ayrıca kullanıcının iş veremeyeceği kuyrukları gizler. spart github sayfasından yada spart -h parametresi ile, spart komutu hakkında bilgi alabilirsiniz:


$ spart
     QUEUE STA   FREE  TOTAL RESORC  OTHER   FREE  TOTAL ||   MIN   MAX    MAXIMUM  CORES   NODE
 PARTITION TUS  CORES  CORES PENDNG PENDNG  NODES  NODES || NODES NODES   JOB-TIME  /NODE MEM-GB
      defq   *    924   2436      0      0     33     87 ||     1     -     7 days     28    126
    shortq        924   2604      0      0     33     93 ||     1     2     1 hour     28    126
     longq         24    312      0      0      1     13 ||     1     -    21 days     24     62
      gpuq          0    112      0      0      0      4 ||     1     -     7 days     28    126
   bigmemq        112    280      0      0      4     10 ||     1     -     7 days     28    510
     v100q          0     40     40      0      0      1 ||     1     1     1 days     40    375
     b224q        924   2548      0      0     33     91 ||     8    40     7 days     28    126
   core40q          0   1400  74160      0      0     35 ||     1     -     7 days     40    190
 
                  YOUR PEND PEND YOUR
                   RUN  RES OTHR TOTL
   COMMON VALUES:    0    0    0    0



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
 
 Proje     Kullanim      MaxIs  MaxCpu  MaxIs   Proje                 SariyerdeTanimli
 Adi       Izni          Verme  Calisan Calisan Bilgisi               Kullanicilar
 --------  ------------  -----  ------- ------- --------------------  ----------------
 hsaiat    ACIK(active)    220     1176     44                        kadir ahmet
 t0111     DURDURULDU       42      560     20  CPU kota asimi uyari  ahmet
 --------  ------------  -----  ------- ------- --------------------  ----------------
 Project    Project      Max    MaxCpu  MaxJob   Project              Defined-Users
 Name       Status       Submit Running Running  Info                 at-Sariyer
 
hsaiat Kullanilan-CpuSaat(CpuHour-Usage): 7093/20000 (%35),  Disk:32/200 GB (%15).
hsaiat Baslangic(StartDate): 2020-04-06 15:25:20,  Bitisi(EndDate): 2023-04-06 00:00:00                                                                    
 
t0111 Projesi Kullanilan-CpuSaat(CpuHour-Usage): 203679/202906 (%100),  Disk:692/2000 GB (%34), CPU kota asimi uyarisi!
t0111 Baslangic(StartDate): 2020-01-26 15:25:20,  Bitisi(EndDate): 2022-08-01 00:00:00
 
Burada verilen 'CpuSaat' 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 Kullanilan CpuSaat bölümünde (%100) ve CPU kota asimi uyarisi! bilgisi gözükmektedir. Bu atanan CpuSaat miktarının tüketildiğini ve DURDURULDU ifadesi ise iş vermeye kapatıldığını göstermekte. Bu ve benzeri proje uyarıları hakkında açıklamalar, sbatch hata mesajları sayfasında mevcuttur. Diğer proje olan, hsaat projesinin Kullanilan CpuSaat satırında ise (%35) değeri var. Bu hsaat projesinin atanan CpuSaat miktarının %35'ini kullanıldığını ve iş vermek için kullanılabilir durumda olduğunu gösteriyor.


Ayrıca her projenin altındaki satırlarda o projeye iş verebilecek kullanıcı listesi de görüntelenmektedir. "MaxIs Verme", MaxCpu Calisan", ve "MaxIs Calisan" sütunları, sadece o anda en fazla kaç iş verebileceğiniz, toplamda en fazla kaç işlemcilik işinizin çalışabileceği ve en fazla kaç işinizin çalışır durumda olabileceğini gösterir. Bu sınırlamalar anlık durumu gösterir, Yoğunluğa göre azalıp, artarlar. Projeniz süresince verilebilecek toplam iş sayısını GÖSTERMEZLER! UHeM'de projeniz süresince verilebilecek toplam iş sayısı sınırlaması yoktur. Projeniz kullanıma açık olduğu sürece iş verebilirsiniz.


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 -p defq                 # kuyruk (partition/queue) adi
#SBATCH -n 4                    # toplam 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 -p <kuyruk_adi> kuyruk adı, bosmakinalar komutu ile müsait olduğunu gördüğünüz bir kuyruk olmalıdır.
#SBATCH -n <cekirdek_sayisi> Toplam Çekirdek (core) yani işlemci sayısı.


Eğer Çekirdek (core), işlemci (cpu) kavramları Sizin için yeni yada kafa karıştırıcı ise Temel Kavramlar: işlemci (CPU), çekirdek (core), Soket sayfamızda ayrıntılı bilgi bulabilirsiniz.


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.


/okyanus/progs/slurm_betikleri/ adresinde önceden hazırlanmış pek çok slurm betiğini bulabilirsiniz. Kendiniz bir betik hazırlamadan önce burada kullanacağınız program için hazır bir betik mevcut mu diye bakmanızı öneririz. Sizin programınıza uygun betik bulamasanız bile, benzer işi yapan betiklerden faydalanarak çok daha kolayca işinizi çalıştırabilirsiniz.



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 6                                  # toplam cekirdek / islemci sayisi (makinalarin toplami)
#SBATCH -N 3                                  # bilgisayar sayisi
#SBATCH  --ntasks-per-node=2                  # her bir makinada kac islemci kullanilsin.
#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


Buradaki -n işinizin çalışacağı tüm işlemci sayısıdır. Bir makinadaki işlemci sayısı değildir. Örneğin -N 2 ve -n 40 derseniz, bu 2 makinada toplam 40 işlemci istiyorum demektir. Makina başına 20 işlemci demektir. 40 işlemci içeren core40q makinalarından 2 tanesini birlikte kullanmak için, -N 2 ve -n 80 şeklinde istekte bulunmalısınız.



İş Teslimi

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

 $ sbatch basit.sh
Submitted batch job 182

Son satırda gözüken Submitted batch job ifadesi işimizin teslim alındığını gösteriyor. Eğer bu ifade yerine bir hata mesajı var ise, sbatch hata mesajları sayfasında hata mesajları ve olası çözümleri konusunda ayrıntılı bilgi mevcuttur.


    

İş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


Halen devam eden işleriniz varken, biten işlerinizin durumunu görmek isterseniz, isler komutunu -a parametresi ile çalıştırabilirsiniz.


Ç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 Swap, Virtual Memory kavramları Sizin için yeni yada kafa karıştırıcı ise Temel Kavramlar: swap, paging sayfamızda ayrıntılı bilgi bulabilirsiniz.


Çalışan İşi Sonlandırmak

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

 $ scancel -v 182


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

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

Bazen 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 isler komutunun çıktısında gözüken makinalara ssh komutu ile bağlanıp, istediğimiz bilgileri doğrudan alabiliriz.


Ancak bu her makinaya ssh yapabileceğimiz anlamına gelmez. Her hangi bir işimizin çalışmadığı (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, .bashrc dosyanıza source /okyanus/progs/uhem-bin/x2go-ayarla.sh satırını eklemeliyiz. nano yada başka bir yazılım kullanarak yapabiliriz:


 $ 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

Grafik Arabirim kullanarak İnteraktif iş çalıştırmak için, öncelikle x2go programı ile sariyer login makinasına bağlanalım. Açılan terminal penceresini kullanarak, 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 EN-AZ  EN-FAZLA ISLEMCI
       ADI    BOS   TUMU    ISTEK    BOS   TUMU  GUN-SA:DK:SN MAKINA  MAKINA  /MAKINA
  ======== ======= ======= ======= ====== ====== ============ ====== ======== =======
      defq    112    1176       0      4     42    7-00:00:00     1  SINIRSIZ     28
    shortq    364    1540       0     13     55      01:00:00     1         2     28
     longq     48     360       0      2     15   21-00:00:00     1  SINIRSIZ     24
      gpuq      0      84       0      0      3    3-00:00:00     1  SINIRSIZ     28
   bigmemq    252     280       0      9     10    7-00:00:00     1  SINIRSIZ     28
     b224q    756    2576       0     27     92    1-00:00:00     8        38     28


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 7 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, ilave-moduller4 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.


Kullanmak İstediğimiz Programları Kurmak

Sariyer kümesinde kullanıcıların işlerini kolaylaştırmak için pek çok program hazır kurulu olarak mevcuttur. Ancak pek çok durumda kullanıcıların istediği her program sistemde bulunmayabilir, yada kullanıcının istediği ayarlamalar ile kurulmamış olabilir.


Bu durumda kullanıcılarımıza önerdiğimiz yol, ihtiyaç duydukları programları kendi ev dizinlerine kurmalarıdır. Bu konu ayrıntıları ile Kendi Ev Dizinimize Program Kurmak bölümünde anlatılmıştır.


Birden Fazla İşlemci Kullanacak İş Çalıştırmak

Aksine bir gayret gösterilmediği sürece, programlar seri olarak çalışırlar. Bu tarz programlarda bir process ve o process'i oluşturan bir thread mevcuttur. Bu ise bir programın bilgisayardaki sadece bir işlemciyi (çekirdeği) kullanabileceği anlamına gelir. Birden fazla işlemciyi aynı anda kullanabilmek için, programın paralel bir program olarak yazılmış olması gereklidir.


Programlarda kabaca iki şekilde paralellik sağlanmaktadır:


  1. Sadece tek bir bilgisayarda çalışabilen, birden fazla thread ile paralelleştirme: Bu yöntem için en yaygın metod OpenMP kullanmaktır.
  2. Bir çok bilgisayarı birlikte kullanabilen, birden fazla process ile paralelleştirme: Bu yöntem için en yaygın metod MPI kütüphanesi kullanmaktır. OpenMPI bir mpi kütüphanesidir. OpenMP ile isim benzerliği olduğundan bu konuda dikkatli olunmalıdır.


Çalıştıracağınız program, yukarıda bahsedilen iki metoddan birini desteklemiyorsa, çok büyük olasılıkla seri bir programdır ve sadece bir işlemci (çekirdek) kullanabilecektir. Sizin Slurm'den 1 yada 1000 makina/işlemci istemeniz bu durumu değiştirmez. Ayrıca programınızın paralel çalışması için gerekli parametreleri de bulunabilir. Bu parametreleri çalıştırırken kullanmaz iseniz, paralel çalışabilecek bir program, seri çalışmayı seçebilmektedir.

Birden Fazla Makina Kullanacak İş Çalıştırmak

Slurm'den birden fazla makina istemeniz, işinizin birden fazla makinayı (sunucuyu) kullanabileceği anlamına gelmemektedir. Slurm'e iş olarak vereceğiniz programın birden fazla bilgisayarı kullanabiliyor olması gereklidir. Programınız bu özelliğe sahip değilse, Slurm'ün bu konuda yapabileceği bir şey yoktur.


Bir programın birden fazla bilgisayarı birlikte kullanabilmesine, dağıtık hesaplama (distributed computing) denir. Dağıtık çalışabilen bilimsel programların neredeyse tamamı MPI kütüphanesini kullanarak paralelleştirilmişlerdir. Linda gibi başka kütüphaneler olsa da, mpi çok yaygın bir şekilde kullanılmaktadır.


Dolayısı ile ister paralı paket program kullanın, isterseniz açık kaynak kodlu bir program kullanın, programınızın paralel çalışıp çalışmadığını dökümanlarından kontrol etmeli ve paralel çalışması için gereken uygun parametreleri programınızı çalıştırırken kullanmalısınız.

Slurm'e Ardışık Çalışacak İşler Vermek

Bazen birbirine bağlı işleri tek bir betik ile değilde bir kaç parçaya bölerek vermek çok daha mantıklıdır. Mesela: Çalıştırmamız gereken bir program seri yada fazla işlemciye ihtiyacı olmayan bir program ise, ama sonrasında çok fazla işlemci gerektiren bir program çalıştıracaksak bu iki programı tek bir betikle çalıştırmaya çalışırsak, ikinci kısımdaki program için yüksek sayıda işlemci kullanmamız gerektiğinden ilk programımız çalışırken bu işlemciler boş bir şekilde bekleyeceklerdir.


Daha spesifik bir örnek verecek olursak: OpenFOAM işleri (icoFoam gibi) çalıştırmadan önce genelde blockMesh ve decomposePar komutlarının çalıştırılması gerekecektir. Büyük bir model için, biz bu komutların hepsini bir iş betiğine eklersek, blockMesh ve decomposePar komutları çalışırken bir çok işlemci boş bekleyecek ve bizim cpu-saat kotamızı tüketeceklerdir. Çözüm bu işi iki ayrı betik olarak vermek ve ikinci betiğin, birinci betik düzgünce tamamlandığında çalışacağından emin olmaktır.


Bu şartı sağlamak için slurm'ün bize sağladığı --dependency= parametresini kullanmalıyız:

  • --dependency=after:ISNUMARASI[:ISNUMARASI...]      Bu iş verilen iş numaralı iş (yada işler) başladıktan sonra başlasın.
  • --dependency=afterany:ISNUMARASI[:ISNUMARASI...]      Bu iş verilen iş numaralı iş (yada işler) bittikten sonra başlasın.
  • --dependency=afterok:ISNUMARASI[:ISNUMARASI...]      Bu iş verilen iş numaralı iş (yada işler) başarı ile bittikten sonra başlasın.
  • --dependency=afternotok:ISNUMARASI[:ISNUMARASI...]      Bu iş verilen iş numaralı iş (yada işler) hata ile bittikten sonra başlasın.


Öncelikle az işlemci isteyerek ilk kısımı normal bir şekilde çalıştıralım:

#!/bin/bash
#SBATCH -A hsaat                # account / proje adi
#SBATCH -n 28                    # cekirdek / islemci sayisi
                                # 28 ve katlari islemci seciniz
 
# Asagidaki satiri degistirmeyin
# ------------------------------
module load OpenFOAM/OpenFoam.org-5.x
source /okyanus/progs/OpenFOAM/5.0/OpenFOAM-5.x/etc/bashrc WM_LABEL_SIZE=64 WM_COMPILER_TYPE=ThirdParty WM_COMPILER=Gcc48 WM_MPLIB=OPENMPI FOAMY_HEX_MESH=yes
 
 
blockMesh
decomposePar


 $ sbatch ilkkisim.sh
Submitted batch job 10755


Sonrasında ise çok miktarda işlemci gerektiren ikinci kısımı çalıştırırken 10755 nolu iş düzgün bitince bu işi çalıştır diyelim:

#!/bin/bash
#SBATCH -A hsaat                           # account / proje adi
#SBATCH -n 560                             # cekirdek / islemci sayisi
#SBATCH --dependency=afterok:10755        # Yukaridaki is basarili biterse bu isi calistir.
 
# Asagidaki satiri degistirmeyin
# ------------------------------
module load OpenFOAM/OpenFoam.org-5.x
source /okyanus/progs/OpenFOAM/5.0/OpenFOAM-5.x/etc/bashrc WM_LABEL_SIZE=64 WM_COMPILER_TYPE=ThirdParty WM_COMPILER=Gcc48 WM_MPLIB=OPENMPI FOAMY_HEX_MESH=yes
 
 
# Bu satirda kullanacaginiz programi (ornekte icoFoam),
# mpirun ifadesinden sonra -parallel secenegi ile kullanmalisiniz.
# ------------------------------
mpirun icoFoam -parallel -case YAPILACAK_DENEY_DIZINI


Bir Slurm İşinin İçinde Birden Fazla Komutu Paralel Olarak Çalıştırmak

Sariyer kümesinde kaç işlemci talep ederseniz edin, işinizin çalıştığı makinaların tüm işlemcileri kullanılıyormuş gibi ücretlendirilir. Çok sayıda küçük iş çalıştırmak isteyen kullanıcılarımız bu durumda bir slurm betiği içinden aynı anda birden fazla komutu (mesela mpirun) paralel olarak çalıştırarak bir kazanç sağlayabilirler.

Bu amaçla kullanılabilecek çeşitli çözümler mevcuttur. Tüm bu çözümler tek bir makina için çalışacaktır. Birden fazla sunucuyu bir iş için kullanamazlar! Her makina için ayrı bir betik hazırlamanız gerekecektir: Birincisi, GNU'nun parallel komutunu kullanmaktır.

Bir diğer olasılıkta, UHeM tarafından hazırlanmış örnek betiği kullanmak olabilir. Bu betiği /okyanus/progs/slurm_betikleri/ayniMakinadaBirdenFazlaIs.sh adresinde bulabilirsiniz. Bu örnek betik bir makinada çalışacak şekilde yazılmıştır. Sadece bir makina isteyerek kullanıınız.

Sariyer Kümesi Yönetim Yazılımı Otomatik Epostaları

Sariyer kümesi yönetim yazılımı, çeşitli durumlarda kullanıcılarımızı uyarmak için otomatik olarak uyarı epostaları yollamaktadır. Bu gibi uyari epostaları almak istemiyorsanız sariyer makinasında aşağıdaki komutu çalıştırınız:


touch /okyanus/users/${USER}/.uyari_yollama


UHeM'deki XXXXX nolu işinizin oluşturduğu yük hakkında Epostası

Yukarıda bahsedilen otomatik epostalardan biri de bir makinada oluşan aşırı yük (load) sorunu hakkında olandır. Böyle bir durumda işiniz olması gerekenden çok daha yavaş çalışacaktır. Bu sorunun en olası sebebi, bir yandan mpirun (yada srun vb.), process sayısını kullanılabilir işlemci sayısına ayarlarken, bir yandan da thread kütüphanesinin thread sayısını makinadaki işlemci sayısına ayarlamasıdır.


Thread kütüphaneleri ile derlenmiş dağıtık programları çalıştırmanın iki yolu mevcuttur. Aslında, Tek makinada çalıştırmak şartıyla, 3. bir yol da var:


1) Tamamen dağıtık (sadece mpi ile) çalıştırmak:


İşinizi çalıştırırken işlemci sayısı kadar process açılmasını sağlamalısınız ki, mpirun veya srun'a parametre vermezseniz bu otomatik olarak yapılır. Fakat aynı zamanda slurm betiğinde aşağıdaki gibi çevre değişkenlerini ayarlayarak thread kütüphanesinin birçok thread açmasını engellemelisiniz:

export MKL_NUM_THREADS=1
export OMP_NUM_THREADS=1


Basit bir örnek verirsek:

#!/bin/bash
#SBATCH -A hsaat                # account / proje adi
#SBATCH -n 56                   # toplam cekirdek / islemci sayisi
#SBATCH -N 2                    # toplam makina sayisi
 
module load mpi/openmpi-x86_64
 
export MKL_NUM_THREADS=1
export OMP_NUM_THREADS=1
 
mpirun ./calisacak.x


2) Hibrit (mpi+threads) çalıştırmak:

Çoğu zaman bu daha hızlıdır, ancak her zaman değil. Kullandığınız kütüphanelere ve algoritmaya göre sonuç değişebilir. Bu çözüm için, --ntasks-per-node=1 slurm parametresi ile istediğiniz makina sayısı kadar process açılmasını sağlamalısınız. Dolayısı ile, mutlaka makina sayısını işlemci sayısı ile aynı olacak şekilde (-N 2 -n 2 gibi) ayarlamanız gerekecektir. Bu çözüm, genel olarak çevre değişkenlerini ayarlamayı gerektirmez. Çünkü thread kütüphanesi sizin için thread sayısını zaten makinadaki işlemci sayısına ayarlayacaktır.

#!/bin/bash
#SBATCH -A hsaat                # account / proje adi
#SBATCH -n 2                    # toplam cekirdek / islemci sayisi
#SBATCH -N 2                    # toplam makina sayisi
#SBATCH --ntasks-per-node=1
 
module load mpi/openmpi-x86_64
 
 
mpirun ./calisacak.x


3) Tek makinada çalıştırmak şartıyla, sadece thread kütüphanesi ile çalıştırmak:


Eğer programımızı tek makinada çalıştırmak bizim için yeterliyse bir başka seçeneğimizde sadece thread kütüphanesi aracılığı ile çalıştırmak olabilir. Bu seçenekte -N 1 ayarlandığına ve programımızın mpirun komutu olmadan çalıştırıldığına dikkat ediniz:


#!/bin/bash
#SBATCH -A hsaat                # account / proje adi
#SBATCH -n 28                   # toplam cekirdek / islemci sayisi
#SBATCH -N 1                    # toplam makina sayisi
 
 
module load mpi/openmpi-x86_64
 
 
./calisacak.x


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.


Birden Fazla Proje Arasında Geçiş Yapmak

Sariyer kümesinde kullanımıza açık birden fazla projeniz mevcutsa, çalıştırdığınız işler sonucu oluşan yada dışarıdan sariyer kümesine kopyaladığınız her türlü dosya/dizin, Size ait öntanımlı (default) projeye ait olacaktır. Dolayısı ile bu projenin disk kotasını tüketecektir. İşinizi verirken kullandığınız proje adının hangisi olduğu bu durumu değiştirmez. İşinizi verirken kullandığınız proje adı sadece cpu-saat kullanımının hangi projenin cpu-saat kotasından düşüleceğini belirler.


Projelerinizden hangisinin öntanımlı olduğunu projelerim komutunun altındaki Not bölümünden görebilirsiniz:


[mercan@sariyer ~ ]$ projelerim
 
 Proje     Kullanim    MaxIs  MaxCpu  MaxIs   Proje                 SariyerdeTanimli
 Adi       Izni        Verme  Calisan Calisan Bilgisi               Kullanicilar
 --------  ----------  -----  ------- ------- --------------------  ----------------
 hsaat    ACIK          480     2800    160                        ahmet mercan
 
hsaat Projesi Kullanilan CpuSaat:69,505/1,000,000 (%6),  Disk:244/10,000 GB (%2).
hsaat Projesinin Baslangici: 2019-03-22 16:45:53,  Bitisi: 2020-03-22 00:00:00
 
 
Not: Yeni olusacak tum dosyalariniz, ontanimli projeniz olan hsaat projesine ait olacaktir.
     degistir komutu ile istediginiz dosya/dizinlerin projelerini degistirebilirsiniz.
 
Burada verilen 'CpuSaat' bilgisi halen calisan isleri ve son 6 saatte bitmis isleri icermez.
Burada gecen 'CpuSaat', Sariyer veya karadeniz kumesinde 1 islemciyi 1 saat kullanmaktir.
Bir istisna olarak bigmemq kuyrugu 1.5 'CpuSaat' kullanim olarak faturalandirilmaktadir.
Ayrica, kullanilan bilgisayarlarin tum islemcileri kullanilmis gibi faturalandirilmaktadir.
Disk bilgisi yaklasik olarak 2 saat onceki durumu gostermektedir. Anlik durumu gostermez.


Şayet isterseniz, degistir komutu ile mevcut dosya yada dizinlerinizi, açık olan bir projeniz 'in kotasını kullanır hale getirebilirsiniz:


[mercan@sariyer ~ ]$ degistir hsaat DIZINIM

Bir dizinin başka bir projeye dönüştürülmesi sadece o anda içinde bulunan dosyaları etkiler. Daha sonradan bu dizine taşıyacağınız yada çalıştırdığınız iş sonucu oluşan dosyaların ait oldukları proje değişmeyecektir.

Dosyaları Daha Kolay İndirmek için Sıkıştırmak

Dosyalarınızı daha kolay indirmek için, önce sıkıştırmanızı, sonrasında UHeM'den kendi bilgisayarınıza indirmenizi tavsiye ederiz. Küçük ve az sayıda dosya için, sariyer login makinasında tar yada zip komutunu kullanabilirsiniz. Ancak büyük ve/veya çok sayıda dosyayı sıkıştırmak istediğinizde bu işlemi sariyer login makinasında yapmayınız. Bunun yerine slurm'e bir iş olarak veriniz. Bu durumda daha hızlı sıkıştırmak için paralel çalışan bir zip programı olan pigz komutunu kullanmanızı tavsiye ederiz. Bu şekilde pigz çalıştığı makinanın tüm işlemcilerini kullanarak sıkıştırma yapacaktır:

[ahmet@sariyer ~]$ pigz --best -k  DOSYA

-r parametresi ile bir dizindeki tüm dosyalar ( hepsi ayri ayri), bir seferde sıkıştırılabilir:

[ahmet@sariyer ~]$ pigz --best -k -r DIZIN


Dahası pigz programını tar komutu ile de kullanabilirsiniz. Bu sayede tüm dizini tek bir dosya olarak da sıkıştırabilirsiniz:

[ahmet@sariyer ~]$ tar cf DIZIN.tgz --use-compress-program=pigz DIZIN

GPU İşi Çalıştırmak

Sarıyer kümesinde, f001, f002 ve f003 hesaplama sunucularında 1'er adet Nvidia K20m GPU mevcuttur. Ayrıca f014 sunucusunda 4 adet NVlink2 ile bağlı Nvidia V100 GPU mevcuttur. f014 sunucusunun işletim sistemi ve cuda versiyonu diğer makinalardan farklıdır. sariyer login sunucusunda ne herhangi bir çeşit GPU, ne de GPU için gereken yazılımlar kuruludur. Dolayısı ile kullanıcılarımız GPU kullanacak programlarını sariyer makinasinda doğrudan derleyemez. GPU kullanan işlerinizi çalıştırmanız için GPU içeren hesaplama makinalarımıza özel gpuq ve v100q kuyrukları mevcuttur.


Dolayısı ile bir GPU işi çalıştırılacağı zaman Slurm'e gpuq kuyruğunu (yada v100q) 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 gibi GPU barındıran bir makinaya erişmeliyiz. Bu amaçla bir interaktif iş vererek o makinaya erişim sağlamalıyız (Burada -A ile verilen proje adını, Sizin projenizin adı ile değiştirmelisiniz):


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


Yukarıda yüklenen cuda/cuda-8.0 modulü, f014 makinası için cuda/cuda-10.2 olarak değiştirilmelidir.


İş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


Yukarıda verilen #SBATCH -p gpuq ve #SBATCH --gres=gpu:1 slurm parametreleri, f014 makinası için #SBATCH -p v100q ve #SBATCH --gres=gpu:4 olarak değiştirilmelidir.


Komutların Kullanımı Hakkında Bilgi Almak (man Komutu)

man komutu ile komutların kendi dökümanlarına (manunel page) ulaşabilirsiniz. man komutunun kullanımı Man sayfaları sayfasında anlatılmıştır.

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.



Python, Anaconda, Tensorflow, Keras, Caffe İşi Çalıştırmak

Sarıyer kümesinde Python, Anaconda, Tensorflow, Keras, Caffe işi çalıştırmak için gereken bilgileri Python, Anaconda, Tensorflow, Keras, Caffe Kullanım Kılavuzu sayfasında bulabilirsiniz.


Apache Spark İşi Çalıştırmak

Sariyer kümesinde Apache Spark 2.3.0 sürümü kuruludur. Spark yazılımını, tek bir sunucuda (spark servisleri olmadan) veya birden fazla sunucuda (spark servisleri başlatılarak) çalıştırmak mümkündür. Ancak normal Spark Cluster çözümlerinden farklı olarak, Spark işleri de Slurm sistemine bir iş olarak verilmelidir.


Tek sunucuda iş çalıştırmak için örnek slurm betiği /okyanus/progs/slurm_betikleri/spark-2.3.0-singlenode.sh adresinde mevcuttur. Birden fazla sunucuda iş çalıştırmak için örnek slurm betiği ise /okyanus/progs/slurm_betikleri/spark-2.3.0-multinode.sh adresinden edinilebilir.


GATK (Genome Analysis Toolkit)

Sariyer kümesinde gatk-4.0.2.1 sürümü ve ayrıca BWA, SAMtools, Picard, Cromwell , WDLtool, Bowtie2, Hisat2, trinity, R yazılımları da kuruludur. Bu yazılımlara ait module dosyaları ve bazı örnek slurm betikleri de mevcuttur.


Intel Parallel Studio XE for Linux

Intel Parallel Studio, derleyiciler ve hata ayıklayıcılar içeren bir yazılım paketidir. Bu pakettin bir çok sürümü sariyer kümesinde kuruludur. module komutu aracılığı ile tüm paket tek module ile (Örneğin intel/parallel_studio_xe_2019.4.070) yada ayrı ayrı her program için birer module ile gereken ayarlamalar yapılarak kullanılabilir. Paket içerisindeki programların ne amaçla kullanılabileceğine aşağıda bağlantılardan bakabilirsiniz:


https://software.intel.com/en-us/get-started-with-parallel-studio-xe-2019-for-linux

https://software.intel.com/en-us/get-started-with-parallel-studio-xe-cluster-for-linux


Intel C derleyisine icc, C++ derleyicisine icpc, ve Fortran derleyicisine ifort komutlarını kullanarak erişebilirsiniz.


Aşağıda GNU Derleyicileri için anlatılan -mtune ve -march parametrelerinin İntel Derleyicileri için benzerleri -ax ve -x parametreleridir. Çoğu durumda GNU Derleyiciler için geçerli -march ifadeleri İntel Derleyicileri için de geçerlidir. Temelde sadece -march=native yerine -xHost yazılması gerektiğine dikkat etmeniz yeterlidir.

GNU GCC Derleyicileri

Sariyer kümesinde linux dağıtımı ile gelen gcc derleyicilerinin yanı sıra module komutunu ile kullanabileceğiniz daha başka gcc sürümleri de mevcuttur. module avail komutu ile bakıldığında GNU derleyicileri için olan paket gcc adı ile gözükmektedir, ancak bu sizi yanıltmasın bu module dosyaları ile sadece gcc (C derleyisi) değil, c, c++, fortran ve go derleyicileri de gelmektedir.


GNU GCC C derleyisine gcc, C++ derleyicisine g++, ve Fortran derleyicisine gfortran, GO derleyicisine gccgo komutlarını kullanarak erişebilirsiniz.


Sarıyer Kümesi Donanım Bilgisi tablosunun İşlemci Kod Adı sütunundaki işlemci kod isimlerini gcc derleyicilerine kod derlenirken hangi işlemci için optimizasyon yapmasını ( Örneğin: -mtune=broadwell ) yada sadece o işlemciye özel derlenmiş program (executable) üretmesini istediğimizi ( Örneğin: -march=broadwell ) söylerken kullanabiliriz. -march verilen işlemciye özel derleme yaptığı için, derlenmiş programımızın, özellikle daha eski işlemcilerde çalışmama olasılığı mevcuttur. Ancak bu parametre ile büyük olasılıkla en hızlı derlenmiş programı elde edeceğimiz için program derlerken kullanmanızı tavsiye ederiz.


Sariyer Kümesinde Kullanılabilecek -mtune -march Değerleri
İşlemci Tipi İşlemci Bilgisi
native Derlemenin yapıldığı makinenin işlemcisi demektir. Sariyer kümesinde derleme işlemi sariyer makinasında (login node) yapılıyorsa, bu durumda broadwell değeri ile aynı şey olacaktır.
x86-64 Genel olarak tüm 64 Bit İntel/AMD işlemciler için derle.
haswell Intel Haswell işlemci; 64-bit, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C komut setleri ile.
broadwell Intel Broadwell işlemci; 64-bit, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW komut setleri ile.
skylake Intel Skylake işlemci; 64-bit, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES komut setleri ile.
skylake-avx512 Intel Skylake Server işlemci; 64-bit, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD komut setleri ile.

Clang (LLVM) Derleyicileri

Clang derleyicileri de Sariyer kümesinde kuruludur. LLVM/clang-llvmorg-10.0.1-gcc-8.3.0 veya LLVM/clang-llvmorg-8.0.1-gcc-8.3.0 gibi module dosyalari yüklenerek tüm LLVM-clang programlarına erişilebilir.


Gerekli module dosyası yüklendikten sonra, C derleyicisine clang, C++ derleyicisine clang++ komutu ile erişebilirsiniz. LLVM projesinde ayrıca, Kodunuzun satırlarını çeşitli standartlara göre biçimlendiren clang-format, kodunuzu kontrol eden clang-check, ve C++ kodunuzu çeşitli kriterlere göre kontrol eden clang-tidy komutları da bulunmaktadır.

core40q Kuyruğundaki Yeni Makinaların Kullanımı

core40q kuyruğundaki yeni makinaların gücünden tam anlamıyla faydalanmak için, program derlerken bu makinaların işlemcilerine uygun derleme yapabilmek için, Gcc 8.2.0 yada intel parallel_studio_xe_2018.3.051 ve sonrası bir derleyici paketi kullanmanızı öneririz.

Çok Büyük Dosya Desteği

Sarıyer kümesinin dosya sistemi olan lustre dosya sistemi, kullanıcılara çok büyük dosyaları kullanırken, sistemin gücünden daha iyi yararlanabilmek için, bir dosyanın kaç parçaya bölünerek saklanacağı konusunda ayar yapabilme imkanı sunar. Sariyer sisteminde, dosyanız normalde bir OST'de (tek parça) saklanmaktadır. Bu şekilde en yüksek hız ve en az gecikme ile dosyanıza erişebilirsiniz. Ancak dosya boyutu büyüdükce OST sayısını artırmak performansı artıracaktır. Tabiki OST sayısını artırmak bu OST'lerin birlikte çalışması için ilave haberleşme gerektireceğinden, normalde dosyanıza erişimi yavaşlatacaktır. Fakat dosya boyutu büyüdükce bir OST üzerindeki yük çok artacağı için, dosyayı parçalamak hızlanma sağlar.


Bizim tavsiyemiz dosya boyutuna göre parça (OST) sayısını seçmenizdir. 10GB 'dan küçük dosyalar için dosyayı parçalamak fayda değil, zarar (yavaşlama) getirecektir. 10GB - 50GB arası için önerimiz 2 parça (stripe), 50GB - 100GB için 4 parça seçmenizdir. 100GB'dan büyük dosyalar için 6 parça (stripe) seçmenizi öneririz.


Parça (stripe) sayısı mevcut dosya için değiştirilememektedir. Bu sebeble önce dizin yada olmayan bir dosyanın parça sayısı ayarlanmalı, sonrasında mevcut dosya, parça sayısı ayarlanmış dizine yada boş dosyaya kopyalanarak oluşturulacak yeni dosyanın parçalanması sağlanmalıdır. Taşıma (mv) işlemi dosyanın yeniden oluşturulmasını sağlamadığı için parçalama sayısını değiştirmemektedir, yani işe yaramamaktadır.


$ ls -alh buyuk-dosya.nc
-rw-r----- 1 root root 187G Aug  3 09:48 buyuk-dosya.nc
 
$ lfs getstripe /okyanus/users/mercan/buyuk-dosya.nc
/okyanus/users/mercan/buyuk-dosya.nc
lmm_stripe_count:   1
lmm_stripe_size:    1048576
lmm_pattern:        1
lmm_layout_gen:     0
lmm_stripe_offset:  5
	obdidx		 objid		 objid		 group
	     5	     140532890	    0x8605c9a	             0


Yukarıda lfs getstripe komutu ile dosyanın kaç parça saklandığını öğreniyoruz. lmm_stripe_count: 1 satırı bize dosyanın tek parça tutulduğunu gösteriyor. Bu dosyayı 6 parça halinde saklanır yapalım:


$ lfs setstripe -c 6 /okyanus/users/mercan/buyuk-dosya-yenisi.nc
 
 
$ ls -alh buyuk-dosya-yenisi.nc
-rw-r----- 1 root root 0 Aug  3 09:48 buyuk-dosya-yenisi.nc
 
 
$ cp /okyanus/users/mercan/buyuk-dosya.nc /okyanus/users/mercan/buyuk-dosya-yenisi.nc
cp: overwrite /okyanus/users/mercan/buyuk-dosya-yenisi.nc’? y
 
 
$ lfs getstripe  /okyanus/users/mercan/buyuk-dosya-yenisi.nc
/okyanus/users/mercan/buyuk-dosya-yenisi.nc
lmm_stripe_count:   6
lmm_stripe_size:    1048576
lmm_pattern:        1
lmm_layout_gen:     0
lmm_stripe_offset:  1
	obdidx		 objid		 objid		 group
	     1	     133583042	    0x7f650c2	             0
	     5	     140533580	    0x8605f4c	             0
	     3	     130545704	    0x7c7f828	             0
	     0	     143484548	    0x88d6684	             0
	     2	     141272209	    0x86ba491	             0
	     4	     131071169	    0x7cffcc1	             0


Artık 6 parçaya ayrılmış yeni bir dosya elde ettik, eskisi silerek tek parça halinden kurtulalım:

$ rm buyuk-dosya.nc


Şayet zaten var olan bir dosyanın parça sayısını ayarlamaya kalksaydık, dosyanın parça sayısı zaten ayarlı şeklinde bir hata alacaktık:


lfs setstripe -c 6 /okyanus/users/mercan/mevcut-dosya.nc
error on ioctl 0x4008669a for '/okyanus/users/mercan/mevcut-dosya.nc' (3): stripe already set
error: setstripe: create stripe file '/okyanus/users/mercan/mevcut-dosya.nc' failed


Singularity ve Docker Container Kullanımı

Günümüzünde oldukca populer olan Docker Container ne yazıkki HPC ortamı için çok da uygun değildir. Docker yazılımının sorunlarını çözerek Container teknolojisini, hesaplama kümelerinin (HPC Cluster) hizmetine sunmayı amaçlayan birkaç yazılımdan biri de 'singularity yazılımıdır. Bu yazılım sayesinde docker container'ları bir komut yardımı ile singularity Container formatına dönüştürülerek kullanılabilmektedir.


Sariyer kümesinde singularity yazılımı kuruludur. Ayrıca /okyanus/progs/Containers adresinde ubuntu-16.04, ubuntu-18.04, ubuntu-18.10, centos5-vault, centos-6, openfoam.com-v1812, wgd, bowtie2 gibi birçok Container'lar hazır bir şekilde kullanılabilir durumdadır. Bu container'lar dışında bir container kullanmak isterseniz iki seçenek mevcuttur: Birinci seçenek bize kullanmak istediğiniz container'ın linkini yollamanız ve bizim bu container'ı dönüştürerek kullanılabilr hale getirmemiz, yada sizin kendi linux bilgisayarınıza singularity yazılımını kurmanız ve kendi container'ınızı kendiniz hazırlamanız.