Spis treści

Ogólne

Napisałem skrypt do uruchamiania zadań, wszystko jest poprawnie, skrypt wstawiony do kolejki działa, dostaję output z syst. kolejkowego, tylko moja aplikacja w ogóle nie liczy.

Często przyczyną takiego zachowania jest brak znaku końca wiersza ([enter]) na końcu pliku, tuż za poleceniem uruchamiającym program obliczeniowy. Powłoka csh (tcsh) po prostu nie widzi tego wiersza i nie wykonuje tego polecenia.

Jak podejrzeć na klastrze co robią moje zadania? Mógłbym to robić przez "top" lub "ps" ale nie mogę się zalogować na nody.

Dostęp interaktywny do nodów obliczeniowych jest zablokowany dla zachowania porządku. W razie konieczności można jednak uruchomić polecenia nieinteraktywnie przez ssh, np.:

ssh h10 'ps -ef'
ssh h10 'setenv TERM vt100;top -b -n 1'

Klaster

Jak jest różnica między klastrem a zwykłym PCetem?

Klaster to grupa połączonych ze sobą komputerów dedykowanych do obliczeń. Moża to sobie wyobrazić jak pracownię komputerową, tylko że bez monitorów, klawiatur i myszy. Komputery wchodzące w skład klastra - zwane nodami - są połączone szybką siecią umożliwiającą im współdziałanie, tak że klaster pracuje tak ja by był jednym komputerem o wielu procesorach. Daje to kilu-, kilkudziesięciokrotne skrócenie czasu obliczeń.

 

Czy jeśli uruchomię na klastrze program, który używam do swoich obliczeń, to będzie on działać 100 razy szybciej?

Aby program mógł wykorzystać moc obliczeniową klastra, musi być napisany w specjalny sposób umożliwiający jednoczesne obliczenia na wielu procesorach - musi być zrównoleglony. Jeśli użyte w programie algorytmy poddają się zrównolegleniu to możliwe jest uzyskanie znaczącego przyspieszenia obliczeń. Jeśli jest to program komercyjny należy sprawdzić w jego dokumentacji lub u producenta czy jest przystosowany do uruchamiania na klastrach linuksowych - zarówno 32- jak o 64-bitowych.

 

Mam zrównoleglony program, puściłem go na 80 procesorach, a liczy tylko 4 razy szybciej niż na jednym. O co chodzi?

Program, mimo że jest zrównoleglony, zawsze wykonuje pewne elementy obliczeń sekwencyjnie. Ponadto części programu uruchomione na wielu procesorach muszą się ze sobą komunikować i wymieniać dane. Jeśli tych danych jest dużo, komunikacja może trwać znacząco długo w porównaniu do samych obliczenia. Dlatego niektóre programy przy zwiększaniu liczby procesorów ponad pewną granicę nie wykazują już przyspieszenia, mogą nawet zwalniać. Skrócenie czasu obliczeń ze wzrostem liczby użytych procesorów nazywamy skalowalnością. Skalowalność może wynosić np. 60 procesorów - tj. do tej liczby uzyskuje się jeszcze sensowne przyspieszenie. Skalowalność zależy od jakości zrównoleglenia aplikacji, oraz od sieci lub innego medium komunikacyjnego łączącego nody klastra.

Ilu użyć procesorów? Jak jest skalowalność mojej aplikacji

Skalowalność najlepiej sprawdzić eksperymentalnie. Jeśli to możliwe należ dobrać taki zestaw danych wejściowych dla których zadanie na jednym procesorze liczy się co najmniej kilkadziesiąt minut nie dłużej jednak niż 10 godzin. Następnie zadanie to należy uruchomić na 2,4,8,16,32,64 procesorach i sprawdzać czas wykonania i stopień przyspieszenia obliczeń.

System kolejkowy

Dlaczego administrator inaktywował kolejki na superkomputerze?

Czasami na superkomputerze zdarza się tak, że zadania mają status PENDING mimo, że są wolne zasoby, a w opisie zadania pojawia się informacja:

 PENDING REASONS:
 The queue is inactivated by the administrator;

Najczęściej kolejki są inaktywowane automatycznie gdy wolne miejsce na dysku /atmp1 spadnie poniżej pewnej wartości, (aktualnie jest to 500 MB). Ma to zapobiec przepełnianiu się dysku i przerywaniu przez to obliczeń. Niekiedy kolejki są nieaktywne gdy jest planowane wyłączenie klastra.

Co to jest system kolejkowy?

