Opis
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.
Verzije
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 |
Licencija i konfiguracija
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:
- Dostaviti IP adresu Vašeg poslužitelja mrežne licencije i port-ove koje upravitelj licencija koristi na computing@srce.hr,
- Na poslužitelju mrežnih licencija otvoriti port-ove koje upravitelj koristi prema IP adresama pristupnih poslužitelja Supeka (161.53.2.37 i 161.53.2.36),
- Kopirati datoteku MATLAB licencije "license.lic", na Supek na lokaciju "$HOME/.matlab/<verzija_matlaba>_licenses/license.lic",
- Prilagoditi uzglavlje datoteke license.lic prema uputama koje ćete dobiti sa computing@srce.hr,
- Raspakirati datoteku matlab_supek.zip (datoteku šalje computing@srce.hr) koja će postaviti profil Supeka na računalu na kojem se pokreće MATLAB,
- Datoteku raspakirati na lokaciji koju ispisuje naredba userpath u MATLAB-u,
- Pokrenuti naredbu configCluster u MATLAB-u → upisati korisničko ime koje vam je dodjeljeno za spajanje na Supek.
- Prilikom pokretanje prvog posla (MATLAB sam otvara prozor) dodati lokaciju datoteke ssh privatnog ključa i lozinke (ako je definirana). Privatni ključ mora odgovarati javnom djelu ključa za pristup Supeku koji ste učitali koristeći web aplikaciju https://computing.srce.hr.
Za korake 1. i 2. obratite se vašem mrežnom/MATLAB administratoru.
Konfiguraciju je potrebno napraviti samo jednom.
Postavljanje profila
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:
|
Podnošenje i upravljanje poslovima
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)
Primjer
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