MATLAB Kullanım Kılavuzu

UHeM sitesinden
Atla: kullan, ara

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

Merkezimizdeki sariyer ve maslak kümelerinde kurulu bulunan MATLAB yazılımı 9.1 (R2016b) sürümüdür ve lisansımız aşağıdaki gibidir:


Users of MATLAB:  (Total of 10 licenses issued;  Total of 0 licenses in use)

Users of SIMULINK:  (Total of 10 licenses issued;  Total of 0 licenses in use)

Users of GADS_Toolbox:  (Total of 10 licenses issued;  Total of 0 licenses in use)

Users of Image_Toolbox:  (Total of 10 licenses issued;  Total of 0 licenses in use)

Users of MATLAB_Builder_for_Java:  (Total of 10 licenses issued;  Total of 0 licenses in use)

Users of Compiler:  (Total of 10 licenses issued;  Total of 0 licenses in use)

Users of Optimization_Toolbox:  (Total of 10 licenses issued;  Total of 0 licenses in use)

Users of Distrib_Computing_Toolbox:  (Total of 10 licenses issued;  Total of 0 licenses in use)

Users of Symbolic_Toolbox:  (Total of 10 licenses issued;  Total of 0 licenses in use)

Users of MATLAB_Distrib_Comp_Engine:  (Total of 128 licenses issued;  Total of 0 licenses in use)


Son 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 10 program ve tümünün toplamı 128 işlemciye kadar matlab işi çalıştırılabilmektedir.


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 adresinde bulabilirsiniz. Aynı betiğe maslak kümesinde /RS/progs2/slurm_betikleri/matlab-R2016b.sh adresinde erişebilirsiniz:

#!/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ı kendi matlab ayarlarına bir "generic cluster" profili ekleyip, slurm için gerekli düzenlemeleri yapmadıkca mutlaka 1 olmalıdır. Dolayısı ile bu ayar yapılmazsa, en fazla 1 makinada 28 işlemci (maslak kümesinde 24 işlemci) kullanacak iş çalıştırılabilir.


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ınmıştır. Ayrıca MATLAB dökümantasyonunada http://www.mathworks.com/help/pdf_doc/distcomp/distcomp.pdf adresinden ulaşabilirsiniz:


poolobj = parpool(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);


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.

Karadeniz ve Anadolu Kümelerinde MATLAB Yazılımını Çalıştırmak

Merkezimizde kurulu bulunan MATLAB yazılımı 7.7.0.471 (R2008b) sürümüdür ve lisansımız aşağıdaki gibidir:

Users of MATLAB_Distrib_Comp_Engine:  (Total of 128 licenses issued; 
Total of 0 licenses in use)

Users of MATLAB:  (Total of 20 licenses issued;  Total of 0 licenses in use)

Users of SIMULINK:  (Total of 10 licenses issued;  Total of 0 licenses
in use)

Users of GADS_Toolbox:  (Total of 20 licenses issued;  Total of 0
licenses in use)

Users of Image_Toolbox:  (Total of 10 licenses issued;  Total of 0
licenses in use)

Users of Compiler:  (Total of 10 licenses issued;  Total of 0 licenses
in use)

Users of Optimization_Toolbox:  (Total of 20 licenses issued; Total of 0
licenses in use)

Users of Distrib_Computing_Toolbox:  (Total of 10 licenses issued; 
Total of 0 licenses in use)

Users of PDE_Toolbox:  (Total of 10 licenses issued;  Total of 0
licenses in use)

Users of Symbolic_Toolbox:  (Total of 10 licenses issued;  Total of 0
licenses in use)

Matlab kodunuz bu modüllerin dışında bir modül kullanıyorsa, bizim lisansımız bu kodunuzu çalıştırmanıza müsade etmeyecektir.

MATLAB'ın paralel hesaplama eklentisini kullanmak için gerekli ayarlar aşağıda listelenmiştir.

