cc_logo_membrane_2002_w.gif

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.

VerzijaSupekPadobranVrančić
2023b(tick)(error)(error)

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:

  1. Dostaviti IP adresu Vašeg poslužitelja mrežne licencije i port-ove koje upravitelj licencija koristi na computing@srce.hr,
  2. 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),
  3. Kopirati datoteku MATLAB licencije "license.lic", na Supek na lokaciju "$HOME/.matlab/<verzija_matlaba>_licenses/license.lic",
  4. Prilagoditi uzglavlje datoteke license.lic  prema uputama koje ćete dobiti sa computing@srce.hr
  5. Raspakirati datoteku matlab_supek.zip (datoteku šalje computing@srce.hr) koja će postaviti profil Supeka na računalu na kojem se pokreće MATLAB,
    1. Datoteku raspakirati na lokaciji koju ispisuje naredba userpath u MATLAB-u,
    2. Pokrenuti naredbu configCluster u MATLAB-u → upisati korisničko ime koje vam je dodjeljeno za spajanje na Supek.
  6. 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:

PostavkaOpis
NumWorkers

Maksimalan broj radnika/procesa jednog posla:

  • default=32 (Ukoliko licencija dopušta moguća promjena)
  • Odgovara select parametru PBS-a
NumThreads

Broj dretvi po jednom radniku/procesu:

  • default=1
  • Odgovara ncpus parametru PBS-a
AdditionalProperties (SCHEDULER PLUGIN)


AdditionalSubmitArgs

Dodatna linija kod podnošenja posla:

  • default='-l place=pack' - smještanje svih resursa na jedan čvor
  • Ukoliko je traženi broj resursa veći od dostupnih resursa jednog čvora
    potrebno je ukloniti ovu liniju iz postavki
GPUs

Broj grafičkih procesora:

  • default=0
  • Odgovara ngpus parametru PBS-a
Mem

Količina memorije po jednom chunk-u:

  • default=2gb
  • Odgovara mem parametru PBS-a


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:

Stvaranje objekta c tipa "cluster"
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:

Ispis stanja posla
job.State
Ispis rezultata posla (ako je posao završen)
job.fetchOutputs{:}
Brisanje posla
job.delete


Pregledavanje i upravljanje poslovima na klasteru "c" moguće je naredbama:

Ispis svih poslova na klasteru
c.Jobs 
Stvaranje poveznice drugog posla na listi poslova
job2=c.Jobs(2)
Brisanje svih poslova klastera c (lokalno)
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.

MATLAB
#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{:}
spectral_radius.m
tic
n = 400;
A = 500;
a = zeros(n);
parfor i = 1:n
    a(i) = max(abs(eig(rand(A))));
end
t=toc


  • No labels