QCG-SimpleClient oferuje prosty, wzorowany na poleceniech systemu kolejkowego, interfejs do infrastruktury QCG.
qcg-sub plik_z_opisem
Zlecenie zadania do wykonania na infrastrukturze QCG zgodnie z uproszczonym opisem
plik_z_opisem - ścieżka do pliku z uproszczonym opisem zadania
qcg-sub /home/piontek/tasks/date.qcg qcg-sub ./tasks/date.qcg
qcg-list czas_jednostka [stan,[stan]]
Wyświetlenie listy zleconych zadań wraz z informacjami o nich.
czas_jednostka - Opcjonalnie można podać z jakiego czasu mają być zadania - z ostatnich „liczba” dni („d”), godzin („h”), minut („m”).
stan - Drugim opcjonalnym parametrem jest lista stanów zadań oddzielonych przecinkami (bez spacji). W przypadku niepodania stanów wyświetlane są zadania niezakończone.
qcg-list qcg-list 7d qcg-list 1m qcg-list 7d finished qcg-list 1m finished,failed
Dla wygody użytkowników zamiast listy stanów możliwe jest podanie zdefiniowanych stałych:
qcg-list 7d all qcg-list 7d terminated qcg-list 7d unterminated
qcg-info jobId pokaz_opis
Wyświetlenie szczegółowej informacji o danym zadaniu.
jobId - identyfikator eksperymentu.
pokaz_opis- Jeśli pokaz_opis ma wartość „true” to dodatkowo wyświetlany jest opis zadnia. Domyślną wartością jest „false”.
qcg-info J1331196390748_date_3099 true
gcg-peek jobId liczba_znaków
Podgląd wyjścia (stdout, stderr) aplikacji.
jobId - identyfikator eksperymentu,
liczba_znaków- liczba znaków do wyświetlenia,
qcg-peek J1331196390748_date_3099 qcg-peek J1331196390748_date_3099 10
qcg-proxy
Utworzenie certyfikatu proxy użytkownika.
qcg-proxy
qcg-cancel jobId
Anulowanie zadania.
jobId - identyfikator eksperymentu
qcg-cancel J1331196390748_date_3099
qcg-clean jobId
Usunięcie katalogu roboczego zadnia.
jobId - identyfikator eksperymentu
qcg-clean J1331196390748_date_3099
qcg-interactive plik_z_opisem
Zlecenie zadania interaktywnego.
plik_z_opisem - ścieżka do pliku z uproszczonym opisem zadania
qcg-interactive /home/piontek/tasks/bash.qcg qcg-interactive ./tasks/bash.qcg
Korzystając z polecenia qcg-interactive można zlecić wykonanie dowolnej interaktywnej tekstowej aplikacji.
Szczególnie częstym i użytecznym przypadkiem jest interaktywne uruchomienie konsoli poleceń umożliwiające np. kompilację oprogramowani na klastrze, do którego nie ma dostępu poprzez SSH.
W opisie zadania dla interaktywnego uruchomienia konsoli poleceń wystarczy podać nazwę klastra, na którym ma sie uruchomić konsola oraz podać scieżkę do preferowanego interpretera poleceń (np. bash).
#QCG host=inula.man.poznan.pl /bin/bash
W opisie zadania interaktywnego można korzystać również z innych dyrektyw QCG celem podania np. wymagań zasobowych dla zadania interaktywnego.
qcg-connetct jobId
Utworzenie z klienta QCG interaktywnej sesji w katalogu roboczym danego zadania
jobId - identyfikator eksperymentu
qcg-connect J1331196390748_date_3099
qcg-refetch jobId
Ponowne skopiowanie plików wynikowych zadania.
jobId - identyfikator eksperymentu
qcg-refetch J1331196390748_date_3099
Zlecany plik jest plikiem tekstowym, który może zawierać dyrektywy infrastruktury QCG.
Dyrektywą jest każda linia zaczynająca się od ”#QCG”.
Jeżeli w pliku nie zdefiniowano dyrektywy ”executable
” ani ”application
” uruchamiany jest zlecany plik z opisem zadania.
#QCG application=namd
#QCG argument=arg1 #QCG argument=arg2
W przypadku nie podania dyrektywy „not_before” system próbuje dokonać rezerwacji zasobów od aktualnej chwili. Dyrektywa wyklucza równoczesne użycie „not_after”.
#QCG deadline=P3DT12H
#QCG not-before=2012.07.25 #QCG deadline=P3DT12H
#QCG environment=name -> piontek #QCG environment=location -> poznan
error - lokalizacja gdzie ma być przegrany standardowe wyjście błędów zadnia (stderr). Jeśli nie jest to lokalizacja gsiftp zakłada się, że jest ustalana względem katalogu, z którego zlecono zadanie
#QCG error=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/errors/${JOB_ID}.error #QCG error=error.txt
#QCG executable=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/executables/exec1 #QCG executable=executables/exec1 #QCG executable=executables/exec1 -> exec-file
#QCG grant=plgpiontek_grant
#QCG host=reef.man.poznan.pl #QCG host=zeus.cyfronet.pl
#QCG input=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/inputs/experiment.input #QCG input=input.txt
#QCG memory=1024
#QCG module=nwchem/6.0 #QCG module=namd
#QCG monitor=monitor-script.sh
#QCG name=nobel-experiment
Przykład dla PBSa oznaczający dane zadanie jako wznawialne.
(-r y|n Declares whether the job is rerunable.)
#QCG native=-r n
#QCG nodes=10:5:1 #QCG nodes=12:12
#QCG not-after=2012.08.25 #QCG walltime=PT2H
#QCG not-after=2012.08.25 13:20 #QCG walltime=PT2H
#QCG not-before=2012.07.25 #QCG walltime=PT2H
#QCG not-before=2012.07.25 15:20 #QCG walltime=PT2H
#QCG note=moje pierwsze zadanie QCG
#QCG notify=mailto:piontek@man.poznan.pl #QCG notify=xmpp:tomasz.piontek@gmail.com
W przypadku checi otrzymywania powiadomień protokołem xmpp konieczne jest dodanie do kontaktów nadawcy: qcg-notification@plgrid.pl
#QCG output=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/outputs/${JOB_ID}.output #QCG output=output.txt
#QCG persistent
#QCG postprocess=tar cvf wynik.tar *
#QCG postprocess=postprocess-script.sh
#QCG preprocess=mkdir outputs
#QCG preprocess=preprocess-script.sh
#QCG procs=32
#QCG properties=mpi,ib,lustre
#QCG queue=plgrid
#QCG host=reef.man.poznan.pl #QCG reservation=piontek.0
#QCG stage-in-dir=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/inputs -> inputs #QCG stage-in-dir=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/inputs #QCG stage-in-dir=input_dir -> inputs #QCG stage-in-dir=input_dir
Skopiowanie całego katalogu w którym uruchomiony został klient odbywa się poprzez podanie ”.” (kropki) jako nazwy katalogu źródłowego i ewentualnie docelowego
#QCG stage-in-dir=. -> . #QCG stage-in-dir=. #QCG stage-in-dir=. -> input
W przypadku braku drugiego parametru plik kopiowany jest pod nazwę źródlową.
#QCG stage-in-file=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/inputs/input.txt -> input.txt #QCG stage-in-file=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/inputs/input.txt #QCG stage-in-file=input_file.txt -> input.txt #QCG stage-in-file=input_file.txt
#QCG stage-out-dir=results -> gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/results/${JOB_ID} #QCG stage-out-dir=results -> gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/results/${JOB_ID} #QCG stage-out-dir=results -> result #QCG stage-out-dir=results
Skopiowanie całego katalogu w którym wykonane było zadanie odbywa się poprzez podanie ”.” (kropki) jako nazwy katalogu źródłowego.
#QCG stage-out-dir=. -> . #QCG stage-out-dir=. #QCG stage-out-dir=. -> output
#QCG stage-out-file=results.txt -> gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/results/result.1 #QCG stage-out-file=results.txt #QCG stage-out-file=result.txt -> ${JOB_ID}.result #QCG stage-out-file=result.txt
#QCG use-reservation #QCG walltime=PT2H
#QCG walltime=P3DT12H
#QCG watch-output=mailto:piontek@man.poznan.pl,20,ENERGY
#QCG stage-in-file=nft_expr_file #QCG watch-output=mailto:piontek@man.poznan.pl,30,ntf_expr_file
W opisie zadania możliwe jest użycie następujących zmiennych:
Uruchomienie na klastrze galera aplikacji „gaussian”.
#QCG queue=plgrid-long #QCG name=etanal #QCG note=etanal Gaussian #QCG output=${JOB_ID}.output #QCG error=${JOB_ID}.error #QCG stage-in-file=etanal.gjf -> etanal.gjf #QCG stage-out-file=wynik.tar -> ${JOB_ID}.tar #QCG nodes=1:12 #QCG host=galera.task.gda.pl #QCG persistent #QCG walltime=P7D #QCG notify=mailto:piontek@man.poznan.pl #QCG memory=15360 #QCG preprocess=echo START #QCG application=g09 #QCG argument=etanal.gjf #QCG postprocess=tar cvf wynik.tar *
Eksperyment polegający na:
#!/bin/bash #QCG queue=plgrid #QCG persistent #QCG host=reef.man.poznan.pl #QCG output=output #QCG error=error #QCG stage-in-dir=inputs -> inputs /bin/tar -czf output.tgz inputs/input.* #QCG stage-out-file=output.tgz -> output.tgz
Uruchomienie aplikacji NAMD
#QCG note=NAMD apoa1 #QCG name=ex_1 #QCG host=hydra.icm.edu.pl #QCG walltime=PT10M #QCG queue=plgrid #QCG nodes=1:12:12 #QCG persistent #QCG output=apoa1.output #QCG error=apoa1.error #QCG application=NAMD #QCG argument=apoa1/apoa1.namd #QCG stage-in-file=apoa1.zip #QCG preprocess=unzip apoa1.zip #QCG stage-out-dir=. -> results #QCG notify=xmpp:tomasz.piontek@plgrid.pl #QCG watch-output=mailto:tp@mail,20,ENERGY