przejście do zawartości
Zespół Pomiaru Dydaktycznego
Narzędzia użytkownika
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Menadżer multimediów
Zaloguj
Menadżer multimediów
Ślad:
odra
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Dostępne zasoby i oprogramowanie ====== IBE dysponuje serwerem dedykowanym do obliczeń. ===== Zasoby ===== * 16 rdzeni po 2.7 GHz * 64 GB RAM-u * <del>wirtualizowane Windows 7, którym można w miarę potrzeby użyczyć powyższych zasobów</del> ===== 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: * R 3.0 * Stata 12 - niestety tylko 1-rdzeniową * co tak kto jeszcze wgrał ====== Dostęp ====== Serwer działa pod linuksem i ** nie udostępnia żadnego graficznego interfejsu użytkownika **. Dostęp jest możliwy poprzez: * poprzez SSH/SFTP * R także przez www - [[https://rstudio.ibe.edu.pl]] **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 ==== * Ściągnij klienta SSH, np. program [[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html|putty]] * Zdefiniuj połączenie (tylko przy pierwszym uruchomieniu): * //Host name// "ibe.edu.pl", * //Port// "7122", * //Connection type// "SSH" * Na liście po lewej wybierz //Windows->Translation//, a następnie z listy rozwijalnej //Remote character set// "UTF-8" * Wróć do pierwszego ekranu (//Session// na liście po lewej) * W pole "Saved sessions" wpisz nazwę, pod jaką chcesz zapisać to połączenie (np. //odra//), a następnie zapisz ustawienia przyciskiem "Save". * Połącz się z serwerem klikając dwukrotnie w zapisane połączenie na liście "Saved sessions" * Wpisz swój login * Wpisz hasło ==== Pod linuksem ==== * Z konsoli wydaj komendę<code>ssh -p 7122 TwójLogin@ibe.edu.pl</code> * 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) ==== * Kopiowanie: * Zaznaczamy myszką i już, tekst automatycznie i magicznie jest już w schowku * Wklejanie: * Klikamy prawym przyciskiem myszy - tekst zostanie wklejony w miejscu, gdzie aktualnie jest kursor. ===== 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ę <code>mplus plikWe.in plikWy.out\r</code>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 <code>man KOMENDA</code>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ą <code>mc</code> ===== 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.<code>Stata jags mplus</code> ===== 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 <code>CTRL+C</code>. * Będąc w wolnej konsoli wydać komendę <code>kill PID</code>, a jeśli to nie pomoże, to <code>kill -9 PID</code>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; * //x// - 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ą <code>ps -au</code>. 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.<code>ps -au | grep mplus</code>odfiltruje tylko te linijki, które zawierają frazę //mplus// (chcę obejrzeć tylko to, kto obecnie używa mplusa), a <code>ps -au | grep zozlak</code> 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. [[http://winscp.net/eng/download.php|WinSCP]] lub [[https://filezilla-project.org/download.php?type=client|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ę<code>screen</code> * 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 ==== * Sesję programu **screen** można w każdej chwili opuścić wracając do "pierwotnej" konsoli, z którą połączyliśmy się przez SSH (oczywiście wszystkie uruchomione w sesji **screen** programy będą nadal działać). * Aby to zrobić, naciśnij kominację klawiszy //CTRL+A//, a następnie klawisz //D//. * Aby na dobre zakończyć sesję programu **screen** wydaj będąc w tej sesji komendę<code>exit</code> ==== Wracanie do sesji programu screen ==== * Do opuszczonej sesji programu **screen** można w każdej chwili wrócić wydając komendę<code>screen -r</code> * 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<code>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. </code>. Aby wrócić do wybranej sesji należy wydać komendę<code>screen -r NumerSesji</code>np., odnosząc się do powyższego przykładu<code>screen -r 13080</code> * 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 <code>screen -D</code> * 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ą//: * wszystkie kody Mplusa, Staty, R, itp.; * pliki csv; * 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<code>less NAZWA_PLIKU</code>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// * to samo wyszukiwanie można powtórzyć wpisując ///// i zatwierzając //ENTER-em//. ==== 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; * wyszukiwanie i nawigacja: * //:NR_LINII// - przechodzi do wskazanej linii; * ///fraza// - wyszukuje podaną frazę; * /// // - wyszukuje ostatnio wyszukiwaną frazę; * zamiana: * //:s/CO/NA CO/FLAGI// - zamiena CO na NA CO w bieżącej linii; * //:%s/CO/NA CO/FLAGI// - zamienia CO na NA CO w całym pliku; * //CO// może być wyrażeniem regularnym (przy czym +, ?, |, {, }, (, i ) wymagają wyparsowania backslashem); * //NA CO// może zawierać tzw. //backreferences//; * //FLAGI//: * //g// - domyślnie zamieniane jest tylko pierwsze napotkane wystąpienie, flaga //g// powoduje zastąpienie wszystkich wystąpień; * //i// - porównanie będzie dokonywane bez rozróżnienia wielkości znaków; * //c// - vi zapyta przed dokonaniem każdej zamiany; * kopiowanie i wklejanie: * //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; * cofnij/ponów: * //u// - cofnij; * //CTRL+R// - ponów; * //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 //R//<code>system("echo 'tresc maila' | mail -s 'temat wiadomosci' adres@email")</code> * w Stacie<code>! echo 'tresc maila' | mail -s 'temat wiadomosci' adres@email</code> * w Mplus-ie - wywołać Mplus-a komendą<code>mplus plikWsadowy; echo 'tresc maila' | mail -s 'temat wiadomosci' adres@email</code> ====== Uwagi do oprogramowania ====== ===== Mplus ===== - Aby skorzystać z wielordzeniowości w Mplusie pod linuksem, należy dopisać do sekcji **ANALYSIS** pliku //.inp// polecenie <code>PROCESSORS IS liczbaRdzeni;</code> - 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ą: * programiści; * środowiska programistyczne, debugery, freymworki, itp.; * sprawdzone kompilatory. 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 ====== <del>Do wirtualki z Windows 7 można się dostać na dwa sposoby:</del> - <del>przez RDP (a więc w szczególności //pulpit zdalny Windows//)</del> * <del>pod adresem 10.0.1.71</del> * <del>tylko z sieci lokalnej IBE (trzeba być w IBE lub połączyć się z siecią lokalną IBE przez VPN)</del> - <del>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</del> * <del>pod linuksem: <code>ssh -L 5901:127.0.0.1:5900 -p 7122 TwójLogin@ibe.edu.pl</code></del> * <del>w Putty-m</del> * <del>w drzewku po lewej stronie odszukać //Connection->SSH->Tunnels//</del> * <del>wpisać w pole "source port" wartość "5901", w pole "destination" wartość "127.0.0.1:5900" i zdefiniować tunel przyciskiem "add"</del> * <del>pozostałe ustawienia, jak w wypadku zwykłego połączenia opisanego w poprzednim rozdziale</del> <del>Klienta VNC i/lub RDP można bez problemu znaleźć za pomocą googla (w szczególności zaś //pulpit zdalny Windows// jest klientem RDP).</del>
odra.1387015449.txt.gz
· ostatnio zmienione: 2013/12/14 11:04 przez
zozlak
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Do góry