Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 dodatne potrebne verzije na computing@srce.hr.

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

Licencija i konfiguracija

...

  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.
Note

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>

Image Added

Note

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.

Warning

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:

Code Block
titleStvaranje objekta c tipa "cluster"
c = parcluster
Note

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:

Code Block
job=c.batch('script_name', 'Pool', 4)
Note

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:

Code Block
titleIspis stanja posla
job.State
Code Block
titleIspis rezultata posla (ako je posao završen)
job.fetchOutputs{:}
Code Block
titleBrisanje posla
job.delete


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

Code Block
titleIspis svih poslova na klasteru
c.Jobs 
Code Block
titleStvaranje poveznice drugog posla na listi poslova
job2=c.Jobs(2)
Code Block
titleBrisanje 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.

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