MATLAB je programska i numerička računalna platforma koja se koristi za analizu podataka, razvoj algoritama i stvaranje modela. Inženjeri i znanstvenici širom svijeta koriste MATLAB za niz aplikacija, u industriji i akademskoj zajednici, uključujući duboko učenje i strojno učenje, obradu signala i komunikacije, obradu slike i videa, sustave upravljanja, testiranje i mjerenje, računalne financije i računalnu biologiju.
Srce ne pruža uslugu korištenja MATLAB Parallel Servera korisnicima bez licencije. |
Na superračunalu Supek dostupan je MATLAB Parallel Server. MATLAB Parallel Server omogućava skaliranje MATLAB programa sa vašeg računala na Supek superračunalo. Za korištenje MATLAB Parallel Server-a potrebno je imati vlastitu licenciju za korištenje.
Verzija MATLAB Parallel Servera mora biti kompatibilna sa tj. jednaka verziji MATLAB-a iz koje pokrećete posao. Ukoliko se vaša verzija MATLAB-a ne nalazi na popisu, potrebno je poslati upit za postavljanje potrebne verzije na computing@srce.hr.
Verzija | Supek | Padobran | Vrančić |
---|---|---|---|
2023b |
Za korištenje MATLAB Parallel Servera na Supeku potrebno je omogućiti komunikaciju između Vašeg poslužitelja mrežne licencije i pristupnih poslužitelja Supek-a. Mrežni upravitelj licenci koristi 2 TCP port-a za komunikaciju sa poslužiteljim na kojem se pokreće MATLAB Parallel Server. Portove koje koristi mrežni upravitelj licencija moguće je provjeriti na samom poslužitelju licencija ili u datoteci licencije (license.lic ili license.dat).
Prije korištenja aplikacije MATLAB Parallel Server na Supeku potrebno je:
Za korake 1. i 2. obratite se vašem mrežnom/MATLAB administratoru. |
Konfiguraciju je potrebno napraviti samo jednom.
Pokretanjem configCluster (korak 5. poglavlja Licencija i konfiguracija) naredbe postavljen je profil klastera Supek. Poslovi će se nakon ove naredbe pokretati na Supeku ako nije definirano drugačije.
Postavke profila moguće je pregledati odabirom u izborniku MATLAB-a:
Home → Parallel → Create and Manage Clusters → Supek <verzija>
Zadano ("default") izvođenje poslova na lokalnom računalu moguće je (vratiti) zadavanjem "Processes" klaster profila ("Set as Default"). |
Postavke profila definiraju parametre poslova koji se podnose na Supeku. Postavke je moguće mijenjati pritiskom na tipku "Edit".
Neke od važnijih postavki profila:
Postavka | Opis |
---|---|
NumWorkers | Maksimalan broj radnika/procesa jednog posla:
|
NumThreads | Broj dretvi po jednom radniku/procesu:
|
AdditionalProperties (SCHEDULER PLUGIN) | |
AdditionalSubmitArgs | Dodatna linija kod podnošenja posla:
|
GPUs | Broj grafičkih procesora:
|
Mem | Količina memorije po jednom chunk-u:
|
Na Supeku je omogućeno pokretanje samo "batch" MATLAB Parallel Server poslova.
Interaktivi poslovi koji se pokreću sa naredbom parpool nisu omogućeni na Supeku! |
Prije okretanja poslova potrebno je stvoriti objekt tipa "cluster" sa naredbom parcluster:
c = parcluster |
Naredba parcluster bez argumenata stvara "cluster" objekt iz zadanog (default) "cluster" profila |
Poslovi se podnose sa batch naredbom. Batch naredba pokreće posao iz skripte/datoteke ili funkcije. Opcijom 'Pool' definiramo broj "worker-a" ili radnih procesa. Kada podnesemo posao, batch će automatski dodati još jednog kontrolnog "worker-a" koji izvršava naredbe skripte.
Primjer pokretanja posla tj. izvršavanje naredbi iz skripte 'script_name' koristeći 4 CPU jezgre (worker-a) + 1 CPU (kontrolni) na klasteru "c". Naredbom je stvorena i varijabla "job" tj. poveznica do objekta posla tipa job:
job=c.batch('script_name', 'Pool', 4) |
Posao će se podnijeti sa argumentima '-l select=5:ncpus=1:ngpus=0:mem=2gb -l place=pack' |
Koristeći varijablu job definiranu npr. gornjom naredbom možemo dohvatiti status i rezultate posla:
job.State |
job.fetchOutputs{:} |
job.delete |
Pregledavanje i upravljanje poslovima na klasteru "c" moguće je naredbama:
c.Jobs |
job2=c.Jobs(2) |
delete(c.Jobs) |
U primjeru stvaramo cluster objekt iz zadanog profila klastera. Podnosimo posao definiran u skripti spectral_radius.m na 5 CPU jezgre (4 radna i 1 kontrolni proces), provjeravamo status i ispisujemo rezultat ukoliko je posao završio.
Posao mora biti podnesen iz direktorija u kojoj se nalazi spectral_radius.m skripta.
#Stvaranje objekta "c" tipa cluster >>c=parcluster #Podnošenje batch posla iz datoteke spectral_radius.m >>job = c.batch('spectral_radius', 'Pool',4) #Provjera statusa posla >>job.State #Ispis rezultata posla >>job.fetchOutputs{:} |
tic n = 400; A = 500; a = zeros(n); parfor i = 1:n a(i) = max(abs(eig(rand(A)))); end t=toc |