Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avAdam Hedlund
1
Matlab på klustret Lotka
2
Nya dataprogram som behövs Putty, terminalfönster därifrån startar man sina program. Vi börjar med ett enkelt exempel
3
Matlab program som behövs En script fil (inga funktioner i denna!) som kör ett program och sparar data :My_program.m: [Sum]=My_model([1 2]); %Kör programmet save([ '/home/ninha/work/ResMap/Resultat’ ],’Sum’ ); Antingen har man sitt program i script filen eller i en separat fil: My_model.m: function [ut]=My_model(in) ut=sum(in);
4
Sun Grid Engine Heter köhanterings-programmet som man skickar sitt job till. Det programmet sköter kön och startar ditt job när det finns plats ledigt. Det finns mer att läsa i dator handboken: https://cms.ifm.liu.se/intranet/computer_ha ndbook/common_resources/hpc/sge/
5
Sh-script SGE förstår sh-script. Vi behöver göra en.sh-fil som sge kan använda för att köra vårt matlab- program (My_program.m).
6
#!/bin/sh -x module add matlab /pkg/matlab/7.4/bin/matlab -nodisplay -nojvm <<END addpath('/home/ninha/work/MinMap/') My_program quit END Läs med sh Starta matlab utan grafik och gör allt som jag säger tills END Om jag använder fler sub funktioner som jag gjort själv hittar du dem här Kör mitt program Filen MyJob.sh
7
Logga in på lotka (eller starfleet) Starta putty och logga in på en submit host t.ex. uma en av ifm’s datorer som man kan nå klustret ifrån. Adress: uma.ifm.liu.se. Du står nu i din home-katalog Skapa kataloger där du kan lägga dina program och spara dina filer. Man skapar kataloger med mkdir och går mellan kataloger med cd.
8
Så loggar man in på putty
9
Inloggad på uma Användare Lösenord Skapa katalog Gå ner i katalogen Gå upp igen
10
Skicka iväg jobbet 1 Kopiera först upp dina 3 program (2st.m och ett.sh) till din home-katalog. Och ev. underprogram. Logga sen in med putty och ställ dig i katalogen där de ligger. (Gå dit med cd) Unix-iferafilerna om det behövs med dos2unix filnamn. (Kolla i.e filerna om programmet kraschar. Finns där ^M tecken är det dos2unix som behövs)
11
Skicka iväg jobbet 2 Skicka iväg programmet genom att skriva qsub –q lotka.q MyJob.sh Vad betyder det? Skicka iväg mitt job (MyJob) med qsub. Lägg det i kön (-q) till klustret lotka.
12
Så ser det ut
13
.o.e filer och annat att tänka på Varje gång man kör ett jobb sparas felmeddelanden i en.e fil och alla utskrifter i en.o fil. Filen hamnar överst i home- katalogen. Om man glömmer ; i matlab kan.o filerna bli stora och fylla home-katalogen. Släng filerna (.o och.e) när du inte behöver dem längre. Via uma med rm, eller med utforskaren. Se till att alla sökvägar stämmer.
14
Så pratar men med SGE Med qsub skickar man iväg sitt job Med qhost ser man vilka klusterdatorer som finns Med qstat ser du vilka körningar som görs. Första raden är ett nummer som är id på körningen. Med qdel kan du avbryta dina program. Skriv qdel nummret (som du hittade med qstat).
15
Om man vill köra med olika parameterkombinationer? Ska man köra många körningar är det bra med en matris där varje rad är en körning och varje kolumn en parameter. Sen kör man sitt program med första radens parametrar, en gång till med nästa rads parametrar osv.
16
Matrisen Jag har tre parametrar k och n. Jag vill testa med n=1 och 2, k=15 och 16. Då skapar jag en matris: 1 15 2 15 1 16 2 16 Första körningen svarar mot att n =1 och k=15.
17
Program man kan använda för att skapa matrisen function [Pars]=My_create_parameter_matrix n=[1 2]'; k=[15 16]'; Pars=n; Pars=My_add_parameter_to_pars(Pars,k); function [Pars]=My_add_parameter_to_pars(Pars,Vector); [i,j]=size(Pars); Pars=repmat(Pars,length(Vector),1); NewValues=My_find_a_Nofbi(i,Vector); Pars(:,j+1)=NewValues; function [V]=My_find_a_Nofbi(a,B) V=repmat(B,1,a); V=reshape(V',numel(V),1);
18
Ändringar i matlab programen I script-filen skickar vi vidare a till huvudprogrammet. [Sum]=My_model(a); %Kör programmet save([ '/home/ninha/work/ResMap/Resultat’ num2str(a) ], 'Sum’ ); Första jobbet vi kör är a=1 (dvs vi hämtar parametrarna från rad 1 i matrisen) och resultatet sparas som Resultat1.mat I modellfilen kan man generera eller ladda matrisen och sen plocka ut parametrarna. function [ut]=My_model(in) My_create_parameters_matrix; %generera matrisen n=Pars(in,1); %Plocka ut parametrarna k=Pars(in,2);%-------ll-------------- ut=n+k;%Modellen!
19
Ändringar i MyJob.sh #!/bin/sh -x module add matlab /pkg/matlab/7.4/bin/matlab -nodisplay -nojvm <<END addpath('/home/ninha/work/MinMap/') a=$SGE_TASK_ID; My_program quit END Det nya! Betyder: Jag skickar med vilken rad ur matrisen som ska användas och i matlab ska radindex heta a.
20
Skicka iväg jobbet 2 Skicka iväg programmet genom att skriva qsub –q lotka.q –t 1-8:2 MyJob.sh Vad betyder det? Skicka iväg mitt job (MyJob) med qsub. Lägg det i kön (-q) till klustret lotka. Jag vill att du att du kör samma program flera gånger (-t) och skickar med en varibel varje gång som går från 1 till 8 i steg om två. Dvs. vårt program körs 4ggr med radindex a=1, 3, 5 och 7. Varibeln (radindex) får automatiskt det mystiska namnet SGE_TASK_ID
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.