Sun Grid Engine (SGE) QuickStart System kolejkowania Sun Grid Engine jest przydatny, gdy masz dużo zadań do wykonania i chcesz rozdzielić zadania na klastry maszyn. Na przykład może zajść potrzeba uruchomienia setek symulacji dla dzieci o różnych parametrach lub konwersji 300 filmów z jednego formatu na inny. Korzystanie z systemu kolejkowania w takich sytuacjach ma następujące zalety: Planowanie - pozwala zaplanować praktycznie nieograniczoną ilość pracy do wykonania, gdy zasoby staną się dostępne. Oznacza to, że możesz po prostu przesłać tyle zadań (lub zadań), ile chcesz, i pozwolić systemowi kolejkowania obsługiwać ich wszystkich. Równoważenie obciążenia - automatycznie dystrybuuje zadania w klastrze, tak aby każdy węzeł nie był przeciążony w porównaniu do pozostałych. MonitoringAccounting - możliwość monitorowania wszystkich złożonych zadań i sprawdzania, które węzły klastra są uruchomione, czy są one zakończone, napotkały błąd itp. Umożliwia również sprawdzanie historii zadań, aby zobaczyć, które zadania zostały wykonane w określonym dniu, przez danego użytkownika itp. Oczywiście, tylko dlatego, że zainstalowany jest system kolejkowania, doesn8217t oznacza, że musisz go w ogóle używać. Możesz uruchamiać swoje zadania w klastrze w dowolny sposób, a system kolejkowania nie powinien przeszkadzać. Jednak najprawdopodobniej będziesz musiał implementować powyższe funkcje w pewien sposób, aby optymalnie wykorzystać klaster. Przesyłanie zadań Zadanie w SGE reprezentuje zadanie wykonywane na węźle w klastrze i zawiera wiersz polecenia używany do uruchamiania zadania. Zlecenie może mieć określone wymagania dotyczące zasobów, ale ogólnie powinno być agnostyczne dla którego węzła w klastrze działa, o ile spełnione są jego wymagania dotyczące zasobów. Wszystkie zadania wymagają co najmniej jednego dostępnego gniazda w węźle w klastrze do uruchomienia. Przesyłanie zleceń odbywa się za pomocą polecenia qsub. Let8217s próbują przesłać proste zadanie, które uruchamia polecenie hostname na danym węźle klastra: Opcja - V dla qsub stwierdza, że zadanie powinno mieć te same zmienne środowiskowe, jak dla powłoki qsub (zalecane) Opcja - b dla qsub stwierdza, że wykonywane polecenie może być pojedynczym plikiem binarnym lub skryptem bash. W tym przypadku nazwa hosta polecenia jest pojedynczym plikiem binarnym. Ta opcja przyjmuje argument y lub n wskazujący, że tak, czy polecenie jest binarne, czy nie, to nie jest binarne. Opcja - cwd do qsub informuje Sun Grid Engine, że zadanie powinno zostać wykonane w tym samym katalogu, w którym został wywołany qsub. Ostatnim argumentem dla qsub jest polecenie do wykonania (nazwa hosta w tym przypadku) Zauważ, że polecenie qsub po pomyślnym wydrukowaniu wydrukuje numer zadania na standardowe wyjście. Możesz użyć numeru zadania, aby monitorować status zadania i postęp w kolejce, co zobaczymy w następnym rozdziale. Monitorowanie zadań w kolejce Teraz, gdy nasze zadanie zostało przesłane, let8217 przyjrzą się statusowi zadania w kolejce za pomocą polecenia qstat: Z tego wyjścia widzimy, że zadanie jest w stanie qw, co oznacza oczekiwanie w kolejce i czekanie . Po kilku sekundach zadanie zmieni się w r. lub bieganie. stan, w którym rozpocznie się wykonywanie zadania: Po zakończeniu zadania, zadanie zostanie usunięte z kolejki i nie będzie już wyświetlane w wynikach polecenia qstat: Po zakończeniu zadania let8217s przejdź do następnej sekcji, aby zobaczyć jak widzimy dane wyjściowe z job8217. Przeglądanie danych wyjściowych Job8217s Sun Grid Engine tworzy pliki standardowe i stderr w katalogu roboczym job8217 dla każdego wykonanego zadania. Jeśli podczas wykonywania zadania zostaną utworzone dodatkowe pliki, zostaną one również umieszczone w katalogu roboczym job82, o ile nie zostaną wyraźnie zapisane w innym miejscu. Pliki wyjściowe stdout i stderr o nazwie job8217 mają nazwę po zakończeniu pracy z rozszerzeniem kończącym się numerem job8217s. Dla prostego zadania przedstawionego powyżej mamy: Zauważ, że Sun Grid Engine automatycznie nazwał nazwę hosta zadania i utworzył dwa pliki wyjściowe: hostname. e1 i hostname. o1. E oznacza stderr i o na stdout. Numer 1 na końcu rozszerzenia8282 jest numerem zadania. Jeśli więc praca została nazwana mynewjob i zlecono zadanie 23, pliki wyjściowe powinny wyglądać tak: Monitorowanie użycia klastra Po pewnym czasie może być ciekawy widok obciążenia na silnik Sun Grid. Aby to zrobić, używamy polecenia qhost: Dane wyjściowe pokazują architekturę (ARCH), liczbę procesorów (NCPU), aktualne obciążenie (LOAD), całkowitą pamięć (MEMTOT) i aktualnie używaną pamięć (MEMUSE) i przestrzeń wymiany ( SWAPTO) dla każdego węzła. Możesz również wyświetlić średnie obciążenie (loadavg) na węzeł, używając opcji 8216-f8217 do qstat: Tworzenie skryptu pracy W 8216Przypisywanie sekcji Job8217 przesłaliśmy pojedynczą nazwę hosta polecenia. Jest to przydatne w przypadku prostych zadań, ale w przypadku bardziej złożonych zadań, w których musimy uwzględnić pewną logikę, możemy użyć tak zwanego skryptu zadania. Skrypt zlecenia jest zasadniczo skryptem basha, który zawiera pewną logikę i wykonuje dowolną liczbę zewnętrznych skryptów programowych: Jak widać, ten skrypt wykonuje po prostu kilka poleceń (takich jak echo, data, kot itp.) I kończy działanie. Wszystko, co zostanie wydrukowane na ekranie, zostanie umieszczone w pliku stdout job8217 przez Sun Grid Engine. Ponieważ jest to po prostu skrypt bash, możesz umieścić dowolną formę logiki w skrypcie zadania (np. Instrukcje, pętle, pętle itp.) I możesz wywołać dowolną liczbę programów zewnętrznych potrzebnych do wykonania zadania. Let8217 zobaczą, jak uruchamiasz ten nowy skrypt pracy. Zapisz powyższy skrypt w katalogu homesgeadminjobscript. sh na urządzeniu StarCluster i wykonaj następujące czynności jako użytkownik sgeadmin: Teraz, gdy zadanie zostało przesłane, let8217s wywołują qstat okresowo, dopóki zadanie nie zostanie zakończone, ponieważ zadanie to powinno zająć sekundę, aby uruchomić je po wykonaniu. : Teraz, gdy zadanie jest zakończone, let8217 przyjrzą się plikom wyjściowym: Widzimy, patrząc na dane wyjściowe, które plik stdout zawiera dane wyjściowe instrukcji echo, data i cat w skrypcie zadania oraz że plik stderr jest puste oznacza, że nie wystąpiły błędy podczas wykonywania zadania. Gdyby coś nie powiodło się, na przykład błąd nie znaleziono polecenia, błędy te pojawiłyby się w pliku stderr. Usuwanie zadania z kolejki Co się dzieje, gdy zadanie utknęło w kolejce, trwa zbyt długo lub zostało po prostu uruchomione z niepoprawnymi parametrami Możesz usunąć pracę z kolejki, używając polecenia qdel w Sun Grid Engine. Poniżej uruchamiamy proste zadanie 8216sleep8217, które przesypia na 10 sekund, abyśmy mogli go zabić za pomocą qdel: Po uruchomieniu qdel musisz zauważyć, że zadanie zniknęło z kolejki: OpenMPI i Sun Grid Engine OpenMPI muszą być skompilowane z obsługą SGE (8211 z sge-sge ) w celu wykorzystania ścisłej integracji OpenMPI i SGE, jak udokumentowano w tej sekcji. Dotyczy to wszystkich publicznych AMI StarCluster8217s. OpenMPI obsługuje ścisłą integrację z Sun Grid Engine. Dzięki tej integracji Sun Grid Engine może obsługiwać przypisywanie hostów do zadań równoległych i odpowiednio rozliczać zadania równoległe. Środowisko równoległe OpenMPI StarCluster domyślnie konfiguruje środowisko równoległe o nazwie 8220orte8221, które zostało skonfigurowane do integracji OpenMPI w ramach SGE i ma liczbę gniazd równą całkowitej liczbie procesorów w klastrze. Możesz kontrolować środowisko równoległe SGE, uruchamiając: Jest to domyślna konfiguracja dla dwuwęzłowego klastra c1.xlarge (16 wirtualnych rdzeni). Tryby Round Robin i Fill Up Zwróć uwagę na ustawienie assignrule na wyjściu polecenia qconf w poprzedniej sekcji. Określa sposób przypisywania gniazd do zadania. Domyślnie StarCluster konfiguruje alokację roundrobin. Oznacza to, że jeśli zadanie wymaga na przykład 8 gniazd, przejdzie ono do pierwszego komputera, chwyci jedno gniazdo, jeśli jest dostępne, przejdź do następnego komputera i zgarnij pojedyncze gniazdo, jeśli jest dostępne, i tak dalej, jeśli to konieczne, owinięcie wokół klastra przydzielić 8 miejsc pracy. Można również skonfigurować środowisko równoległe, aby spróbować zlokalizować gniazda w maksymalnym stopniu, korzystając z reguły przydzielania plików fleksowych. Zgodnie z tą regułą, jeśli użytkownik zażąda 8 gniazd, a jedna maszyna ma 8 wolnych gniazd, to zadanie będzie działać całkowicie na jednym komputerze. Jeśli 5 gniazd jest dostępnych na jednym hoście, a 3 na innym, to wszystkie 5 na tym hoście, a wszystkie 3 na drugim hoście. Innymi słowy, reguła ta będzie chciwie zajmować wszystkie miejsca w danym węźle, dopóki nie zostanie spełniony wymóg szczeliny dla zadania. Możesz przełączać tryby roundrobin i fillup za pomocą następującego polecenia: To otworzy vi (lub dowolny edytor zdefiniowany w zmiennej EDITOR env) i pozwoli ci edytować równoległe ustawienia środowiska. Aby zmienić z roundrobin na fillup w powyższym przykładzie, zmień linię alokacji z: Przesyłanie zadań OpenMPI przy użyciu środowiska równoległego Ogólny przepływ pracy dla uruchamiania kodu MPI to: Skompiluj kod za pomocą mpicc, mpicxx, mpif77, mpif90, itp. Skopiuj wynikowe plik wykonywalny do tej samej ścieżki na wszystkich węzłach lub do lokalizacji współużytkowanej w systemie plików NFS w węźle nadrzędnym Ważne jest, aby ścieżka do pliku wykonywalnego była taka sama we wszystkich węzłach, aby mpirun poprawnie uruchomił twój kod równoległy. Najłatwiejszym sposobem jest skopiowanie pliku wykonywalnego gdzieś pod domem na węźle nadrzędnym, ponieważ dom jest współużytkowany przez NFS we wszystkich węzłach w klastrze. Uruchom kod na X liczbie komputerów, używając: gdzie plik_hosta wygląda mniej więcej: Jednak, gdy używasz środowiska równoległego SGE z OpenMPI, nie musisz już określać opcji mpirun dla opcji - np, - hostfile, - host itp. Dzieje się tak dlatego, że SGE automatycznie przydzieli hosty i procesory, które będą używane przez OpenMPI do pracy. Nie trzeba również przekazywać opcji 8211byslot i 8211bynode do mpirun, biorąc pod uwagę, że mechanizmy te są teraz obsługiwane przez tryby filtrowania i roundrobin określone w środowisku równoległym SGE. Zamiast używać powyższego sformułowania, utwórz prosty skrypt pracy, który zawiera bardzo uproszczone wywołanie mpirun: Następnie prześlij zadanie za pomocą polecenia qsub, a równoległe środowisko orte automatycznie skonfigurowane dla ciebie przez StarCluster: gatunek opcji - pe, którego równoległe środowisko do użycia i ilu miejsc na żądanie. Powyższy przykład wymaga 24 gniazd (lub procesorów) wykorzystujących równoległe środowisko orte. Równoległe środowisko automatycznie zajmuje się dystrybucją zadania MPI pomiędzy węzły SGE, korzystając z alokacji zdefiniowanej w ustawieniach environment8217s. Możesz to również zrobić bez skryptu zadania, jak w poniższym przykładzie: Przesyłanie plików binarnych w Grid Engine 6.x Grid Engine 6 obsługuje bezpośrednie przesyłanie plików binarnych za pośrednictwem qsub i qrsh za pomocą nowego argumentu - b yn. Domyślne zachowanie zakłada - b n. użyj - b y, aby bezpośrednio wywołać plik wykonywalny binarny. workgroupcluster: www qrsh - b y usrbinuptime 7:49 w górę 107 dni, 35 minut, 0 użytkowników, średnie obciążenia: 0,12 0,03 0,01 workgroupcluster: Polecenie qsub (1) nie może być użyte do bezpośredniego przesyłania plików binarnych jako zadań. Chociaż można napisać mały skrypt otaczający pliki binarne, aby je przesłać, istnieją dwie dogodne techniki, aby złożyć pliki binarne jako zlecenia w bardzo prosty sposób bez angażowania oddzielnego skryptu. Wpisz polecenie qsub wraz z dowolnymi flagami i opcjami, a następnie naciśnij klawisz return bez określania skryptu zadania. Zostanie wyświetlony monit o dodatkową powłokę. Po tym monicie możesz wpisać nazwę pliku binarnego. Następnie możesz nacisnąć return i kontynuować, aby wprowadzić więcej poleceń binarnych lub poleceń powłoki. Po zakończeniu określania pracy naciśnij Control-D. qsub - l archsolaris64 sleep 60 ltctrl-Dgt your job 47427 (quotSTDINquot) został wysłany Wpisz polecenie qsub wraz z dowolnymi flagami i opcjami, a następnie użyj struktury przekierowania STDIN ltlt ltMARKERgt. Wpisz jeden lub więcej wierszy zawierających dowolną kombinację plików binarnych i poleceń powłoki po pomocniczym pasku pomocniczym, jak powyżej. Następnie na linii samodzielnie wpisz ltMARKERgt i naciśnij return. qsub - N test ltlt EOF sleep 60 EOF twoje zadanie 47428 (quottestquot) zostało przesłane Obie powyższe techniki wykorzystują fakt, że qsub używa strumienia STDIN jako skryptu zadania, jeśli nie określisz pliku skryptu jako argumentu. W celu bezproblemowej integracji niektórych aplikacji w środowisku z klastrem Grid Engine może być konieczne napisanie niestandardowego skryptu opakowania, który wykonuje niektóre ustawienia przed uruchomieniem zadania. Druga technika z góry może być osadzona w takich opakowaniach. Przykład: utwórz opakowanie do przesyłania binarnego zadania wsadowego z SunRay do farmy zaplecza. Aby to zrobić, należy zmodyfikować zmienną LDPRELOAD, aby usunąć wpis specyficzny dla SunRay. Pod tym linkiem można znaleźć ogólny skrypt skryptu składania binarnego quotqbsubquot. Może być używany jako quotbinary versionquot qsub. Skrypt wrappera pozwala nadawcy korzystać ze standardowych flag przesyłania, a także uwzględnia flagi określone w pliku qtask (używanym przez qtcsh przy przezroczystym przesyłaniu plików binarnych do systemu). Przykład użycia tego skryptu jest następujący: To uruchamia plik binarny netscape, jednocześnie wyraźnie zachowując zmienną środowiskową DISPLAY. UWAGA: oczywiście musisz upewnić się, że plik binarny pasuje do architektury, w której ostatecznie będzie działać. Można to określić, na przykład, wykonując: Aby utworzyć zadanie, należy przesłać wykonywalny skrypt do serwera wsadowego. Serwer wsadowy będzie domyślnym serwerem, chyba że podano opcję - q. Polecenie analizuje skrypt przed faktycznym wykonaniem skryptu, ale nie wykonuje samego skryptu. Wszystkie reguły pisania skryptów pozostają w mocy, w tym na początku pliku (patrz omówienie PBSDEFAULT w zmiennych środowiskowych). Zazwyczaj skrypt jest skryptem powłoki, który zostanie wykonany przez powłokę poleceń, taką jak sh lub csh. Opcje w komendzie qsub umożliwiają określenie atrybutów wpływających na zachowanie zadania. Komenda qsub przekaże określone zmienne środowiskowe w atrybucie VariableList zadania. Te zmienne będą dostępne dla zadania. Wartość następujących zmiennych zostanie pobrana ze środowiska polecenia qsub: HOME, LANG, LOGNAME, PATH, MAIL, SHELL i TZ. Wartości te zostaną przypisane do nowej nazwy, która jest bieżącą nazwą poprzedzoną napisem PBSO. Na przykład zadanie będzie miało dostęp do zmiennej środowiskowej o nazwie PBSOHOME, która ma wartość zmiennej HOME w środowisku polecenia qsub. Oprócz powyższego do zadania wsadowego będą dostępne następujące zmienne środowiskowe: Nazwa hosta, na którym działa polecenie qsub. Nazwa hosta serwera pbs, do którego qsub przesyła zadanie. Nazwa oryginalnej kolejki, do której zadanie zostało przesłane. Bezwzględna ścieżka do bieżącego katalogu roboczego polecenia qsub. Każdemu elementowi tablicy zadań przypisywany jest unikalny identyfikator (patrz opcja - t). Ustaw na PBSBATCH, aby wskazać, że zadanie jest zadaniem wsadowym, lub na PBSINTERACTIVE, aby wskazać, że zadanie jest zadaniem interaktywnym PBS (patrz opcja - I). Nazwa pliku zawierającego listę przydzielonych GPU. Aby uzyskać więcej informacji o ustawianiu TORQUE z GPUS, zobacz dokumentację akceleratorów Moab Workload Manager. Identyfikator zadania przypisany do zadania przez system wsadowy. Może być stosowany na ścieżkach stdout i stderr. TORQUE zastępuje PBSJOBID zadaniami jobid (na przykład PBS - o tmpPBSJOBID. output). Nazwa zadania dostarczona przez użytkownika. Nazwa pliku zawiera listę węzłów przypisanych do zadania (dla systemów równoległych i klastrowych). Deklaruje czas, po którym zadanie kwalifikuje się do wykonania. Argument datetime ma postać: gdzie CC to pierwsze dwie cyfry roku (stulecie), YY to dwie drugie cyfry roku, MM to dwie cyfry miesiąca, DD to dzień miesiąca, hh to godzina, mm to minuta, a opcjonalne SS to sekundy. Jeśli miesiąc (MM) nie zostanie określony, będzie on domyślny dla bieżącego miesiąca, jeśli określony dzień (DD) będzie w przyszłości. W przeciwnym razie miesiąc zostanie ustawiony na następny miesiąc. Podobnie, jeśli dzień (DD) nie zostanie określony, będzie on domyślnie do dzisiaj, jeśli czas (hhmm) jest w przyszłości. W przeciwnym razie dzień zostanie ustawiony na jutro. Na przykład, jeśli prześlesz pracę o godzinie 11:15 z okresem -1110. praca będzie mogła zostać uruchomiona jutro o 11:10. Definiuje ciąg konta powiązany z zadaniem. Funkcja accountstring jest niezdefiniowanym ciągiem znaków i jest interpretowana przez serwer, który wykonuje zadanie. Patrz sekcja 2.7.1 PBS ERS. Definiuje maksymalną liczbę sekund qsub zablokuje próbę skontaktowania się z pbsserver. Jeśli pbsserver jest wyłączony lub w przypadku wielu błędów komunikacji, qsub będzie nieustannie ponawiać próbę połączenia się z serwerem pbs w celu przesłania zadania. Ta wartość zastępuje parametr CLIENTRETRY w torque. cfg. To jest nieprzenośne rozszerzenie TORQUE. Użytkownicy nastawieni na przenośność mogą korzystać ze zmiennej środowiskowej PBSCLIENTRETRY. Wartość ujemna jest interpretowana jako nieskończoność. Wartość domyślna to 0. Określa opcje, które będą miały zastosowanie do zadania. Jeśli zadanie zostanie wykonane na hoście, który nie obsługuje punktu kontrolnego, te opcje zostaną zignorowane. Poprawnymi opcjami punktów kontrolnych są: brak Żadne punkty kontrolne nie są wykonywane. enabled Określa, że punkt kontrolny jest dozwolony, ale musi zostać jawnie wywołany przez komendy qhold lub qchkpt. shutdown Określ, że punkt kontrolny ma być wykonywany dla zadania przy wyłączaniu pbsmom. periodic Określa, że okresowe sprawdzanie jest włączone. Domyślny interwał to 10 minut i można go zmienić za pomocą opcji checkpointinterval w pliku konfiguracyjnym MOM lub określając przedział, w którym zadanie jest wysyłane interwałminuty. Punkt kontrolny należy wykonać w przedziale minut, który jest liczbą całkowitą minut ściany. czas używany przez pracę. Ta wartość musi być większa od zera. depthnumber Określa liczbę (głębokość) obrazów punktów kontrolnych, które mają być przechowywane w katalogu punktu kontrolnego. dirpath Określ katalog punktu kontrolnego (domyślnie jest to varspooltorquecheckpoint). Definiuje prefiks, który deklaruje dyrektywę do polecenia qsub w pliku skryptu. (Zobacz akapit dotyczący dyrektyw skryptowych w Rozszerzony opis.) Jeśli opcja - C jest przedstawiona z argumentem dyrektywyreprefiksu, który jest łańcuchem pustym, qsub nie skanuje pliku skryptu dla dyrektyw. Określa ścieżkę do katalogu roboczego, która będzie używana dla zadania. Jeśli opcja - d nie jest określona, domyślnym katalogiem roboczym jest katalog domowy. Ta opcja ustawia zmienną środowiskową PBSOINITDIR. Określa katalog główny, który będzie używany dla zadania. Ta opcja ustawia zmienną środowiskową PBSOROOTDIR. Określa ścieżkę, która ma być używana dla standardowego strumienia błędów zadania wsadowego. Argument ścieżka ma postać: gdzie nazwahosta to nazwa hosta, do którego zostanie zwrócony plik, a nazwa ścieżki jest nazwą ścieżki na tym hoście w składni rozpoznawanej przez POSIX. Argument będzie interpretowany w następujący sposób: ścieżka do której ścieżka nie jest bezwzględną nazwą ścieżki, a następnie polecenie qsub rozszerzy nazwę ścieżki względem bieżącego katalogu roboczego polecenia. Polecenie poda nazwę hosta, na którym działa dla komponentu nazwy hosta. hostname: ścieżka, gdzie ścieżka nie jest bezwzględną nazwą ścieżki, a następnie polecenie qsub nie rozszerzy nazwy ścieżki względem bieżącego katalogu roboczego polecenia. Po dostarczeniu standardowego błędu nazwa ścieżki zostanie rozwinięta względem katalogu domowego użytkownika w systemie nazwy hosta. pathname gdzie ścieżka określa bezwzględną nazwę ścieżki, wtedy qsub poda nazwę hosta, na którym wykonuje nazwę hosta. nazwa_hosta: ścieżka, gdzie ścieżka określa bezwzględną nazwę ścieżki, ścieżka będzie używana zgodnie z podaną nazwą. Jeśli nie podano opcji - e, zostanie użyta domyślna nazwa pliku dla standardowego strumienia błędów. Domyślna nazwa ma następującą postać: jobname. esequencenumber, gdzie jobname jest nazwą zadania (patrz opcja - n name), a sequencenumber to numer zadania przypisany przy wysyłaniu zadania. Praca jest odporna na błędy. Zadania działające na wielu węzłach są okresowo odpytywane przez przełożonego macierzystego. Jeśli jeden z węzłów nie zgłosi problemu, praca zostanie anulowana przez przełożonego matki i zgłoszona zostanie awaria. Jeśli zadanie jest odporne na awarie, nie zostanie ono anulowane na podstawie nieudanego odpytywania (bez względu na to, jak wiele węzłów nie zgłosi). Może to być pożądane, jeśli przejściowe awarie sieci powodują, że duże zadania nie zostaną zakończone, a ignorowanie jednej nieudanej próby pollingu może zostać poprawione przy następnej próbie odpytywania. Jeśli TORQUE jest skompilowany z PBSNOPOSIXVIOLATION (nie ma opcji konfiguracji), musisz użyć - W faulttoleranttrue, aby oznaczyć zadanie jako odporne na błędy. Określa argumenty, które zostaną przekazane do skryptu zadania po uruchomieniu skryptu. Akceptowana składnia to: qsub - F myarg1 myarg2 myarg3myarg3value myscript2.sh Cudzysłów są wymagane. qsub zawiedzie z komunikatem o błędzie, jeśli argument następujący po - F nie jest kwotowaną wartością. Serwer pbsmom przekazuje cytowaną wartość jako argumenty do skryptu zadania po uruchomieniu skryptu. Opcja - W pozwala na określenie dodatkowych atrybutów pracy. Ogólna składnia wyrażenia - W ma postać: jeśli biała przestrzeń występuje w dowolnym miejscu ciągu argumentu opcji lub znaku równości, występuje w łańcuchu wartości atrybutu, wówczas ciąg musi być zawarty w pojedynczym lub podwójnym cudzysłowie. PBS obsługuje obecnie następujące atrybuty w opcji - W: dependdependencylist Definiuje zależność między tym i innymi zadaniami. Lista zależności ma postać: Argument jest liczbą liczbową lub identyfikatorem zadania PBS stosownie do typu. Jeśli argument jest liczbą, musi być większy od 0. Jeśli jest to identyfikator zadania i nie jest w pełni określony w formularzu seqnumber. server. name. zostanie on rozwinięty zgodnie z domyślnymi regułami serwera, które dotyczą identyfikatorów zadań dla większości poleceń. Jeśli argument ma wartość zerową (nie trzeba podawać dwukropka), zależność odpowiedniego typu jest usuwana (unset). Aby uzyskać więcej informacji, zobacz zależne zależności zależne od zależności. grouplistglist Określa nazwę grupy, pod którą zadanie ma zostać uruchomione w systemie wykonawczym. Argument glist ma postać: Na określony host może być podana tylko jedna nazwa grupy. Tylko jedna ze specyfikacji grupy może zostać dostarczona bez odpowiedniej specyfikacji hosta. Ta nazwa grupy zostanie użyta do wykonania na dowolnym hoście nie wymienionym na liście argumentów. Jeśli nie zostanie ustawione, lista grup będzie domyślnie ustawiona na grupę podstawową użytkownika, pod którym zadanie zostanie uruchomione. interactivetrue Jeśli określono atrybut interakcyjny, zadanie jest zadaniem interaktywnym. Opcja - I jest alternatywną metodą określenia tego atrybutu. jobradix ltintgt Do użycia z zadaniami równoległymi. Nakazuje ona przełożonej matki na stworzenie rangi dystrybucyjnej o rozmiarze size ltintgt między siostrami. Zobacz Zarządzanie zadaniami wielowęzłowymi. stageinfilelist stageoutfilelist Określa, które pliki są etapowane (kopiowane) przed rozpoczęciem zadania lub etapami po wykonaniu zadania. Po zakończeniu zadania wszystkie pliki wdrożone i przeniesione są usuwane z systemu wykonawczego. Lista plików ma postać: niezależnie od kierunku kopiowania. Nazwa plik_lokalny to nazwa pliku w systemie, w którym zostało wykonane zadanie. Może to być bezwzględna ścieżka lub relacja do katalogu domowego użytkownika. Nazwa remotefile to nazwa miejsca docelowego na hoście określonym przez nazwę hosta. Nazwa może być absolutna lub względna w stosunku do katalogu domowego użytkownika na hoście docelowym. Używanie symboli wieloznacznych w nazwie pliku nie jest zalecane. Nazwy plików odwzorowują wywołanie zdalnego programu (rcp) w systemie wykonawczym w następujący sposób: Dla stagein: rcp nazwa_hosta: plik_zdalny plik_lokalny Dla stageout: rcp plik_lokalny nazwa_hosta: plik_zdalny Przykłady przenoszenia danych: Jeśli TORQUE został skompilowany z obsługą wordexp , zmienne mogą być używane w określonych ścieżkach. Obecnie tylko PBSJOBID. DOM. i TMPDIR są obsługiwane dla stagein. umaskXXX Ustawia umask używaną do tworzenia plików buforowania stdout i stderr w katalogu buforowania pbsmom. Wartości rozpoczynające się od 0 są traktowane jako wartości ósemkowe, w przeciwnym razie wartość jest traktowana jako dziesiętna wartość umask. Domyślnie, jeśli przesyłasz zadanie interaktywne ze skryptem, skrypt zostanie przeanalizowany pod kątem dyrektyw PBS, ale reszta skryptu zostanie zignorowana, ponieważ jest to zadanie interaktywne. Opcja - x umożliwia wykonanie skryptu w zadaniu interaktywnym, a następnie zadanie zostaje zakończone. Na przykład: script. sh binbash ls --- koniec skryptu --- qsub - I script. sh qsub: oczekiwanie na zadanie 5.napali, aby uruchomić dbeernapali: ltdisplays zawartość katalogu, z powodu polecenia ls qsub: job 5.napali completed Włącza przekazywanie X11. Należy ustawić zmienną środowiskową DISPLAY. Kiedy to zadanie zakończy wykonywanie, zadania w tablicy mogą się rozpocząć. Jeśli używany jest którykolwiek z wcześniejszych formularzy, zadania, do których odwołuje się tablica, muszą zostać przesłane z włączonym typem zależności. Jeśli użyto któregokolwiek z wcześniejszych formularzy, zadania, do których odwołuje się tablica, muszą mieć tego samego właściciela co przesyłane zadanie. W przeciwnym razie zależność jest ignorowana. Błąd przetwarzania stanu, stanu lub stanu zadania, w którym nowo przesłane zadanie jest usługą odroczoną, tj. Kontrola jest wykonywana po tym, gdy zadanie jest w kolejce. Jeśli zostanie wykryty błąd, nowe zadanie zostanie usunięte przez serwer. Poczta zostanie wysłana do zleceniodawcy pracy z informacją o błędzie. qsub - W dependafterok: 123.big. iron tmpscript qsub - W dependbefore: 234.hunk1: 235.hunk1 qsub script. sh - W dependafterokarray: 427 (Zakłada się, że każde zadanie w tablicy 427 musi zakończyć się pomyślnie, aby zależność została spełniona .) qsub script. sh - W dependafterokarray: 4275 (Oznacza to, że 5 zadań z tablicy 427 musi zakończyć się pomyślnie, aby móc uzyskać zależność). Komenda qsub przyjmuje operand skryptu, który jest ścieżką do skryptu z pracy. Jeśli ścieżka jest względna, zostanie rozwinięta względem katalogu roboczego polecenia qsub. Jeśli operand skryptu nie zostanie podany lub operand będzie pojedynczym znakiem - polecenie qsub odczyta skrypt ze standardowego wejścia. Kiedy skrypt jest czytany ze standardowego wejścia, qsub skopiuje plik do pliku tymczasowego. Ten plik tymczasowy jest przekazywany do procedury interfejsu biblioteki pbssubmit. Plik tymczasowy jest usuwany przez qsub po powrocie pbssubmit lub po otrzymaniu sygnału, który spowoduje zakończenie qsub. Polecenie qsub odczytuje skrypt dla zadania ze standardowego wejścia, jeśli brakuje argumentu skryptu lub jest pojedynczym znakiem -. Plik skryptowy jest odczytywany przez polecenie qsub. qsub działa na wszystkie dyrektywy znalezione w skrypcie. Po utworzeniu zadania tworzona jest kopia pliku skryptu, którego nie można zmodyfikować. Jeśli opcja - z nie jest ustawiona, identyfikator zadania przypisany do zadania zostanie zapisany na standardowe wyjście, jeśli zadanie zostanie pomyślnie utworzone. Komenda qsub zapisze komunikat diagnostyczny do standardowego błędu dla każdego wystąpienia błędu. Wartości niektórych lub wszystkich zmiennych w środowisku poleceń qsub są eksportowane wraz z zadaniem (zobacz opcje - v i - v). Zmienna środowiskowa PBSDEFAULT definiuje nazwę domyślnego serwera. Zwykle odpowiada ona nazwie systemowej hosta, na którym działa serwer. Jeśli PBSDEFAULT nie jest ustawiony, ustawienie domyślne jest definiowane przez plik utworzony przez administratora. Zmienna środowiskowa PBSDPREFIX określa ciąg prefiksu, który identyfikuje dyrektywy w skrypcie. Zmienna środowiskowa PBSCLIENTRETRY określa maksymalną liczbę sekund, którą qsub zablokuje (patrz opcja - b). Pomimo nazwy, obecnie qsub jest jedynym klientem, który obsługuje tę opcję. Plik torque. cfg znajdujący się w PBSSERVERHOME (domyślnie varspooltorque) kontroluje zachowanie polecenia qsub. Ten plik zawiera listę parametrów i wartości rozdzielonych białymi znakami. QSUBSLEEP przyjmuje operand całkowity, który określa czas spania przy uruchomieniu polecenia qsub. Używane, aby uniemożliwić użytkownikom przytłaczanie programu planującego. SUBMITFILTER określa ścieżkę do filtru przesłania używanego do wstępnego przetwarzania zadań. Domyślną ścieżką jest libexecdirqsubfilter, która wraca do usrlocalsbintorquesubmitfilter w celu zapewnienia kompatybilności wstecznej. Ten parametr torque. cfg przesłania tę wartość domyślną. SERVERHOST QSUBHOST QSUBSENDUID XAUTHPATH CLIENTRETRY VALIDATEGROUP DEFAULTCKPT VALIDATEPATH RERUNNABLEBYDEFAULT Skrypt zadania może składać się z dyrektyw PBS, komentarzy i instrukcji wykonawczych. Dyrektywa PBS zapewnia sposób określania atrybutów zadań oprócz opcji wiersza poleceń. Na przykład: PBS - l walltime10: 30, mem320kb step1 arg1 arg2 step2 arg3 arg4 Komenda qsub skanuje wiersze pliku skryptu dla dyrektyw. Początkowa linia w skrypcie zaczynająca się od znaków lub postaci. zostanie zignorowane, a skanowanie rozpocznie się od następnej linii. Skanowanie będzie kontynuowane aż do pierwszej linii wykonywalnej, czyli linii, która nie jest pusta, a nie linii dyrektyw, ani linii, której pierwszym nie-białym znakiem spacji jest. Jeśli dyrektywy pojawią się w kolejnych wierszach, zostaną one zignorowane. Wiersz w pliku skryptu zostanie przetworzony jako dyrektywa dla qsub wtedy i tylko wtedy, gdy ciąg znaków zaczynający się od pierwszego niebiblijnego znaku spacji na linii i tej samej długości, co prefiks dyrektywy, będzie zgodny z prefiksem dyrektywy. Pozostała część linii dyrektywy składa się z opcji qsub w tej samej składni, w jakiej występują w linii poleceń. Znak opcji należy poprzedzić znakiem -. Jeśli opcja jest obecna zarówno w dyrektywie, jak i w wierszu poleceń, ta opcja i jej argument, jeśli są, zostaną zignorowane w dyrektywie. Linia poleceń ma pierwszeństwo. Jeśli opcja jest obecna w dyrektywie, a nie w wierszu poleceń, ta opcja i jej argument, jeśli w ogóle, będą przetwarzane tak, jakby wystąpiły w wierszu poleceń. Łańcuch prefiksu dyrektywy zostanie określony w kolejności od: Wartość argumentu opcji - c, jeśli opcja jest podana w wierszu poleceń. Wartość zmiennej środowiskowej PBSDPREFIX, jeśli jest zdefiniowana. Ciąg czterech znaków PBS. Jeśli w pliku skryptu zostanie znaleziona opcja - c, zostanie ona zignorowana. Gdy użytkownik przesyła zadanie z systemu innego niż ten, na którym działa serwer PBS, nazwa, pod którą zadanie ma zostać wykonane, jest wybierana zgodnie z regułami wymienionymi w opcji - u. Użytkownik przesyłający zadanie musi mieć uprawnienia do uruchamiania zadania pod nazwą wykonawczą. Ta autoryzacja jest dostarczana, jeśli: Host, na którym działa qsub, jest zaufany przez hosta wykonawczego (patrz: etchosts. equiv). Użytkownik wykonujący ma plik. rhosts określający nazwę użytkownika przesyłającego hosta. C-Shell. logout Plik: Poniższe ostrzeżenie dotyczy użytkowników c-shell, csh. Jeśli zadanie jest wykonywane w pliku csh, a plik. logout istnieje w katalogu osobistym, w którym wykonywane jest zadanie, stanem wyjściowym zadania jest skrypt. logout, a nie skrypt zadania. Może to mieć wpływ na zależności między różnymi stanowiskami. Aby zachować status wyjścia, usuń plik. logout lub umieść następujący wiersz jako pierwszy wiersz w pliku. logout: ustaw status EXITVAL i następujący wiersz jako ostatni plik wykonywalny w. logout: Jeśli opcja - I jest określone w wierszu poleceń lub w dyrektywie skryptowej lub jeśli atrybut zadania interaktywnego został zadeklarowany jako prawda za pomocą opcji - W, - W interactivetrue. either on the command line or in a script directive, the job is an interactive job. The script will be processed for directives, but will not be included with the job. When the job begins execution, all input to the job is from the terminal session in which qsub is running. When an interactive job is submitted, the qsub command will not terminate when the job is submitted. qsub will remain running until the job terminates, is aborted, or the user interrupts qsub with an SIGINT (the control-C key). If qsub is interrupted prior to job start, it will query if the user wishes to exit. If the user response yes, qsub exits and the job is aborted. One the interactive job has started execution, input to and output from the job pass through qsub. Keyboard generated interrupts are passed to the job. Lines entered that begin with the tilde ( ) character and contain special sequences are escaped by qsub. The recognized escape sequences are:
No comments:
Post a Comment