To jest stara wersja strony!
Dostępne zasoby i oprogramowanie
IBE dysponuje serwerem dedykowanym do obliczeń.
Zasoby
Dostępne oprogramowanie
R 3.0
Stata 12 - niestety tylko 1-rdzeniowa;
Mplus 7 - w porozumieniu z Tomkiem Żółtakiem (bo to jego prywatny)
Jags 3.4.0
Pod wirtualizowanym Windows 7:
Dostęp
Serwer działa pod linuksem i nie udostępnia żadnego graficznego interfejsu użytkownika .
Dostęp jest możliwy poprzez:
Aby korzystać z serwera niezbędne jest założenie konta - w tym celu skontaktuj się z Mateuszem Żółtakiem (m.zoltak@ibe.edu.pl)
Jak połączyć się przez SSH?
Pod Windowsami
Pod linuksem
Z konsoli wydaj komendę
ssh -p 7122 TwójLogin@ibe.edu.pl
Wpisz hasło
Jak na konsoli kopiować i wklejać?
Pod linuksem
Stosownie do konfiguracji terminala, z którego korzystasz (np. w gnome-terminalu domyślnie CTRL+SHIFT+C i CTRL+SHIFT+V).
Pod Windowsami (w putty-m)
Klątwa znaków końca linii (tylko użytkownicy Windowsów i Maców)
Pod Windowsami, Unixami (czyli także Linuksem) i na Macach inaczej oznaczany jest znak końca linii w plikach tekstowych:
pod Windowsami jest to kombinacja znaków powrotu karetki (\r) i nowej linii (\n);
pod Unixami jest to znak nowej linii (\n);
na Macach jest to znak powrotu karetki (\r).
[To taka zaszłość historyczna - jeśli pamiętacie maszynę do pisania, to tam aby zacząć pisać w nowej linii trzeba było powrócić głowicą do początku linii (powrót karetki) i przewinąć papier do następnej linii (nowa linia) i zestaw znaków, który pierwotnie opracowano dla dalekopisów (ASCII) zawierał obydwa te „znaki”. Potem tenże zestaw znaków został przejęty w komputerach, tyle że niestety w niejednolity sposób.]
Powoduje to, że kopiując spod Windowsów do konsoli putty-ego całą linię wstawiamy tam jeden znak więcej niż potrzeba.
Nie musi to niczemu szkodzić - znak powrotu karetki będzie przez większość programów pomijany jako znak niedrukowalny.
Ale może, jeśli dany program nie będzie wystarczająco inteligentny, aby je pominąć. W szczególności jak dotąd zdiagnozowano, że (\r oznacza poniżej znak powrotu karetki):
Mplus, gdy wydać mu komendę
mplus plikWe.in plikWy.out\r
utworzy plik wyjściowy, którego nazwa będzie zawierać znak powrotu karetki. Plik taki będzie potem trudny do manipulowania z poziomu konsoli i niemożliwy do pobrania przez SFTP.
Jak sobie radzić?
Sposobów jest kilka:
podczas przesyłania plików przez SFTP konwersja powinna zachodzić automatycznie;
każdy szanujący się edytor tekstu (Notatnik do nich nie należy) umożliwia konwersję pomiędzy windowsowym i unixowym sposobem zapisu znaków końca linii i można z tej funkcji skorzystać;
wklejając polecenia na konsolę starajmy się nie wklejać znaków końca linii.
Jak wykonywać na konsoli podstawowe operacje na plikach i katalogach?
Czysta konsola
Jeśli ktoś pamięta jeszcze DOS-a, to wie, o co chodzi :) :
ls, ls -l, ls NazwaKatalogu - listuje pliki i katalogi (w obecnym lub wskazanym katalogu);
cd NazwaKatalogu - zmienia katalog roboczy (.. oznacza „katalog wyżej”)
rm NazwaPliku - usuwa plik
rm -fR NazwaKatalogu - usuwa katalog
mkdir NazwaKatalogu - tworzy katalog
cp NazwaPliku NazwaCelu - kopiuje pliki
cp -R NazwaPliku NazwaCelu - kopiuje katalog z całą zawartością
mv NazwaPliku NazwaCelu - przenosi pliki/katalogi lub zmienia nazwę pliku
Więcej o działaniu każdej z tych komend można się dowiedzieć wpisując
man KOMENDA
Z przeglądarki pomocy wychodzimy naciskając q.
Midnight Commander
Jeśli ktoś pamięta jeszcze DOS-a, to na pewno pamięta Norton Commandera lub Midnight Commandera.
Jeśli nie, to może przynajmniej widział Total Commandera :)
Generalnie jest to pseudograficzny (bo w istocie tekstowy) menadżer plików, który dla wielu jest dużo łatwiejszy w obsłudze niż zwykła konsola.
Uruchamia się go komendą
mc
Autouzupełnianie na konsoli
Konsola dysponuje automatycznym uzupełnianiem
Jeśli piszemy nazwę komendy i naciśniemy TAB, to
albo komenda zostanie automatycznie uzupełniona (jeśli fragment nazwy komendy, który już wpisaliśmy pozwala jednoznacznie zidentyfikować komendę);
albo zostanie wyświetlona lista komend pasujących do nazwy, którą wpisaliśmy.
Jeśli wpisujemy nazwę pliku lub katalogu i naciśniemy TAB, to
albo zostanie ona automatycznie uzupełniona (jeśli fragment, który już wpisaliśmy pozwala jednoznacznie określić plik/katalog);
albo wyświetlona zostanie lista pasujących plików/katalogów.
Jak uruchamiać programy?
Co do zasady wystarczy wpisać nazwę programu, np.
Stata
jags
mplus
Jak zakończyć działanie programu
Czasem zdarzy się, że uruchomiliśmy jakieś obliczenia, których wyliczenie się zajmie tydzień, a po chwili dochodzimy do wniosku, że coś tam jednak jest nie tak i chcielibyśmy przed czasem skończyć działanie programu. Czasem też program może się zawiesić i po prostu chcielibyśmy go ubić. Można to zrobić na dwa sposoby:
Będąc w tej samej konsoli (lub sesji programu
screen, jeśli uruchomiliśmy program w sesji
screen) co działający program użyć kombinacji klawiszy
CTRL+C
.
Będąc w wolnej konsoli wydać komendę
kill PID
, a jeśli to nie pomoże, to
kill -9 PID
Jak uzyskać PID programu dowiesz się z pytania Jak obserwować zużycie zasobów?
Jak obserwować zużycie zasobów?
Odra dysponuje sporymi zasobami (16 rdzeni, 64 GB RAM-u), ale one też się kończą. Jeśli akurat pechowo trafimy na moment, w którym Tomek albo Bartek skalują egzaminy, to może się okazać, że brakuje wolnego RAM-u. Jeśli akurat Karolina i Paulina odpalą równolegle 14 modeli motywacji, to może się okazać, że brakuje wolnego procesora. Itd.
W związku z tym zanim odpalimy jakieś czasochłonne/pamięciochłonne obliczenia, należy upewnić się, że na serwerze są dostępne stosowne zasoby.
Podobnie jeśli nie wiemy, ile zasobów zużyją nasze obliczenia, powinniśmy to obserwować i odpowiednio reagować, gdyby okazało się, że zaczynają zakłócać prace uruchomione już wcześniej przez innych.
Do monitorowania zasobów służą dwa narzędzia opisane poniżej
top
Program top wyświetla odświeżaną na bieżąco listę działających programów.
W kolejnych kolumnach wyświetla on informacje o:
PID - identyfikatorze działającego programu w systemie);
USER - użytkowniku, który uruchomił program;
PR i NI- priorytecie programu (kombinacja wartości 20 i 0 oznacza normalny priorytet);
VIRT, RES, SHR - różnych rodzajach pamięci zużywanej przez program;
S - statusie programu (R - pracuje, S - śpi);
%CPU i %MEM - ilości zużywanego procesora i pamięci (100% procesora to jeden rdzeń, więc mogą tu występować wartości powyżej 100);
TIME+ - czasie działania programu (liczonym w czasie procesora, a więc gdy program nie wykorzystuje procesora, wtedy ten czas nie wzrasta);
COMMAND - nazwie programu.
Z przydatnych komend sterujących jego działaniem:
h - wyświetla pomoc;
1 - przełącza prezentację zajętości procesora ze zagregowanej na w podziale na rdzenie;
u - pozwala odfiltrować programy wskazanego użytkownika;
L - pozwala odfiltrować programy, których nazwa pasuje do wzorca;
> i < - zmienia kolumnę sortowania;
y - podświetla aktualnie sortowaną kolumnę.
ps
Program ps działa podobnie do top, ale wyświetla tylko stan na tu i teraz i kończy działanie. Wywołuje się go komendą
ps -au
. Lista kolumn jest bardzo podobna do top:
USER - użytkownik,który uruchomił program;
PID - identyfikator działającego programu w systemie;
%CPU, %MEM - procesor i pamięć zużywane przez program w procentach;
VSZ, RSS - ilość różnych rodzajów pamięci zużywanych przez program;
TTY - identyfikator konsoli, na której program został uruchomiony;
STAT - status programu;
START - data uruchomienia programu;
TIME - czas procesora zużyty na działanie programu;
COMMAND - pełna komenda, którą uruchomiono program
Aby odfiltrować to, co zwraca ps wygodnie użyć jest komendy grep, np.
ps -au | grep mplus
odfiltruje tylko te linijki, które zawierają frazę mplus (chcę obejrzeć tylko to, kto obecnie używa mplusa), a
ps -au | grep zozlak
tylko te, które zawierają frazę zozlak (czyli chcę obejrzeć tylko programy uruchomione przeze mnie).
Jak przesłać pliki przez SFTP?
Aby przesłać pliki przez SFTP należy skorzystać z programu obsługującego ten protokół, np. WinSCP lub FileZilla.
Dane połączenia (serwer, port, login, hasło) są takie same, jak przy połączeniu SSH.
Programy te działają, jak każdy program do przesyłania plików - po jednej stronie mamy pliki na naszym komputerze, po drugiej na serwerze, przeciągają pliki i katalogi pomiędzy lewą i prawą stroną przesyłamy je na serwer lub z serwera.
Jak uruchomić obliczenia, by nie zostały przerwane w momencie zakończenia sesji SSH?
Wraz z zamknięciem połączenia SSH zamykane są wszystkie programy, które zostały w nim uruchomione. Aby się tak nie działo, należy odłączyć uruchamiany program od połączenia SSH. Służy do tego program screen.
Uruchamianie programu screen
Aby otworzyć sesję programu
screen wpisz po prostu komendę
screen
Wyświetlony zostanie ekran z informacjami o programie, który można zamknąć naciskając spację lub enter.
W tym momencie wyświetlana jest zwyczajna konsola umożliwiająca wydawanie komend i uruchamianie programów, z tą różnicą, że nawet po zamknięciu połączenia SSH uruchomione programy będą dalej działać.
Opuszczanie programu screen
Wracanie do sesji programu screen
Do opuszczonej sesji programu
screen można w każdej chwili wrócić wydając komendę
screen -r
Jeśli uruchomiłeś kilka sesji programu
screen i nie będzie jednoznaczne, do której z nich chcesz wrócić, wyświetlona zostanie lista dostępnych sesji, identyfikowanych numerami, podobna do tej
There are several suitable screens on:
13080.pts-1.localhost (09.06.2013 16:32:24) (Detached)
13035.pts-1.localhost (09.06.2013 16:32:21) (Detached)
12897.pts-1.localhost (09.06.2013 16:31:42) (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
. Aby wrócić do wybranej sesji należy wydać komendę
screen -r NumerSesji
np., odnosząc się do powyższego przykładu
screen -r 13080
Jeśli sesja programu
screen została zerwana w tragicznych okolicznościach (np. poprzez zerwanie połączenia z internetem), a nie poprzez kulturalne odłączenie się od niej sekwencją
CTRL+A,
D, wtedy aby powrócić do zerwanej sesji niezbędne będzie najpierw jej odłączenie od poprzedniego, utraconego połączenia, do czego służy komenda
screen -D
Analogicznie jak w wypadku komendy screen -r, jeśli uruchomionych jest wiele sesji screen, trzeba będzie wskazać numer tej właściwej (patrz poprzedni punkt).
Po poprawnym odłączeniu utraconej sesji można do niej wrócić komendą screen -r - patrz punkt wyżej.
Jak edytować pliki z poziomu konsoli
Porzućcie wszelką nadzieję Ci, którzy chcielibyście edytować pliki inne niż tekstowe.
Pliki tekstowe to:
w dobrym przybliżeniu te, które otwiera Notatnik;
w szczególności plikami tekstowymi są:
w szczególności pliki tekstowymi nie są:
pliki doc, docx, xls, xlsx, ppt, pptx, itp.;
pliki dta, sav, itp.
Na konsoli dostępnych jest wiele edytorów tekstu - poniżej wspominam te najważniejsze.
less
Less służy tylko do przeglądania plików, nie umożliwia ich edycji. Uruchamia się go trywialnie
less NAZWA_PLIKU
W tak otwartym pliku można:
przemieszczać się strzałkami;
wrócić do konsoli wciskając q;
przejść do konkretnej linii - wpisując :NUMER_LINII i naciskając ENTER;
wyszukać frazę - wpisując /fraza i naciskając ENTER
nano
Nano przypadnie do gustu wszystkim początkującym - pisze się tu całkowicie normalnie, a na dole ekranu znajduje się ściągawka dostępnych komend, gdzie składnia ^ZNAK oznacza po prostu CTRL+ZNAK. Nic dodać, nic ująć.
vi
Najbardziej hackerski edytor tekstu - tylko na własną odpowiedzialność. Z najważniejszych rzeczy na starcie:
vi pracuje w jednym z dwóch trybów:
wprowadzania - w tym trybie można pisać;
poleceń - w tym trybie działa wyszukiwanie, kopiowanie i wklejanie, zapis, itp.
do trybu wprowadzania przechodzi się naciskając i lub a;
do trybu poleceń przechodzi się naciskając ESC
w trybie poleceń dostępne są komendy:
:syntax on - włącza kolorowanie składni;
:NR_LINII - przechodzi do wskazanej linii;
/fraza - wyszukuje podaną frazę;
/ - wyszukuje ostatnio wyszukiwaną frazę;
dd - wycina do schowka aktualną linię (służy też do usuwania linii);
yy - kopuje do schowka aktualną linię;
dNd, yNy, gdzie N to liczba wierszy - wycina/kopiuje wskazaną liczbę wierszy;
p - wkleja zawartość schowka poniżej aktualnej linii;
w - zapisuje plik;
q! - zamyka vi.
Więcej na temat korzystania z vi w internecie.
emacs
Kultowy edytor napisany przez samego Richarda Stallmana. Nie korzystam, więc mogę tylko odesłać do internetu.
Wysyłanie maila powiadamiającego o końcu obliczeń
Aby przesłać sobie powiadomienie o zakończeniu obliczeń mailem należy wywołać na konsoli program mail, korzystające ze stosownego polecenia w używanym programie statystycznym, np.
w
Rsystem("echo 'tresc maila' | mail -s 'temat wiadomosci' adres@email")
w Stacie
! echo 'tresc maila' | mail -s 'temat wiadomosci' adres@email
w Mplus-ie - wywołać Mplus-a komendą
mplus plikWsadowy; echo 'tresc maila' | mail -s 'temat wiadomosci' adres@email
Uwagi do oprogramowania
Mplus
Aby skorzystać z wielordzeniowości w Mplusie pod linuksem, należy dopisać do sekcji
ANALYSIS pliku
.inp polecenie
PROCESSORS IS liczbaRdzeni;
Testy wykazały, że zwiększanie liczby rdzeni ponad 5 nie daje już prawie żadnego skrócenia czasu wykonywania obliczeń i optymalna liczba rdzeni to od 3 do 5 (co pozwala skrócić czas obliczeń, podczas których Mplus wykorzystuje wielordzeniowość do, odpowiednio ok. 55%, 44%, 38% czasu ich wykonywania na jednym rdzeniu)
JAGS
Dlaczego nie BUGS?
BUGS jest trefny!!!
Tak się stało, że BUGS został napisany w martwym języku programowania. Martwym, tzn. takim, że:
nie ma programistów, którzy umieją w nim programować;
nie ma środowisk programistycznych (w szczególności nie ma żadnego debugera) wspierających pisanie w tym jęzuku;
prawie nie ma kompilatorów tego języka, a te, które są, trudno traktować poważnie.
Powoduje to, że:
BUGS-a obecnie nikt nie rozwija i nie poprawia błędów, które zostały w nim znalezione;
BUGS (jak sama nazwa wskazuje) zawiera błędy;
BUGS ma skopaną arytmetykę zmiennoprzecinkową:
Filip dysponuje prostym, a działającym na wyobraźnię przykładem, gdzie BUGS nie umie posumować do 1 prostego ciągu liczb, które do 1 się sumują;
o fuszerkę podejrzewałbym raczej kompilator niż twórców BUGS-a;
ale niezależnie, kto zawinił, liczyć się na tym nie da.
JAGS
JAGS to generalnie BUGS przepisany do współczesnego języka programowania (C++) dla którego istnieją:
JAGS posługuje się tym samym językiem, co BUGS (skrypty Filipa napisane pod BUGS-a działały pod JAGS-em bez żadnych zmian).
Istnieją pakiety umożliwiające wywoływanie JAGS-a z poziomu R (gdzie łatwiej sobie przygotować dane i potem obrobić wyniki).
Dostęp do wirtualizowanych Windows 7
Do wirtualki z Windows 7 można się dostać na dwa sposoby:
przez RDP (a więc w szczególności pulpit zdalny Windows)
przez VNC
tunelując przez SSH (patrz opis dostępu przez SSH w poprzednim rozdziale) port 5900 serwera obliczeniowego na komputer lokalny, a następnie łącząc się przez VNC z adresem 127.0.0.1:5901
Klienta VNC i/lub RDP można bez problemu znaleźć za pomocą googla (w szczególności zaś pulpit zdalny Windows jest klientem RDP).