System kolejkowy to narzędzie umożliwiające organizację dostępu wielu użytkowników do zasobów obliczeniowych. Ułatwia też przydzielanie procesorów dla zadań wieloprocesorowych.

Po co używać tych kolejek? Nie można po prostu uruchomić swojego programu?

Nie, ponieważ gdyby zbyt wielu użytkowników na raz chciało uruchomić obliczenia łatwo mogłoby dojść do konkurowania o te same zasoby przez działające jednocześnie procesy, następstwem czego byłoby obniżenie efektywności obliczeń. W skrajnych przypadkach mogłoby dojść do całkowitego zużycia zasobów i zawieszania się systemu. Ponadto w systemach klastrowych należy ustalić pewną pulę procesorów przydzieloną do zadania. Samodzielne wyszukiwanie wolnych procesorów przez użytkownika byłoby co najmniej czasochłonne i trudne. System kolejkowy umożliwia rozwiązanie tych problemów poprzez kolejkowanie zadań użytkowników, przydział zasobów zadaniom użytkowników na określony czas, kierowanie zadań na aktualnie wolne nody klastra i zwracanie wyników do użytkownika. System kolejkowy maskuje przed użytkownikiem złożoność klastra

 

Co to jest polityka przydziału zasobów

Polityka to zbiór zasad na jakich są przydzielne zasoby obliczeniowe. Może obejmowć takie elementy jak maksymalna liczba zadań uruchomionych przez użytkownika, maksymalny czas trwania zadania o określonych wymaganiach, dostęp do ograniczonych zasobów, np: licencje, komputery o dużej pamięci, uprzywilejowani użytkownicy, grupy i projekty. Polityka jest definiowana przez administratora tak aby zasoby były wykorzystywane możliwie optymalnie, przydział by sprawiedliwy i zgodny z założeniami centrum obliczeniowego oraz ewentualnymi porozumieniami użytkowników. Polityka jest realizowana głównie poprzez system kolejkowy. Ponieważ możliwości konfiguracyjne systemów kolejkowych są ograniczone, niektóre zasady porządanej polityki nie mogą zapisane wprost i są realizowane w sposób przybliżony.

Dlaczego moje zadanie nie są uruchamiane mimo, że są wolne zasoby?

Przyczyn, że zadanie nie startuje mimo wolnych zasobów może być wiele:

  • cykl analizy zadania, zasobów i innych zadań przez system kolejkowy może trwać do kilkunastu minut, zadanie zostanie wkrótce uruchomione,
  • użytkownik przekroczył dopuszczalne limity, dotyczące ilości jednocześnie uruchomionych zadań, zadanie zostanie uruchomione kiedy skończą się inne zadania użytkownika,
  • system rezerwuje zasoby aby móc uruchomić inne zadanie o wyższym priorytecie
  • zasoby zostały zablokowane przez administratora np. ze względu na konieczne prace konserwacyjne, dla projektu o specjalnych przywilejach, itp.

Brak dostępu do terminala

Komunikaty typu:

Warning: no access to tty (BĹÄdny deskryptor pliku).
Thus no job control in this shell.

w plikach wyjściowych (*.oJOBID) pochodzą z powłoki tcsh i należy je ignorować - nie mają wpływu na obliczenia.

Programy

Zadanie po uruchomieniu szybko się kończy z komunikatem typu: ./solver.bin : Bledny format pliku wykonywalnego. Nieprawidlowa architektura.

Komunikat typu:

./solver.bin : Bledny format pliku wykonywalnego. Nieprawidlowa architektura.

może się pojawić gdy plik binarny solver.bin nie jest programem wykonywalnym na komputerze na którym próbowano go uruchomić. Taka sytucja zachodzi najczęściej gdy program został skompilowany na pewnym komputerze, a uruchomiony na zupełnie innym o innej architekturze sprzętowej. W TASK są używane komputery o różnych architekturach np. Sun (Karawela), Intel IA64 (Holk, Galeon), SGI Origin (fregata). Maszyny te różnią się między sobą na tyle, że nie możliwe jest przenoszenie pomiędzy nimi programów w postaci binarnej.

Mam super program napisany w C++ Builderze/Delphi/{ulubionym_IDE}, z GUI pod Windows. Jak go uruchomić na waszych klastrach ?

Wyrzuć GUI (albo zrób z niego osobny program do pre/postprocesingu) i wszelkie odwołania do niestandardowych bibliotek potem spróbuj skompilować odpowiednim kompilatorem C++ na klastrze. Dopisz moduł wczytujący dane z pliku zamiast z GUI.

