[[PageOutline]] = QCG-!SimpleClient = QCG-!SimpleClient oferuje prosty, wzorowany na poleceniech systemu kolejkowego, interfejs do infrastruktury QCG. = Środowisko = Maszyna dostępowa: qcg.man.poznan.pl Wymagany moduł: qcg {{{ module load qcg }}} = Polecenia: = * '''qcg-sub''' - zlecenie zadania do wykonania na infrastrukturze QCG zgodnie z uproszczonym opisem, * '''qcg-list''' - wyświetlenie listy zleconych zadań wraz z informacjami o nich, * '''qcg-info''' - wyświetlenie szczegółowej informacji o danym zadaniu, * '''qcg-peek''' - podgląd wyjścia (stdout, stderr) aplikacji, * '''qcg-proxy''' - utworzenie certyfikatu proxy użytkownika, * '''qcg-cancel''' - anulowanie zadania. = Składnia poleceń: = * qcg-sub 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''' ''liczba jednostka'' - zadania z ostatnich "liczba" dni ("d"), godzin ("h"), minut ("m") {{{ qcg-list 7d qcg-list 1m }}} * '''qcg-info''' ''jobId'' ''pokaz_opis'' - wyświetla informacje o danym zadaniu (jobId). 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]'' {{{ qcg-peek J1331196390748_date_3099 qcg-peek J1331196390748_date_3099 10 }}} * '''qcg-proxy''' - generacja certyfikatu proxy użytkownika * '''qcg-cancel''' ''jobId'' - identyfikator eksperymentu {{{ qcg-cancel J1331196390748_date_3099 }}} = Opis zadania: = Zlecany plik jest plikiem tekstowym, który może zawierać dyrektywy infrastruktury QCG. Dyrektywą jest każda linia zaczynająca się od "#QCG". '''WAŻNE:''' Jeżeli w pliku nie zdefiniowano dyrektywy "''executable''" ani "''application''" uruchamiany jest zlecany plik z opisem. == Lista dyrektyw == * '''queue''' - wybrana kolejka systemu kolejkowego. {{{ #QCG queue=plgrid }}} * '''note''' - krótka informacja o zadaniu. {{{ #QCG note=moje pierwsze zadanie QCG }}} * '''name''' - dyrektywa określająca nazwę zadania. Nazwa zadania pojawi się jako końcówka identyfikatora zadania. {{{ #QCG name=nobel-experiment }}} * '''output''' - lokalizacja gdzie ma być przegrane standardowe wyjście zadnia (''stdout''). Jeśli nie jest to lokalizacja gsiftp:// zakłada się, że jest ustalana względem katalogu, z którego zlecono zadanie. {{{ #QCG output=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/outputs/${JOB_ID}.output #QCG output=output.txt }}} * '''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 }}} * '''host''' - nazwa maszyny na której może być uruchomione zadanie. Może być wiele takich dyrektyw dla alternatywnych maszyn. {{{ #QCG host=reef.man.poznan.pl #QCG host=zeus.cyfronet.pl }}} * '''stage-in-file''' - dyrektywa kopiowania pliku wejściowego. Składnia "lokalizacja_źródłowa -> nazwa_docelowa_pliku". Lokalizacja źródłowa może być lokalizacją gsiftp:// lub ścieżką do pliku. W tym drugim przypadku zakłada się, że jest ustalana względem katalogu, z którego zlecono zadanie. {{{ #QCG stage-in-file=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/inputs/input.txt -> input.txt #QCG stage-in-file=input_file.txt -> input.txt }}} * '''stage-in-dir''' - dyrektywa kopiowania katalogu wejściowego. Funkcjonalność i składnia analogiczna jak dla dyrektywy "stage-in-file" tyle, że kopiowany jest katalog. {{{ #QCG stage-in-dir=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/inputs -> inputs #QCG stage-in-dir=input_dir -> inputs }}} * '''stage-out-file''' - dyrektywa kopiowania pliku wyjściowego. Składnia "nazwa_pliku_źródłowego > lokalizacja docelowa pliku". Lokalizacja docelowa może być lokalizacją gsiftp:// lub ścieżką do pliku. W tym drugim przypadku zakłada się, że jest ustalana względem katalogu, z którego zlecono zadanie. {{{ #QCG stage-out-file=results.txt -> gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/results/result.1 #QCG stage-out-file=result.txt -> ${JOB_ID}.result }}} * stage-out-dir - dyrektywa kopiowania katalogu wyjściowego. Funkcjonalność i składnia analogiczna jak dla dyrektywy "stage-out-file" tyle, że kopiowany jest katalog. {{{ #QCG stage-out-dir=results -> gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/results/${JOB_ID} #QCG stage-out-dir=results -> result }}} * '''grant''' - nazwa grantu, w ramach którego ma być wykonane zadanie. {{{ #QCG grant=plgpiontek_grant }}} * '''argument''' - argument aplikacji w przypadku użycia dyrektywy "executable" lub "application". Argument może wystąpić wielokrotnie. Każdy argument powinien być przekazany w osobnej dyrektywie. Argumenty do aplikacji przekazywane są w kolejności ich wystąpienia w pliku opisu {{{ #QCG argument=arg1 #QCG argument=arg2 }}} * '''environment''' - ustawianie zmiennych środowiskowych. Składnia "nazwa -> wartość". Każda zmienna musli być ustawiana w osobnej linii. {{{ #QCG environment=name -> piontek #QCG environment=location -> poznan }}} * '''executable''' - lokalizacja pliku uruchomieniowego. Lokalizacja może być lokalizacją gsiftp:// lub ścieżką do pliku. W tym drugim przypadku przyjmuje się, że jest ustalana względem katalogu, z którego zlecone zostało zadanie. {{{ #QCG executable=gsiftp://qcg.man.poznan.pl//home/plgrid/plgpiontek/reef/executables/exec1 #QCG executable=executables/exec1 }}} * '''application''' - nazwa aplikacji do uruchomienia. #QCG application=namd * '''persistent''' - dyrektywa określająca czy po zakończeniu zadania system ma pozostawić katalog roboczy, w którym wykonywane było zadanie. {{{ #QCG persistent }}} * '''procs''' - liczba rdzeni obliczeniowych, na których ma być wykonane zadanie. Stosowane dla zadań MPI. {{{ #QCG procs=32 }}} * '''nodes''' - dyrektywa pozwalająca zdefiniować na ilu węzłach i rdzeniach w ramach węzła ma być uruchomione zadanie. Opcjonalnie można podać ile procesów ma być uruchomione na węzłach. Domyślnie, jeżeli nie zostanie podane inaczej, liczna procesów równa jest liczbie rdzeni przydzielonych w ramach węzła. Składnia liczna_węzłów:liczba_rdzeni_na_węźle[:liczba_procesów]. {{{ #QCG nodes=10:5:1 #QCG nodes=12:12 }}} == Przykłady == {{{ #QCG name=date #QCG application=date #QCG host=reef.man.poznan.pl #QCG output=output }}} {{{ #!/bin/bash #QCG queue=plgrid #QCG persistent #QCG name=tar #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 }}} = Planowane rozszerzenia: = [[simple_client_to_do|Lista TO_DO]]