Adım Açıklama
NX ile bağlanma NX Kullanım Kılavuzu'nda belirtilen adımları uygulayarak lnode.uhem.itu.edu.tr veya hesabınız Ege2 sistemini kullanacak şekilde ayarlanmış ise elogin.uhem.itu.edu.tr sunucusuna bağlanın. Bu belgede elogin sunucusu kullanılmıştır ancak lnode için aynı adımlar geçerlidir.
Adım 1: MATLAB'i başlatma.
MATLAB'i başlatmak için /RS/progs/matlab/bin/matlab komutunu kullanın. /RS/progs altında kurulu varsa diğer MATLAB sürümlerini paralel hesaplama eklentileri olmadığı için kullanmayınız.
Adım 2: Konfigürasyona giriş.
Parallel menüsünden Manage Configurations... seçeneğini tıklayın.
Adım 3: Yeni konfigürasyon ekleme.
Configurations Manager penceresinde File/New/lsf seçeneğini tıklayın. Merkezimizde kuyruk yönetimi için LSF kullanıldığı için lsfi seçtik.
Adım 4: Konfigürasyon ayarları
  • Configuration Name bölümüne arada boşluk ve Türkçe karakter içermeyen kısa bir isim verin. Vereceğiniz bu ismi daha sonra MATLAB programlarınızda kullanacaksınız. Konfigürasyona vereceğiniz adın çekirdek sayısını içermesine önem gösterin çünkü çekirdek sayısını dinamik olarak değiştiremiyorsunuz. Her farklı çekirdek sayısı için farklı konfigürasyonlar tanımlamak zorundasınız. Buradaki örnekte Ege2 sistemini ve toplam 8 çekirdek kullanacağımız için ege2_8_islemci ifadesini kullandık.
  • ClusterMatlabRoot bölümüne /RS/progs/matlab yazıyoruz.
  • ClusterSize bölümüne kullanacağımız çekirdek sayısını veriyoruz. Bu örnekte 8 çekirdek kullanacağımız için 8 verdik.
  • DataLocation bölümüne MATLAB'in paralel hesaplama sırasında yazacağı geçici dosyalar için bir klasör belirtiyorsunuz. Buraya RS altındaki ev dizininizi verebilirsiniz. Bu örnekte huseyin.kaya kullanıcısı sözkonusu olduğu için /RS/users/huseyin.kaya yazdık.
  • SubmitArguments bölümüne proje (-P "ProjeAdı"), kuyruk (-q "KuyrukAdı"), sunucu grubu (-m "SunucuGrubu") ve işlemci sayısını (-n "*") yazıyorsunuz. Proje adınız size gelen e-Posta da belirtilmiştir. Hangi kuyruklara iş verebileceğinizi bulmak için bqueues -u "KullanıcıAdı" komutunu kullanabilirsiniz. LSF hakkında daha fazla bilgi için :LSF_Kullanım_Kılavuzu'na bakabilirsiniz.
  • ClusterOsType bölümünde unix seçiliyor.
  • HasSharedFileSystem bölümünde true seçiliyor.
Adım 5: Konfigürasyon ayarları: Jobs sekmesi
Jobs isimli sekmede Number of workers... bölümüne 8 sayılarını yazıyoruz.
Adım 6: Konfigürasyon ayarları: Tasks sekmesi
Bu sekmede Unseti aynen bırakıyoruz.
Adım 7: Konfigürasyonun testi
Konfigürasyonu kaydettikten sonra Start Validation butonuna tıklayarak doğrulamasını sağlıyoruz. Bu adım 10 dakika kadar sürebilir. Eğer herşey yolunda ise bolce Succeeded ifadesi görmelisiniz. Eğer adımlardan birisi bile hata verirse adımları eksiksiz olarak yaptığınızdan emin olduktan sonra destek ekibimizle irtibata geçiniz.
Adım 8: Test programını yazma
Konfigürasyonun nihai testini yapmak için resimde görünen basit MATLAB betiğini hazırlayın. Bu betiğin RS altında olması gereklidir. Bu örnekte RS ev dizininin hemen altında test.m isimli bir betik yaratılımıştır: /RS/users/huseyin.kaya/test.m. Betiğin içeriğini test.m sayfasından kopyalabilirsiniz.
Adım 9: Paralel program testinin çalıştırılması.
Yazdığınız betiği şimdi çalıştırabilirsiniz. Eğer her şey yolunda giderse ekran çıktısındakine benzer mesajları görmeniz gerekiyor. Burada dikkat edilmesi gereken mesajlar Seri kod ve Paralel kod bölümleri. Örnek çıktıda seri kodun 30.69 saniye sürerken, paralel kod 3.20 saniye sürmüş. 8 çekirdek kullandığımız için kabaca 8 katlık bir hızlanma elde ettiğimiz görünüyor.