Mam program skompilowany pod Windows. Czy możecie dla mnie zainstalować emulator WINE, bo słyszałem, że pozwala uruchamiać aplikacje Windows na Linuksie?

Nie. Prowadzenie obliczeń na komputerach dużej mocy w trybie emulacji mija się z celem. Aplikacja powinna być skompilowana na systemie na którym ma być uruchamiana za pomocą kompilatora optymalizującego dla danej platformy sprzętowo-programowej.

Mam program skompilowany na innym klastrze (Opteron, Red Hat Linux). Czy mogę go przenieść na holka i będzie działał.

Nie. Opteron i Itanium2, mimo że są procesorami 64-bitowym nie są ze sobą zgodne. Red Hat Linux i Debian różnią się na tyle, że prawdopodobnie nie da się przenosić pomiędzy nimi aplikacji w postaci binarnej. Jeśli program dodatkowo korzysta z jakichś bibliotek np. MPI, to musiałaby one się znajdować na obu klastrach prwadopodobnie w takich samych lokalizacjach, wersjach itp.

 

Puściłem na Galeonie testowo zadanie Gaussiana na 4 procesory. Zadanie chodzi, ale tylko na jednym procesorze.

Gaussian i niektóre inne aplikacje działają na wątkach. Normalnie polecenia ps czy w top pokazuje wątki jako jeden proces. Aby zobaczyć wątki do polecenie ps należy dodać opcje -L np. procesy i wątki użytkownika janko

ps -fLu janko

Podobnie polecenie top:

top -Hu janko

Warto też zwrócić uwagę na kolumnę %CPU. W przypadku skumulowanych wątków jest tam wyświetlane np. 398%. Oznacza to, że zadanie wykorzystuje 4 procesory.

Unix/Linux

Jak ponownie zobaczyć komunikaty wyświetlane przy zalogowaniu ?

Te komunikaty znajdują się w pliku /etc/motd. Aby je ponownie wyświetlić należy użyć polecenia:

cat /etc/motd

Co to jest ta powłoka i jak sprawdzić jaką mam powłokę

Powłoka jest elementem systemu operacyjnego odpowiedzialnym za interakcję z uż Często w opisach oprogramowania pojawia się informacja jak ustawić środowisko dla powłok tcsh lub bash. Użytkownicy domyślnie mają przydzielanie powłoki bash, jednak niektórzy z różnych względów mają powłokę tcsh. Aby ustalić jaką powłokę mamy należy wydać polecenie

echo $SHELL

Wiem, że jest u was dostępna aplikacja xxxx, otrzymałem konto na waszych komputerach, zalogowałem się na komputer kdm.task.gda.pl. Jak użyć aplikacji xxxx ?

Po pierwsze należy ustalić na którym serwerze obliczeniowym dana aplikacja jest dostępna. Zazwyczaj ta informacja jest zamieszczona w opisie aplikacji. Większość aplikacji jest niedostępna na komputerze kdm (karawela), są natomiast dostępne na serwerach obliczeniowych.

W opisie aplikacji podany jest sposób dostępu do aplikacji na danym serwerze obliczeniowym - zazwyczaj należy się na właściwy serwer zalogować i przygotować środowisko do pracy z daną aplikacją. W przypadku niektórych aplikacji możliwe jest zlecanie zadań bezpośrednio z karaweli poprzez system kolejkowy

Dokładne informacje o sposobie uruchamiania zawarte są w opisach oprogramowania

Putty bezpośrednio po wpisaniu hasła zamyka się. W WinScp - dostaję info, że 'server unexpectedly closed connection". W jaki sposób mogę się dostać do serwera?

Konto jest prawdobobnie zablokowane. Należy ustalić przyczyny blokady. Najczęściej przy połączeniu jest podawany odpowiedni komunikat, ale jeśli putty zamyka okno, nie ma szansy go przeczytać.

Żeby zobaczyc komunikat przy logowaniu, w Putty, w sekcji "Seesion", u dołu, w opcji "Close window on exit" należy zaznaczyć "Only on clean exit" lub "Never":

Nie mogę połączyć się przez WinScp z dmv.task.gda.pl

Często przyczyną tego problemu jest to, że skrypty startowe powłoki typu .bashrc .profile .bash_profile wypisują coś na terminal np. za pomocą komendy echo. Należy tego unikać. Program WinSCP nie może wtedy działać prawidłowo.

Centrum Informatyczne Trójmiejskiej Akademickiej Sieci Komputerowej
ul. G. Narutowicza 11/12, 80-233 Gdańsk   |   tel. 58-347-24-11
email: office@task.gda.pl   |   NIP: 584-020-35-93