×
Yeni bir madde oluştur
Sayfa başlığınızı buraya yazın:
We currently have 15 articles on UHeM Wiki. Type your article name above or create one of the articles listed here!



    UHeM Wiki
    15Maddeler

    MATLAB Kullanım Kılavuzu

    Altay Kümesinde MATLAB Yazılımını Çalıştırmak

    Satın aldığımız yıllık MATLAB lisansımız, hangi üniversiteden olurlarsa olsun, akademik kullanıcılarımıza akademik çalışmaları için sınırsız MATLAB kullanabilmelerine olanak sağlamaktadır. Tüm matlab modüllerini kullanmak, ve sınırsız sayıda iş ve işlemci kullanımı mümkündür.


    Ancak sadece R2023a, R2022b, ve R2022a sürümleri yüklüdür. İşletim sistemimizle uyumlu olan en yeni sürümler bunlardır. Ayrıca uygun GPU'lu makina içeren kuyruk seçilerek GPU kullanan matlab işi de çalıştırabilirsiniz.


    Bu matlab lisansı ile matlab kullanabilmek için, kullanıcının akademik linux grubuna üye olması gereklidir. akademik grubunda olup olmadığınızı id komutu ile test edebilirsiniz:

    $ id
    uid=1677(mercan) gid=928(hsaat) groups=928(hsaat),407(akademik)
    

    Şayet akademik bir hesabınız varsa ve id komutunun çıktısında akademik grubuna üye gözükmüyorsanız, UHEM destek biriminden bir eposta ile eklenmenizi istemelisiniz. Siz istekte bulunmadan otomatik olarak bu gruba eklenmezsiniz.

    Bu Matlab Lisansı sınırsız olduğu için, matlab çalıştırma betiğinizde slurm'den lisans istemenize de gerek yoktur:

    #!/bin/bash
    #SBATCH -J "MATLAB isi"                        # isin adi
    #SBATCH -p defq                                # kuyruk (partition/queue) adi
    #SBATCH -A hsaat                               # account / proje adi
    #SBATCH -n 128                                 # toplam cekirdek / islemci sayisi
    #SBATCH -N 1                                   # makina sayisi
     
    module load MATLAB/R2023a
     
    matlab -nodisplay -nosplash < ./programimiz.m
    


    Bu betiği /ari/progs/slurm_betikleri/matlab.sh adresinde de bulabilirsiniz.


    Altay Kümesinde, Kendi Bilgisayarınızdan MATLAB Yazılımını Çalıştırmak

    İşletim sistemini ne olursa olsun (Windows, MacOSX, Linux), kendi bilgisayarınızda kurulu MATLAB yazılımından (Sadece R2023a, R2022b, ve R2022a sürümleri ile), Altay kümesine matlab hesaplama işlerinizi gönderebilirsiniz.


    Hazırlık İşlemleri

    Bu amaçla yapılması gereken bir kaç hazırlik mevcuttur:


    Altay kümesinde MATLAB yazılımını çalıştırmak konusunda bahsedilen tüm şartlar kendi bilgisayarınızdaki matlab'dan iş gönderirken de gereklidir. Sadece R2023a, R2022b, ve R2022a sürümlerinden biri bilgisayarınızda kurulu ise kullanabilirsiniz. Sadece akademik kullanıcımız iseniz, ve akademik çalışmalarınız için kullanacaksanız bu matlab imkanından yararlanabilirsiniz. Kullanıcınızın akademik linux grubuna üye olması yine gereklidir. Ayrıca her iş gönderdiğinizde yada sonuçlarını aldığınızda UHeM'e VPN ile bağlı durumda olmalısınız.


    Bu şartları sağlıyorsanız, öncelikle matlab için küme bilgisini toplamalısınız:


    $ module load MATLAB/[VERSION]
    
    Bu MATLAB sadece akademik kullanicilarca akademik isler icin kullanabilir.
    Kullanabilmek icin akademik grubuna uye olmalisiniz.
    
    $ configCluster.sh
    


    Bu işlemden sonra kendi bilgisayarınızdaki MATLAB yazılımında aşağıdaki komutu çalıştırınız:


    >> userpath
    


    Yukarıdaki komutun çıktısında gösterilen dizine https://www.uhem.itu.edu.tr/MATLAB-par/uhem-matlab-desktop.zip dosyasını indirip açınız (unzip).


    Sonrasında, UHeM'e openvpn ile bağlanarak, altay kümesine ulaşabilir durumda olunuz. Matlab'ın UHeM'e bağlanıp, configCluster.sh komutu ile hazırladığınız küme bilgisini alabilmesi için bu gereklidir.


    Eğer yukarıdaki dosyayı uygun yerine açtı iseniz, aşağıdaki komutu çalıştırarak işin çalıştırılacağı küme bilgisini alınız. Bu komut, her matlab sürümü için sadece bir kez çalıştırılmalıdır, daha sonra tekrar çalıştırmayınız:


    >> configCluster
    

    Size UHeM'deki kullanıcı adınız ve şifreniz sorulacaktır. Kullanıcı adınız kaydedilecek ve sonrasında sadece şifre istenecektir. Dilerseniz şifre yerine bilgisayarınızdaki kullanıcının gizli ssh anahtarını (ssh private key) da kullanabilirsiniz (tabiki şifresiz ssh ayarladıysanız).


    Bu komut sonrasinda artık çalıştırdığınız tüm işler için, aksini ayarlamazsanız, UHeM Altay kümesi kullanılacaktır.


    Eğer, bir hesabın kendi bilgisayarınızda yapılmasını isterseniz, aşağıdaki şekilde local makine ayarlaması yapmalısınız:


    >> % Get a handle to the local resources
    >> c = parcluster('local');
    


    İş Çalıştırma Ayarlamaları

    Matlab her hesaplama işini Altay kümesinin SLURM yazılımına bir iş betiği olarak vereceği için, matlab içerisinde bir hesaplama yapmadan sanki kendiniz bir slurm betiği hazırlar gibi gerekli iş parametrelerini matlab'a sağlamalısınız. İşleme parcluster değişkenini tanımlayarak başlıyoruz:


    >> % Get a handle to the cluster
    >> c = parcluster();
    


    Aşağıda ayarlayabileceğiniz bir çok parametre gösterilmiştir, ancak sadece kullanılacak proje (account-name) bilgisini vermek zorunludur, diğerlerini isterseniz ayarlarsınız, şart değildir:


    %[REQUIRED]
    
    >> % Specify the account
    >> c.AdditionalProperties.AccountName = 'account-name';
    
    %[OPTIONAL]
    
    >> % Specify a constraint
    >> c.AdditionalProperties.Constraint = 'feature-name';
    
    >> % Request email notification of job status to the your email adress
    >> c.AdditionalProperties.EmailAddress = 'my_email@itu.edu.tr';
    
    >> % Specify the partition
    >> c.AdditionalProperties.Partition = 'partition-name';
    
    >> % Specify cores per node
    >> c.AdditionalProperties.ProcsPerNode = 64;
    
    >> % Use reservation
    >> c.AdditionalProperties.Reservation = 'reservation-name';
    
    >> % Specify the wall time (e.g., 1 day, 5 hours, 30 minutes)
    >> c.AdditionalProperties.WallTime = '1-05:30';
    


    Bir ornek verelim:


    >> % Kullanilacak Proje / Account (#SBATCH -A) 
    >> c.AdditionalProperties.AccountName = 'hsaat';
    
    >> % Eposta adresi (#SBATCH --mail-user)
    >> c.AdditionalProperties.EmailAddress = '';
    
    >> % Kullanilacak Kuyruk (#SBATCH -p)
    >> c.AdditionalProperties.Partition = 'defq';
    
    >> % Bu kuyruktaki bir sunucudaki islemci/cekirdek sayisi
    >> c.AdditionalProperties.ProcsPerNode = 128;
    


    Burada verilen değerler parametrelerin anlaşılması için, açıklama/örnek olarak verilmiştir. Sizin kendi durumunuza uygun şekilde değişiklikleri yapmanız gereklidir. Bu örneği aynen KULLANMAYINIZ!


    Sonrasında bu ayarlamaları kaydetmeliyiz:


    >> c.saveProfile
    


    Dilerseniz emin olmak yada ayarlamadığınız değerlerin mevcut durumunu görmek için, mevcut ayarları da yazdırabiliriz:


    >> % To view current properties
    >> c.AdditionalProperties
    


    Yukarıdaki ayarlamalarda işimizin her aşamasında bize eposta yollanması için eposta bilgisi girilmesi gösterildi. Ancak bu her zaman iyi bir fikir değildir. Eğer eposta gönderilmesin istersek, eposta bilgisini silebiliriz:


    >> % Turn off email notifications
    >> c.AdditionalProperties.EmailAddress = '';
    >> c.saveProfile
    

    Daha fazlası ve kullanım örnekleri için https://www.uhem.itu.edu.tr/MATLAB-par/matlab.html sayfasına bakınız.


    Sariyer Kümesinde MATLAB Yazılımını Komut Arabiriminden Çalıştırmak

    Merkezimizdeki sariyer kümesinde kurulu bulunan MATLAB yazılımı 9.1 (R2016b) ve 9.3 (R2017b) sürümleridir ve lisansımız aşağıdaki gibidir:


    MATLAB:  20 licenses
    
    MATLAB_Distrib_Comp_Engine:  128 licenses
    
    SIMULINK:  10 licenses
    
    GADS_Toolbox:  20 licenses
    
    Image_Toolbox:  10 licenses
    
    Compiler:  10 licenses
    
    Optimization_Toolbox:  20 licenses
    
    Distrib_Computing_Toolbox:  10 licenses
    
    PDE_Toolbox:  10 licenses
    
    Symbolic_Toolbox:  10 licenses
    


    İlk satırdaki lisans matlab kodumuzun paralel çalışması için gereken lisansdır ve görüleceği üzere 128 adet lisansımız mevcuttur. Yani en fazla 20 program ve tümünün toplamı 128 işlemciye kadar matlab işi çalıştırılabilmektedir. Ayrıca sadece yukarıda lisansta gözüken toolbox'lar kullanılabilir. Diğer toolbox'lar lisans olmadığından kullanılamaz.

    Tek makinada Matlab çalıştırmak

    Matlab programı (.m uzantılı program dosyası) çalıştırmak için gereken iş dosyası aşağıdaki gibidir. Bu betiği sariyer makinasında /okyanus/progs/slurm_betikleri/matlab-R2016b.sh ve /okyanus/progs/slurm_betikleri/matlab-R2017b.sh adresinde bulabilirsiniz:

    #!/bin/bash
    #SBATCH -A hsaat                               # account / proje adi
    #SBATCH -n 28                                  # cekirdek / islemci sayisi
    #SBATCH -N 1                                   # makina sayisi / ilave ayar yapmadikca mutlaka 1 olmali
    #SBATCH -L matlab@flex5,matlabpar@flex5:28     # lisans isteniyor, buradaki sayi kullanilan cekirdek sayisi ile ayni olmali
     
    module load MATLAB/R2016b
     
    matlab -nodisplay -nosplash < ./programimiz.m
    


    Yukarıdaki örnekte makina sayısı kullanıcı mutlaka 1 olmalıdır. Dolayısı ile bu ayar yapılmazsa, en fazla 1 makinada 28 işlemci (longq kuyruğunda 24 işlemci) kullanacak iş çalıştırılabilir. Daha fazla makina kullanımı aşağıda ayrı bir bölümde anlatılmıştır.


    Aşağıda bir paralel matlab programı örnek olarak verilmiştir. Bu program http://hpcf.umbc.edu/other-packages/how-to-run-matlab-programs-on-maya sitesinden alınarak değiştirilmiştir. Ayrıca MATLAB dökümantasyonunada http://www.mathworks.com/help/pdf_doc/distcomp/distcomp.pdf adresinden ulaşabilirsiniz:


    UHeM = parcluster('local');
    poolobj = parpool(UHeM,28);
    spmd
        msg = sprintf('Hello world from process %d of %d', labindex, numlabs);
    end
     
    for i=1:poolobj.NumWorkers
        disp(msg{i});
    end
    delete(poolobj);
    


    Birden çok makinada Matlab çalıştırmak

    Birden çok makinada Matlab programı (.m uzantılı program dosyası) çalıştırmak için gereken iş dosyası aşağıdaki gibidir. Bu betiği sariyer makinasında /okyanus/progs/slurm_betikleri/matlab-R2016b-multinode.sh ve /okyanus/progs/slurm_betikleri/matlab-R2017b-multinode.sh adresinde bulabilirsiniz. Aşağıdaki betikte servisleri başlatmak için verilen R2016b ifadesi, R2017b sürümü için R2017b şeklinde olacaktır:

    #!/bin/bash
    #SBATCH -A hsaat                               # account / proje adi
    #SBATCH -n 56                                  # cekirdek / islemci sayisi
    #SBATCH -N 2                                   # makina sayisi / ilave ayar yapmadikca mutlaka 1 olmali
    #SBATCH -L matlab@flex5,matlabpar@flex5:56     # lisans isteniyor, buradaki sayi kullanilan cekirdek sayisi ile ayni olmali
     
    module load MATLAB/R2016b
    #MATLAB servisleri aciliyor, asagidaki satiri degistirmeyiniz:
    /okyanus/progs/matlabAyarla/matlab_servisleri_baslat.sh R2016b
    
     
    matlab -nodisplay -nosplash < ./programimiz.m
    
    
    #MATLAB servisleri aciliyor, asagidaki satiri degistirmeyiniz:
    /okyanus/progs/matlabAyarla/matlab_servisleri_durdur.sh R2016b
    


    Yukarıdaki örnekte matlab servislerinin açılması ve kapanması oldukça uzun zaman almaktadır, bu sebeble işiniz gerçekten gerektirmedikce yukarıdaki 1 makina için olan betiği kullanınız.


    Aşağıda bir paralel matlab programı örnek olarak verilmiştir. Bu program http://hpcf.umbc.edu/other-packages/how-to-run-matlab-programs-on-maya sitesinden alınarak değiştirilmiştir. Ayrıca MATLAB dökümantasyonunada http://www.mathworks.com/help/pdf_doc/distcomp/distcomp.pdf adresinden ulaşabilirsiniz:


    profile_UHeM = parallel.importProfile('matlab-UHeM');
    UHeM = parcluster(profile_UHeM);
    
    poolobj = parpool(UHeM,56);
    spmd
        msg = sprintf('Hello world from process %d of %d', labindex, numlabs);
    end
     
    for i=1:poolobj.NumWorkers
        disp(msg{i});
    end
    delete(poolobj);
    

    Sariyer Kümesinde Grafik Arabirimle Matlab Çalıştırmak

    Grafik arabirimle Matlab çalıştırmak için öncelikle x2go client yazılımını kendi bilgisayarımıza kurmalıyız. Gerekli açıklamaları Sariyer Kümesine İş Vermek sayfasında bulabilirsiniz.


    Sonrasında grafik arayüzle matlab çalıştırmak için gereken işlemler, Sariyer Kümesinde Grafik Arabirim Kullanarak İnteraktif İş Çalıştırmak sayfasında anlatılmıştır.