QCG-SimpleClient oferuje prosty, wzorowany na poleceniech systemu kolejkowego, interfejs do infrastruktury QCG.

Polecenia

Składnia poleceń

qcg-sub

qcg-list

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

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

 

qcg-peek

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

qcg-proxy

Utworzenie certyfikatu proxy użytkownika.

qcg-proxy

 

qcg-cancel

qcg-cancel jobId  

Anulowanie zadania.
jobId - identyfikator eksperymentu

  qcg-cancel J1331196390748_date_3099

 

qcg-clean

qcg-clean jobId  

Usunięcie katalogu roboczego zadnia.
jobId - identyfikator eksperymentu

  qcg-clean J1331196390748_date_3099

 

qcg-interactive

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-connect

qcg-connetct jobId
Utworzenie z klienta QCG interaktywnej sesji w katalogu roboczym danego zadania
jobId - identyfikator eksperymentu

qcg-connect J1331196390748_date_3099

qcg-refetch

qcg-refetch jobId  

Ponowne skopiowanie plików wynikowych zadania.
jobId - identyfikator eksperymentu

  qcg-refetch J1331196390748_date_3099

 

Format opisu zadań

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.

application

#QCG application=namd

argument

#QCG argument=arg1
#QCG argument=arg2

deadline

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

environment

#QCG environment=name -> piontek
#QCG environment=location -> poznan

error

executable

#QCG executable=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/executables/exec1
#QCG executable=executables/exec1
#QCG executable=executables/exec1 -> exec-file

grant

#QCG grant=plgpiontek_grant

host

#QCG host=reef.man.poznan.pl
#QCG host=zeus.cyfronet.pl

input

#QCG input=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/inputs/experiment.input
#QCG input=input.txt

memory

#QCG memory=1024

module

#QCG module=nwchem/6.0
#QCG module=namd

monitor

#QCG monitor=monitor-script.sh

name

#QCG name=nobel-experiment

native

Przykład dla PBSa oznaczający dane zadanie jako wznawialne.

(-r y|n Declares whether the job is rerunable.)

#QCG native=-r n

nodes

#QCG nodes=10:5:1
#QCG nodes=12:12

not-after

#QCG not-after=2012.08.25
#QCG walltime=PT2H
#QCG not-after=2012.08.25 13:20
#QCG walltime=PT2H

not-before

#QCG not-before=2012.07.25
#QCG walltime=PT2H
#QCG not-before=2012.07.25 15:20
#QCG walltime=PT2H

note

#QCG note=moje pierwsze zadanie QCG

notify

#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    

output

#QCG output=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/outputs/${JOB_ID}.output
#QCG output=output.txt

persistent

#QCG persistent

postprocess

#QCG postprocess=tar cvf wynik.tar *
#QCG postprocess=postprocess-script.sh

preprocess

#QCG preprocess=mkdir outputs
#QCG preprocess=preprocess-script.sh

procs

#QCG procs=32

properties

#QCG properties=mpi,ib,lustre

queue

#QCG queue=plgrid

reservation

#QCG host=reef.man.poznan.pl
#QCG reservation=piontek.0

stage-in-dir

#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

stage-in-file

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

stage-out-dir

#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

stage-out-file

#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

use-reservation

#QCG use-reservation
#QCG walltime=PT2H

walltime

#QCG walltime=P3DT12H

watch-output

#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

 

Zmienne opisu zadania

W opisie zadania możliwe jest użycie następujących zmiennych:

 

Przykładowe opisy zadań

 

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