Superkomputer z Raspberry PI
|
|
- Kinga Kowalik
- 8 lat temu
- Przeglądów:
Transkrypt
1 PROJEKTY SOFT Dodatkowe informacje Dziękujemy firmie RS Components za dostarczenie Raspberry PI, które posłużyło do realizacji i testowania opisywanego projektu superkomputera. Fotografia 1. Raspberry PI obudowane klockami LEGO Superkomputer z Raspberry PI Moc obliczeniowa podstawowej wersji Raspberry PI nie jest duża kształtuje się na poziomie wydajności procesora Intel Pentium II 300 MHz, a więc układu z końca ubiegłego wieku. Gdyby jednak połączyć ze sobą większą liczbę tych miniaturowych komputerów i w jakiś sposób dzielić wykonywane operacje pomiędzy poszczególne rdzenie, można by było uzyskać całkiem dużą sumaryczną wydajność. Tym bardziej jeśli skorzystać ze zintegrowanego GPU. W artykule pokazujemy jak zbudować skalowalny superkomputer, oparty właśnie o Raspberry PI. Co więcej, zastosowaną technikę da się zaimplementować na innych platformach komputerowych, a powstały system jest w stanie realizować programy napisane dla profesjonalnych superkomputerów. Niska cena Raspberry PI sprawiła, że komputer ten jest wszechobecny. Znaleźć go można w wielu domach, często w wielu egzemplarzach. Dodatkowo, biorąc pod uwagę fakt, że nowsze wersje Raspberry PI są bardziej wydajne i z pewnością część użytkowników zastąpi dotychczasowe minikomputery nowszymi, liczba leżących odłogiem Raspberry PI z pewnością będzie szybko rosła. Nieużywane Raspberry PI można w całkiem łatwy sposób wykorzystać do stworzenia systemu o cechach superkomputera, a więc maszyny przetwarzającej dane równolegle i zdolnej do wykonywania programów napisanych dla superkomputerów. Sumaryczna moc obliczeniowa, tak jak w przypadku wszystkich nowoczesnych superkomputerów, zależeć będzie przede wszystkim od liczby modułów, a więc liczby rdzeni przetwarzających dane i ich zegarów taktujących. W przypadku Raspberry PI wiele będzie zależało od zastosowanej generacji mikrokomputera. Obliczanie wydajności Raspberry PI 1 zostało wyposażone w układ Broadcom BCM2835 z pojedynczym, 32-bitowym rdzeniem ARM1176J- ZF-S, taktowanym zegarem 700 MHz. Raspberry PI 2 ma już układ Broadcom BCM2836, a więc cztery rdzenie Cortex-A7, taktowane zegarem 900 MHz. Najnowsze Raspberry PI 3 poszło o krok dalej zastosowany układ to 64-bitowy Broadcom BCM2837, z czterema rdzeniami Cortex-A53, taktowanymi zegarem 1,2 GHz. Można też wspomnieć o module Raspberry PI Zero, z układem takim jak w Raspberry PI 1, ale szybszym, bo taktowanym zegarem 1 GHz (tabela 1). Moc obliczeniową komputera można przedstawiać na kilka sposobów. W przypadku typowych procesorów najczęściej porównanie opiera się na jednostce MIPS, tj. milionach wykonywanych instrukcji na sekundę (Mega Instructions Per Second). Nie trzeba być specjalistą od architektury 32
2 Superkomputer z Raspberry PI Tabela 1. Podstawowe parametry poszczególnych modeli Raspberry PI Parametr\ Model SoC CPU Raspberry PI 1 Raspberry PI 1 Model A i Model A+ Model B i Model B+ Broadcom BMC rdzeniowy MHz GPU Pamięć RAM Raspberry PI 2 Model B Broadcom BCM rdzeniowy ARM MHz Broadcom VideoCore IV, 24 GFLOPS 256 MB 512 MB (starsze wersje mogą mieć 256 MB) Raspberry PI 3 Model B Broadcom BCM bitowy, 4-rdzeniowy ARM GHz Broadcom VideoCore IV, 28,8 GFLOPS 1 GB Raspberry PI Zero Broadcom BCM rdzeniowy GHz Broadcom VideoCore IV, 24 GFLOPS 512 MB Fotografia 2. Superkomputer zbudowany przez Simona Coxa z Uniwersytetu Southampton. Na maszynę składają się 64 Raspberry PI, umieszczone na stelażu wykonanym z klocków LEGO. komputerów, by wiedzieć, że różne procesory w ramach jednej instrukcji są w stanie wykonać różne liczby operacji, a tym bardziej przetworzyć różne ilości danych. Liczba wykonywanych operacji zależy od złożoności poleceń kodu maszynowego i w efekcie dostępności nietypowych instrukcji, a ilość przetwarzanych danych w ramach jednej operacji w istotnym stopniu zależy też od liczby bitów danych, przyjmowanych przez instrukcję i wielkości rejestrów. Naturalnie, komputery 64-bitowe będą pod tym względem w uproszczeniu, 2 razy bardziej wydajne niż jednostki 32-bitowe. W efekcie wydajność podawaną w MIPSach nierzadko wylicza się w oparciu o praktyczne testy. Jednym z takich testów jest Dhrystone, który (ze względów historycznych) porównuje wydajność badanego komputera do minikomputera VAX 11/780 z 1977 roku, a którego wydajność w operacjach na liczbach całkowitych szacowana była na 1 MIPS. Suche obliczenia mogłyby wskazywać, że 4 razy więcej rdzeni w Raspberry PI 2 względem RPI 1 oraz o niecałe 30% szybsze taktowanie powinno skutkować trochę ponad 5-krotnym wzrostem wydajności. Natomiast 64-bitowa architektura i zegar 1,2 GHz powinny sprawić, że Raspberry PI 3 będzie niemal 14 razy szybsze niż RPI 1. W praktyce jednak, w operacjach na liczbach całkowitych, testy wskazują jedynie ok. dwukrotny wzrost wydajności pomiędzy Raspberry PI 1 a Raspberry PI 2 i trochę ponad półtorakrotny pomiędzy Raspberry PI 2 a Raspberry PI 3. W efekcie Raspberry PI 3 w testach takich obliczeń jest niecałe 3 razy szybsze niż Raspberry PI 1, jeśli nie stosuje się podkręcania zegara. Raspberry PI 1 uzyskuje około 850 DMIPS (Dhrystone MIPS), Raspberry PI 2 ok 1540 DMIPS, a Raspberry PI DMIPS. Dla porównania, procesory Intel Core i7 uzyskują od ok do DMIPS, w zależności od modelu, taktowania, dodatkowych zestawów instrukcji wykorzystywanych w trakcie testu oraz kompilatora i systemu operacyjnego. Można by się więc spodziewać, że 30 połączonych ze sobą Raspberry PI 1 (lub 10 Raspberry PI 3) ma szansę konkurować z nowoczesnymi (nieserwerowymi) jednostkami Intela z najwyższej półki. A w jaki sposób taki klaster Raspberry PI można porównać do superkomputerów? Tu pojawia się inny problem wydajność superkomputerów od lat liczona jest we FLOPSach, a więc w liczbie operacji zmiennoprzecinkowych, które maszyna jest w stanie wykonać w ciągu sekundy (Floating Point Operations Per Second). Co więcej, wydajność będzie różna, w zależności od tego, czy mowa o operacjach na liczbach pojedynczej czy podwójnej precyzji. CPU pierwszego Raspberry PI ma wydajność rzędu 40 MFLOPS dla liczb podwójnej precyzji i 60 MFLOPS dla liczb pojedynczej precyzji. CPU drugiego Raspberry PI ma wydajność rzędu MFLOPS dla liczb podwójnej precyzji (w zależności od testu) i ok. 155 MFLOPS dla pojedynczej precyzji. RPI 3 uzyskuje ok MFLOPS dla obu precyzji, ze względu na 64-bitowy rdzeń CPU. REKLAMA 33
3 PROJEKTY SOFT Listing 1. Treść pliku machinefile, zawierającego listę jednostek wykonawczych. W przykładzie dostępne są trzy jednostki, przy czym trzecia z nich jest w stanie obsłużyć cztery wątki, a pozostałe po jednym wątku. Czwarta jednostka jest tymczasowo wyłączona znakiem komentarza : :4 # Dla porównania superkomputer Cray-1 z 1975 roku miał 160 MFLOPSów, a więc każde Raspberry PI 3 w klastrze to tak jakby jeden dodatkowy Cray-1. To niewiele, jak na obecne czasy, ale jest jeszcze jeden aspekt: układy Broadcoma użyte w RPI także zawierają jednostki GPU. Jednostka do obliczeń graficznych świetnie sprawdza się w operacjach zmiennoprzecinkowych. Ta zastosowana w Raspberry PI 1 i 2 ma moc obliczeniową na poziomie 24 GFLOPS, a ta z Raspberry PI 3 28,8 GFLOPS. Oznacza to, że użycie GPU w Raspberry PI pozwala zwiększyć wydajność modułu tworzonego przez nas superkomputera 600-krotnie, a każdy Raspberry PI 3 dodany do klastra będzie odpowiadać 180 superkomputerom Cray-1. Ba! W pojedynczym Raspberry PI pierwszej generacji drzemie ponad dwukrotnie większa moc obliczeniowa niż w superkomputerze IBM Deep Blue, znanym z tego ze pokonał on Garriego Kasparowa w szachy. 100 starych już Raspberry PI pierwszej generacji ma teoretycznie sumaryczną moc obliczeniową na poziomie 500. superkomputera w rankingu najlepszych komputerów na świecie w 2002 roku. A zaprezentowany w dalszej części sposób można równie dobrze wykorzystać w standardowych komputerach i z pomocą nowoczesnych kart graficznych uzyskać znacznie lepsze rezultaty. Architektura superkomputera Superkomputer różni się od zwykłego komputera tym, że wykonuje operacje za pomocą wielu różnych rdzeni. Co prawda nowoczesne procesory są już same w sobie wielordzeniowe, ale nowoczesne superkomputery są po prostu wieloprocesorowe. W gruncie rzeczy nowoczesne mikroprocesory są tak jakby scalonymi superkomputerami i optymalne wykorzystanie ich mocy obliczeniowej wymaga odpowiedniego uwzględnienia tego faktu podczas programowania. Natomiast nowoczesne superkomputery nie są całe scalone na pojedynczych krzemowych płytkach podłożowych, gdyż wykonanie takich podzespołów byłoby bardzo trudne, kosztowne (problem drastycznego spadku uzysku produkcyjnego wraz ze zwiększaniem powierzchni pojedynczego układu scalonego) oraz trudno byłoby odprowadzić z nich ciepło. Dlatego superkomputery od lat składają się z wielu procesorów, Rysunek 3. Hierarchia w systemie superkomputera Listing 2. Program obliczający liczbę PI na superkomputerze #include mpi.h #include <stdio.h> #include <math.h> double f(double); double f(double a) { return (4.0 / (1.0 + a*a)); int main(int argc,char *argv[]) { int n, myid, numprocs, i; double PI25DT = ; double mypi, pi, h, sum, x; double startwtime = 0.0, endwtime; int namelen; char processor_name[mpi_max_processor_name]; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); MPI_Get_processor_name(processor_name,&namelen); fprintf(stdout, Process %d of %d is on %s\n, myid, numprocs, processor_ name); fflush(stdout); n = 10000; /* domyślna liczba prostokątów */ if (myid == 0) startwtime = MPI_Wtime(); MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); h = 1.0 / (double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i - 0.5); sum += f(x); mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) { endwtime = MPI_Wtime(); printf( pi is approximately %.16f, Error is %.16f\n, pi, fabs(pi - PI25DT)); printf( wall clock time = %f\n, endwtime-startwtime); fflush(stdout); MPI_Finalize(); return 0; umieszczonych na kartach procesorowych lub płytach głównych i połączonych ze sobą za pomocą szybkich interfejsów. W superkomputerze można zazwyczaj wyróżnić jednostkę nadrzędną, która rozdziela zadania na poszczególne procesory lub bloki procesorów. Te natomiast przypisują wykonywane zadania do konkretnych rdzeni. W nowoczesnych superkomputerach bywa tak, że w blokach procesorów wydzielone są jednostki, które zajmują się tylko przekazywaniem i rozdzielaniem zadań, albo np. stanowią rezerwę, na wypadek uszkodzenia któregoś rdzenia procesora by w łatwy sposób można było utrzymać przewidziane tempo prac. Natomiast połączenia pomiędzy jednostkami w superkomputerach są wykonywane najczęściej za pomocą łączy optycznych, by nie spowalniać komunikacji. Ogólna struktura typowego superkomputera została zaprezentowana na rysunku 3. Nasz superkomputer również będzie zbudowany w ten sposób, z tym że do połączenia ze sobą jednostek wykorzystamy sieć ethernetową, opartą o przewody miedziane. Jednostki wykonawcze Praca superkomputera opiera się o wykonywanie instrukcji przez jednostki wykonawcze, którym to instrukcje zlecane są przez jednostkę nadrzędną. Ponieważ wszystkie Raspberry PI są do siebie bardzo podobne, raz przygotowane oprogramowanie będzie mogło posłużyć za wzór dla wszystkich jednostek wykonawczych tworzonego superkomputera. Wymianę danych pomiędzy jednostkami komputera oprzemy o standard MPI (Message Passing Interface), a dokładniej o jego rozbudowaną odmianę: MPI-2. W środowisku Linux protokół MPI zaimplementowano m.in. w postaci darmowego pakietu mpich. Jest on dostępny w repozytoriach Raspbiana w całkiem nowej wersji: mpich
4 Superkomputer z Raspberry PI Najnowsza dostępna wersja: mpich-3.2 ma dodatkowo wsparcie dla Fortrana 2008, ale nie będzie ono nam potrzebne. Słowo wyjaśnienia należy się dostępności pakietów mpich-3.1 i mpich2-3.1 w repozytorium. Dawniej mpich2 było implementacją MPI-2, a mpich jedynie MPI, jednakże od wersji 3.0, mpich i mpich2 są praktycznie identyczne. Przygotowanie wzorcowej jednostki wykonawczej nie jest trudne. Należy pobrać obraz Raspbiana warto sięgnąć po wersję lite i nagrać ją na kartę SD. W naszym przypadku jest to plik raspbian-jessie-lite.img. Następnie należy zalogować się do systemu i skonfigurować go zgodnie z potrzebami. Można np. ustawić dane odnośnie podstawowego języka systemowego, lokalizacji, strefy czasowej, klawiatury itd. Wypada też rozszerzyć system plików, gdyż kompletne środowisko mpich wraz ze wszystkimi bibliotekami zajmuje dosyć dużo miejsca. Problem jednak w tym, że szybkie rozszerzenie systemu plików z użyciem opcji w menu raspi-config powoduje automatyczne zajęcie całej dostępnej przestrzeni na karcie. W konsekwencji, wszystkie kolejne jednostki wykonawcze, bazujące na tworzonym w tym momencie wzorcu również będą musiały mieć karty o przynajmniej tej samej pojemności. Dodatkowo kopiowanie dużych obrazów będzie bardziej czasochłonne. Następnym krokiem powinna być instalacja pakietu mpich. O ile można go samodzielnie skompilować i uruchomić, dostępność gotowych plików dla Raspbiana znacząco ułatwia sprawę oraz skraca czas instalacji. Wystarczy tylko zaktualizować informacje o pakietach w repozytorium za pomocą polecenia: sudo apt-get update a następnie zainstalować dwa pakiety i powiązane z nimi biblioteki poleceniem: sudo apt-get install mpich2 mpich2python Całość zajmuje trochę czasu, ze względu na dużą liczbę bibliotek. Można też od razu zainstalować dodatkowe narzędzia potrzebne do wykonywania przewidywanych programów. Przygotowaną jednostkę wykonawczą należy bezpiecznie wyłączyć (sudo poweroff), wyjąć z niej kartę SD i utworzyć na jej podstawie obraz w postaci pliku, który łatwo będzie można kopiować na pozostałe jednostki. To właśnie ten obraz będzie stanowił wzorzec. Przygotowanie kolejnych jednostek wykonawczych będzie polegało przede wszystkim na zgraniu obrazu na kolejne karty SD. Jednostka sterująca Zgodnie z rysunkiem 1, nad jednostkami wykonawczymi panuje jednostka sterująca. Może nią być dowolny komputer z zainstalowanym pakietem mpich w wersji kompatybilnej z tą zainstalowaną na jednostkach wykonawczych. W naszym przypadku, dla ułatwienia, jednostka sterującą również będzie Raspberry PI. Co więcej ze względu na ograniczone zasoby, w praktyce rolę sterowania będzie pełnił jeden z komputerów będących także jednostką wykonawczą. Nie jest to optymalna konfiguracja dla dużych systemów, zbudowanych z identycznych komputerów, ale fakt że wszystkie komputery połączone są w klaster za pomocą sieci Ethernet sprawia, że taka konfiguracja jest w pełni możliwa. Uzupełnienie funkcji wybranej jednostki wykonawczej o funkcję jednostki sterującej jest bardzo proste dzięki temu, że jest na niej zainstalowany pakiet mpich. W praktyce konieczne jest przede wszystkim wygenerowanie klucza szyfrującego, który umożliwi bezproblemową autoryzację jednostki sterującej na jednostkach wykonawczych, bez potrzeby ręcznego wpisywania haseł. Taki klucz można nawet wygenerować podczas tworzenia wzorca jednostek wykonawczych, a następnie zapisać go w odpowiednim miejscu, by nie trzeba było go ręcznie kopiować na wszystkie jednostki. Klucz należy wygenerować poleceniem: ssh-keygen t rsa W trakcie generowania komputer zapyta o dodatkowe informacje, takie jak słowo kluczowe, które będzie ograniczać dostęp do klucza. Można pozostawić je puste, co nie jest zalecane ze względów bezpieczeństwa, ale ułatwia następnie korzystanie z klastra. Jeśli klucz generowany jest na etapie tworzenia wzorca, można go wpisać do autoryzowanych kluczy poleceniem: cat ~/.ssh/id_rsa.pub >>.ssh/authorized_keys Przy czym może wystąpić konieczność wcześniejszego stworzenia katalogu /home/ pi/.ssh. Jeśli klucz nie został zapisany we wzorcu, trzeba go następnie ręcznie wgrać do odpowiednich katalogów wszystkich jednostek wykonawczych. Można to zrobić za pomocą następującego zbitku poleceń: cat ~/.ssh/id_rsa.pub ssh pi@ cat >>.ssh/authorized_keys kolejno dla wszystkich adresów IP jednostek wykonawczych. Powoduje on załadowanie klucza publicznego jednostki sterującej, dzięki któremu będzie ona rozpoznawana jako autoryzowana do komunikacji przez SSH z danymi jednostkami wykonawczymi. Warto też zmienić nazwy hostów jednostek, dla ułatwienia ich identyfikacji. Można to zrobić kolejno wywołując polecenia: ssh pi@ sudo echo rpimodule001 sudo tee /etc/hostname dla wszystkich adresów IP jednostek wykonawczych. Pozostaje jeszcze problem adresowania, a więc odnajdywania poszczególnych jednostek wykonawczych przez jednostkę sterującą. Przy domyślnych ustawieniach wielu routerów, numery IP sieci LAN przypisywane są dynamicznie przez DHCP z rezerwacjami czasowymi na okres kilku godzin lub dni. A to oznacza, że z czasem mogą się one zmieniać i któreś z jednostek wykonawczych mogą wypaść poza pulę powstałą przy pierwszym uruchomieniu superkomputera. Numery IP można oczywiście skonfigurować ręcznie w systemie operacyjnym, ale jeśli tylko mają one pracować z jednym, konkretnym routerem, wygodniej będzie odnaleźć je w panelu konfiguracyjnym routera, znaleźć odpowiadające im numery MAC interfejsów sieciowych i dokonać rezerwacji stałych w DHCP routera. Następnie należy przygotować plik, w którym wymienione będą wszystkie jednostki wykonawcze. Plik ten ma prostą strukturę: w każdej linijce wpisywany jest adres IP kolejnej jednostki wykonawczej klastra oraz opcjonalnie, po dwukropku, liczba rdzeni danej, którymi dysponuje dana jednostka. Zamiast adresów IP można podać też nazwy hostów poszczególnych jednostek. Przykład takiego pliku przedstawiono na listingu 1. W końcu wystarczy upewnić się, że wszystkie jednostki są podłączone do sieci i włączone. Superkomputer jest już gotowy. Wykonywanie programów Uruchamianie programu na superkomputerze polega na odpowiednim uruchomieniu go na jednostce sterującej, tak by ona przekazała kod do przetwarzania jednostkom wykonawczym. Służy temu polecenie mpiexec. Jednakże nie każdy program zyska na pracy na superkomputerze. Ważne jest, by został on odpowiednio napisany i skompilowany. Przykłady takich programów można znaleźć w ramach źródeł pakietu mpich. Można je pobrać z Internetu, najlepiej w wersji identycznej, jak zainstalowana na Raspberry PI, a więc 3.1. Plik w formacie.tar.gz ze źródłami znajduje się pod adresem: Po pobraniu i rozpakowaniu go (komendy wget oraz tar -xzf) w katalogu mpich-3.1/ examples/ będzie można znaleźć kody źródłowe różnych przykładowych programów. Jednym z nich jest program cpi, służący do obliczania liczby pi (jego kod źródłowy został pokazany na listingu 2). Na potrzeby uwypuklenia zalet superkomputera, 35
5 PROJEKTY SOFT edytowaliśmy go, by zmienić dokładność jego pracy, podmieniając wartość n=10000 na n= Kod należy następnie skompilować, ale zamiast użyć polecenia gcc, używamy mpicc, również zainstalowanego wraz z pakietem mpich. Kompilacja wykonywana jest więc wywołując: cd./mpich-3.1/examples/ mpicc cpi.c o cpi W wyniku powyższych operacji, w katalogu z przykładami otrzymujemy plik wykonywalny cpi. Można go następnie zwyczajnie wywołać:./mpich-3.1/examples/cpi co w naszym przypadku powoduje wyświetlenie informacji, że czas wykonywania programu wyniósł ok 0,110 s (rysunek 4). Jednakże aby wykonać go nie na jednostce sterującej, ale na całym superkomputerze, należy skorzystać z polecenia mpiexec, wskazując plik z listą jednostek wykonawczych, liczbę jednostek które mają brać udział w wykonywaniu pracy oraz właściwy plik wykonywalny do przetwarzania. W przypadku dwóch jednostek polecenie będzie wyglądało następująco: mpiexec f machinefile n 2./ mpich-3.1/examples/cpi parametr f pozwala wskazać plik z listą jednostek, a parametr n umożliwia podanie liczby procesów, na które podzielony ma być plik wykonywany. Efekt uruchomienia programu na dwóch jednostkach wykonawczych (z czego jedna pełni jednocześnie rolę jednostki sterującej) widać na rysunku 5. Sumaryczny czas pracy zmalał do 0,064 s, czyli prawie dwukrotnie. Można również wymusić podział pracy na większą liczbę procesów, pomimo posiadania jedynie dwóch jednostek wykonawczych. System superkomputera wtedy samodzielnie zdecyduje (w sposób bardzo deterministyczny), jak rozdzielić pracę, opierając się o informacje o dostępnych rdzeniach na poszczególnych jednostkach. Jeśli każda jednostka ma tylko jeden rdzeń, prace zostaną podzielone po równo (rysunek 6). Jeśli jednak zadeklarowaliśmy w pliku machinefile, że jedna jednostka ma 3 rdzenie, a druga tylko jeden, w przypadku podziału na cztery procesy, jednostka 3-rdzeniowa dostanie dokładnie trzy procesy do wykonania, a 1-rdzeniowa tylko jeden (rysunek 7). Oglądając obrazki 4 i 5 warto zauważyć, że czas pracy dla dwóch jednordzeniowych jednostek wykonawczych, które otrzymają więcej niż jeden proces do przetwarzania, będzie dłuższy niż w przypadku optymalnym, pokazanym na rysunku 3. Przełączanie wątków procesora oraz przesyłanie danych przy równym podziale zwiększyło czas wykonania programu do ok. 0,078 s, a przy nierównomiernym obciążeniu, aż do 0,092 s. Jednocześnie zmieniła się precyzja obliczenia liczby pi, co wynika 36 Rysunek 4. Scr2 program wykonany samodzielnie na jednym RPI Rysunek 5. Scr1 program wykonany na dwóch RPI po jednym wątku na komputer Rysunek 6. Scr3 program wykonany na dwóch RPI po dwa wątki na komputer Rysunek 7. Scr4 program wykonany na dwóch RPI 3 wątki na jednym i 1 na drugim Fotografia 8. 4-elementowy superkomputer z Raspberry PI, zbudowany przez Rasima Muratovica z Nowego Jorku Fotografia 9. Tiny Titan to 9-elementowy superkomputer z Raspberry PI, przygotowany na potrzeby nauczania programowania superkomputerów
6 Superkomputer z Raspberry PI Fotografia 10. Superkomputer złożony ze 120 Raspberry PI, wyposażone w łącznie 120 modułów z wyświetlaczami ze specyfiki sposobu pisania programów na superkomputery. Programowanie superkomputera Aby napisany program był w stanie skorzystać z możliwości superkomputera, musi przewidywać podział pracy na wiele jednostek wykonawczych. Zamiast wykonywać cały algorytm krok po kroku, trzeba go podzielić na bloki, które zostaną przekazane do wykonania innym jednostkom. Nie każdy program da się w ten sposób łatwo zmodyfikować, ale szczęśliwie, większość zadań przetwarzania danych można wykonywać równolegle tak samo jak np. renderuje się grafikę na nowoczesnych GPU, które same w sobie mają bardzo wiele rdzeni. Wystarczy tylko podzielić dane na bloki i przypisać je do poszczególnych jednostek wykonawczych lub rdzeni. Następnie wynik obliczeń musi być przesłany w jedno miejsce i scalony. W przypadku środowiska mpich, w języku C do podziału i przekazywania danych wykorzystywana jest biblioteka mpi.h. Pozwala ona m.in. wewnątrz Tabela 2. Lista podstawowych funkcji środowiska mpich dla języków C i Fortran Funkcja Wywołanie w języku C Wywołanie w języku Fortran Inicjalizacja środowiska superkomputera Zapytanie o liczbę jednostek wykonawczych w klastrze Zapytanie o numer jednostki wykonawczej, przypisany procesorowi, który wywołuje tę funkcję Zakończenie pracy klastra nad danym zadaniem Wysłanie wiadomości, za pomocą której przekazywane są dane pomiędzy jednostkami Odebranie wiadomości z danymi z innej jednostki wykonawczej int MPI_Init(int *argc, char **argv) int MPI_Comm_size(MPI_ Comm comm, int *size) int MPI_Comm_rank(MPI_ Comm comm, int *rank) int MPI_Finalize() programu, dowiedzieć się, ile jest jednostek wykonawczych w klastrze, jaki jest numer danej jednostki, która aktualnie przetwarza przygotowany kod oraz wysyłać dane do innych jednostek. Lista podstawowych funkcji dla języków C i Fortran została zebrana w tabeli 2. Na początku programu konieczna jest inicjalizacja środowiska. Przydatne może być sprawdzenie liczby jednostek w klastrze pozwala to określić w jaki sposób jednostki mają dzielić między siebie zadania. Funkcja MPI_Comm_rank() umożliwia natomiast zdobycie informacji o aktualnym numerze jednostki, która także może posłużyć do podziału zadania. Przykładowo, jeśli dostępne jest N jednostek, a do przetworzenia jest blok danych o długości X segmentów, program może decydować, że na danej jednostce przetworzy jedynie X/N segmentów, a dokładniej tylko te, dla których warunek: if ((x mod N) == K) int MPI_Send (void *buf,int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) int MPI_Recv (void *buf,int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) integer ierror call MPI_Init(ierror) integer comm,size,ierror call MPI_Comm_Size(comm,size,ierror) integer comm,rank,ierror call MPI_Comm_Rank(comm,rank,ierror) CALL MPI_Finalize(ierror) <type> buf(*) integer count, datatype,dest,tag integer comm, ierror call MPI_Send(buf,count, datatype, dest, tag, comm, ierror) <type> buf(*) integer count, datatype, source,tag integer comm, status, ierror call MPI_Recv(buf,count, datatype, source, tag, comm, status, ierror) jest spełniony (gdzie x to numer aktualnego segmentu, a K to numer danej jednostki wykonawczej. Na koniec działania jednostek wykonawczych należy wywołać funkcję MPI_Finalize(), które informuję jednostkę sterującą, że dana jednostka wykonawcza ukończyła przyznane jej zadanie. Program kończy pracę, gdy wszystkie jednostki wykonawcze zgłoszą koniec prac. Natomiast przesyłanie danych wymaga wskazania przede wszystkim bufora, liczby i rodzaju danych, jednostki źródłowej lub docelowej oraz kilku dodatkowych informacji. W wywołaniach funkcji pojawia się też odniesienie do zmiennej MPI_COMM_ WORLD, która jest definiowana wewnątrz funkcji MPI_init(), a jej typ został określony w bibliotece. Analogiczny zestaw funkcji można znaleźć dla języka Python. Marcin Karbowniczek, EP Fotografia 11. Superkomputer Titan, zbudowany przez firmę Cray i zainstalowany w Oak Ridge National Laboratory, złożony z procesorów AMD Opteron, połączonych z jednostkami GPU Nvidia Tesla 37
Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu przesyłania komunikatów specyfikacja MPI Krzysztof Banaś Obliczenia równoległe 1 Model przesyłania komunikatów Paradygmat send receive wysyłanie komunikatu: send( cel, identyfikator_komunikatu,
Programowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 4 MPI - Message Passing Interface Maciej Matyka Instytut Fizyki Teoretycznej Jak używać w MPI? Donald Knuth: We should forget about small efficiencies, say about 97% of
Budowa komputera. Magistrala. Procesor Pamięć Układy I/O
Budowa komputera Magistrala Procesor Pamięć Układy I/O 1 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący przetwarzanie informacji Zmiana stanu tranzystorów wewnątrz
Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer
Sprzęt komputerowy 2 Autor prezentacji: 1 prof. dr hab. Maria Hilczer Budowa komputera Magistrala Procesor Pamięć Układy I/O 2 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący
Budowa komputera. Magistrala. Procesor Pamięć Układy I/O
Budowa komputera Magistrala Procesor Pamięć Układy I/O 1 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący przetwarzanie informacji Zmiana stanu tranzystorów wewnątrz
PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK
1 PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK POLITECHNIKA CZĘSTOCHOWSKA 2 Trendy rozwoju współczesnych procesorów Budowa procesora CPU na przykładzie Intel Kaby Lake
Programowanie Równoległe Wykład 5. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 5 MPI - Message Passing Interface Maciej Matyka Instytut Fizyki Teoretycznej Dorobiliśmy się strony WWW www.ift.uni.wroc.pl/~koma/pr/index.html MPI, wykład 2. Plan: - komunikacja
Budowa Mikrokomputera
Budowa Mikrokomputera Wykład z Podstaw Informatyki dla I roku BO Piotr Mika Podstawowe elementy komputera Procesor Pamięć Magistrala (2/16) Płyta główna (ang. mainboard, motherboard) płyta drukowana komputera,
Programowanie współbieżne... (4) Andrzej Baran 2010/11
Programowanie współbieżne... (4) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html Przykład Zaczniemy od znanego już przykładu: Iloczyn skalarny różne modele Programowanie współbieżne...
Wstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
Materiały dodatkowe. Raspberry Pi
Katedra Inżynierii Systemów Sterowania Materiały dodatkowe Raspberry Pi Opracowali: mgr inż. Tomasz Karla Data: Listopad, 2016 r. Dodatkowe informacje Materiały dodatkowe mają charakter ogólny i służą
Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1
i sieci komputerowe Szymon Wilk Superkomputery 1 1. Superkomputery to komputery o bardzo dużej mocy obliczeniowej. Przeznaczone są do symulacji zjawisk fizycznych prowadzonych głównie w instytucjach badawczych:
Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer
Sprzęt komputerowy 2 Autor prezentacji: 1 prof. dr hab. Maria Hilczer Budowa komputera Magistrala Procesor Pamięć Układy I/O 2 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący
Operacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1
Operacje grupowego przesyłania komunikatów Krzysztof Banaś Obliczenia równoległe 1 Operacje grupowego przesyłania komunikatów Operacje, w ramach których ten sam komunikat lub zbiór komunikatów przesyłany
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu inż. Daniel Solarz Wydział Fizyki i Informatyki Stosowanej AGH 1. Cel projektu. Celem projektu było napisanie wtyczki
Zdalny podgląd wizualizacji z panelu XV100 przez przeglądarkę internetową (WebServer)
www.eaton.com www.moeller.pl Zdalny podgląd wizualizacji z panelu XV100 przez przeglądarkę internetową (WebServer) Notatka aplikacyjna NA152PL Spis treści 1. Wprowadzenie... 3 2. Wymagane oprogramowanie...
IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux
IBM SPSS Statistics - ssentials for R: Instrukcje instalacji dla Linux Przedstawione poniżej instrukcje dotyczą instalowania IBM SPSS Statistics - ssentials for R w systemach operacyjnych Linux. Przegląd
Operacje grupowego przesyłania komunikatów
Operacje grupowego przesyłania komunikatów 1 Operacje grupowego przesyłania komunikatów Operacje, w ramach których ten sam komunikat lub zbiór komunikatów przesyłany jest pomiędzy więcej niż dwoma procesami
Komunikacja kolektywna w środowisku MPI
Komunikacja kolektywna w środowisku MPI Zakres ćwiczenia W tym ćwiczeniu dowiesz się, co to jest komunikacja kolektywna i w jaki sposób napisać swój pierwszy program wykorzystujący komunikację kolektywną
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Jak wygląda praca na klastrze
Jak wygląda praca na klastrze Upraszczając nieco sprawę można powiedzieć, że klaster to dużo niezależnych komputerów (jednostek) połączonych mniej lub bardziej sprawną siecią. Często poszczególne jednostki
Architektura komputerów
Architektura komputerów Wykład 12 Jan Kazimirski 1 Magistrale systemowe 2 Magistrale Magistrala medium łączące dwa lub więcej urządzeń Sygnał przesyłany magistralą może być odbierany przez wiele urządzeń
Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1
Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Wprowadzenie Procesory graficzne GPU (Graphics Processing Units) stosowane są w kartach graficznych do przetwarzania grafiki komputerowej
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.
Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Organizacja pamięci Organizacja pamięci współczesnych systemów komputerowych
Laboratorium Komputerowe Systemy Pomiarowe
Jarosław Gliwiński, Łukasz Rogacz Laboratorium Komputerowe Systemy Pomiarowe ćw. Zastosowanie standardu VISA do obsługi interfejsu RS-232C Data wykonania: 03.04.08 Data oddania: 17.04.08 Celem ćwiczenia
IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa)
IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa) Przedstawione poniżej instrukcje dotyczą instalowania IBM SPSS Statistics wersji 20 przy użyciu licencja sieciowa. Ten dokument
OBSŁUGA I KONFIGURACJA SIECI W WINDOWS
OBSŁUGA I KONFIGURACJA SIECI W WINDOWS Jak skonfigurować komputer pracujący pod kontrolą systemu operacyjnego Windows 7, tak aby uzyskać dostęp do internetu? Zakładamy, że komputer pracuje w małej domowej
IBM SPSS Statistics dla systemu Windows Instrukcje instalacji (licencja sieciowa)
IBM SPSS Statistics dla systemu Windows Instrukcje instalacji (licencja sieciowa) Przedstawione poniżej instrukcje dotyczą instalowania IBM SPSS Statistics wersji 21 przy użyciu licencja sieciowa. Ten
IBM SPSS Statistics Version 22. Windows - Instrukcja instalacji (licencja wielokrotna)
IBM SPSS Statistics Version 22 Windows - Instrukcja instalacji (licencja wielokrotna) Spis treści Instrukcja instalacji.......... 1 Wymagania systemowe........... 1 Instalowanie produktu............ 1
1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
która metoda jest najlepsza
która metoda jest najlepsza dr inż. Marek Żabka Instytut Matematyki Wydział Matematyki Stosowanej Politechnika Śląska 20 września 2012r Nowa metoda tworzenia grafiki na stronie internetowej: element,,canvas
Sieciowa instalacja Sekafi 3 SQL
Sieciowa instalacja Sekafi 3 SQL Niniejsza instrukcja opisuje instalację Sekafi 3 SQL w wersji sieciowej, z zewnętrznym serwerem bazy danych. Jeśli wymagana jest praca jednostanowiskowa, należy postępować
Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych
Wykład 2: Budowanie sieci lokalnych 1 Budowanie sieci lokalnych Technologie istotne z punktu widzenia konfiguracji i testowania poprawnego działania sieci lokalnej: Protokół ICMP i narzędzia go wykorzystujące
SIECI KOMPUTEROWE Adresowanie IP
Adresowanie IP Podstawowa funkcja protokołu IP (Internet Protocol) polega na dodawaniu informacji o adresie do pakietu danych i przesyłaniu ich poprzez sieć do właściwych miejsc docelowych. Aby umożliwić
IBM SPSS Statistics dla systemu Windows Instrukcje dotyczące instalacji (licencja sieciowa)
IBM SPSS Statistics dla systemu Windows Instrukcje dotyczące instalacji (licencja sieciowa) Przedstawione poniżej instrukcje dotyczą instalowania IBM SPSS Statistics wersji 19 przy użyciu licencja sieciowa.
Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.
Nazwa implementacji: Nauka języka Python wyrażenia warunkowe Autor: Piotr Fiorek Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nasz kalkulator umie już liczyć, ale potrafi przeprowadzać
Algorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 007 Tryb rzeczywisty i chroniony procesora 2 SO i SK/WIN Wszystkie 32-bitowe procesory (386 i nowsze) mogą pracować w kilku trybach. Tryby pracy
UNIFON podręcznik użytkownika
UNIFON podręcznik użytkownika Spis treści: Instrukcja obsługi programu Unifon...2 Instalacja aplikacji Unifon...3 Korzystanie z aplikacji Unifon...6 Test zakończony sukcesem...9 Test zakończony niepowodzeniem...14
Architektura mikroprocesorów TEO 2009/2010
Architektura mikroprocesorów TEO 2009/2010 Plan wykładów Wykład 1: - Wstęp. Klasyfikacje mikroprocesorów Wykład 2: - Mikrokontrolery 8-bit: AVR, PIC Wykład 3: - Mikrokontrolery 8-bit: 8051, ST7 Wykład
NPS-520. Serwer druku do urządzeń wielofukcyjnych. Skrócona instrukcja obsługi. Wersja 1.00 Edycja 1 11/2006
NPS-520 Serwer druku do urządzeń wielofukcyjnych Skrócona instrukcja obsługi Wersja 1.00 Edycja 1 11/2006 Copyright 2006. Wszelkie prawa zastrzeżone. Informacje ogólne POLSKI Urządzenie NPS-520 jest serwerem
Metody optymalizacji soft-procesorów NIOS
POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Metody optymalizacji soft-procesorów NIOS Warszawa, 27.01.2011
Uruchomienie Raspberry Pi
Imie i nazwisko Nr indeksu Liczba punktów: Ramki oznaczone kolorem żółtym należy uzupełnić odpowiednią informacją! Po zakończeniu ćwiczenia niniejszą formatkę należy wysłać na adres: iwona.kochanska@eti.pg.gda.pl
QuickStart. 2012 TechBase S.A. Technical contact - support.techbase.eu 1/8
QuickStart 2012 TechBase S.A. Technical contact - support.techbase.eu 1/8 TECHBASE (C) QuickStart 2/8 Przygotowanie do pierwszego uruchomienia 1. Zasilacz Do podłączenia urządzenia należy przygotować zasilacz
Materiały dodatkowe. Simulink Real-Time
Katedra Inżynierii Systemów Sterowania Materiały dodatkowe Simulink Real-Time Opracowali: mgr inż. Tomasz Karla Data: Listopad, 2016 r. Wstęp Simulink Real-Time jest środowiskiem pozwalającym na tworzenie
RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,
RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC, zapoczątkowana przez i wstecznie zgodna z 16-bitowym procesorem
Instrukcja obsługi programu CMS Dla rejestratorów HANBANG
Instrukcja obsługi programu CMS Dla rejestratorów HANBANG 1. Wymagania sprzętowe: Minimalne wymagania sprzętowe: System operacyjny: Windows Serwer 2003 Standard Edition SP2 Baza danych: Mysql5.0 Procesor:
IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja wielokrotna)
IBM SPSS Statistics Wersja 22 Linux - Instrukcja instalacji (licencja wielokrotna) Spis treści Instrukcja instalacji.......... 1 Wymagania systemowe........... 1 Instalowanie produktu............ 1 Praca
Podgląd z rejestratorów IPOX na komputerze z systemem WINDOWS za pomocą programu NVMS-2.0 LITE
Wersja: 1.0 Data: 06.08.2019 Podgląd z rejestratorów IPOX na komputerze z systemem WINDOWS za pomocą programu NVMS-2.0 LITE NVMS-2 LITE jest oprogramowaniem typu CMS, umożliwiającym użytkownikowi sprawowanie
PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK
1 PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK POLITECHNIKA CZĘSTOCHOWSKA 2 Część teoretyczna Informacje i wstępne wymagania Cel przedmiotu i zakres materiału Zasady wydajnego
Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Tworzenie oprogramowania
Tworzenie oprogramowania dr inż. Krzysztof Konopko e-mail: k.konopko@pb.edu.pl 1 Tworzenie oprogramowania dla systemów wbudowanych Program wykładu: Tworzenie aplikacji na systemie wbudowanym. Konfiguracja
IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika)
IBM SPSS Statistics Wersja 22 Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika) Spis treści Instrukcja instalacji.......... 1 Wymagania systemowe........... 1 Kod autoryzacji.............
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu
Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu Polska Organizacja Turystyczna ul. Chałubińskiego 8 00-613 Warszawa Spis treści 1 Założenia wstępne... 1 1.1 Informacje wstępne... 1 1.2 Cel projektu...
Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie
Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których
Skanowanie podsieci oraz wykrywanie terminali ABA-X3
Skanowanie podsieci oraz wykrywanie terminali ABA-X3 Terminale ABA-X3 od dostarczane od połowy listopada 2010 r. są wyposażane w oprogramowanie umożliwiające skanowanie podsieci w poszukiwaniu aktywnych
Bibliografia: pl.wikipedia.org www.intel.com. Historia i rodzaje procesorów w firmy Intel
Bibliografia: pl.wikipedia.org www.intel.com Historia i rodzaje procesorów w firmy Intel Specyfikacja Lista mikroprocesorów produkowanych przez firmę Intel 4-bitowe 4004 4040 8-bitowe x86 IA-64 8008 8080
1. Opis aplikacji. 2. Przeprowadzanie pomiarów. 3. Tworzenie sprawozdania
1. Opis aplikacji Interfejs programu podzielony jest na dwie zakładki. Wszystkie ustawienia znajdują się w drugiej zakładce, są przygotowane do ćwiczenia i nie można ich zmieniac bez pozwolenia prowadzącego
Raport Hurtownie Danych
Raport Hurtownie Danych Algorytm Apriori na indeksie bitmapowym oraz OpenCL Mikołaj Dobski, Mateusz Jarus, Piotr Jessa, Jarosław Szymczak Cel projektu: Implementacja algorytmu Apriori oraz jego optymalizacja.
Zegar - układ wysyłający regularne impulsy o stałej szerokości (J) i częstotliwości (f)
Zegar Zegar - układ wysyłający regularne impulsy o stałej szerokości (J) i częstotliwości (f) http://en.wikipedia.org/wiki/computer_clock umożliwia kontrolę relacji czasowych w CPU pobieranie, dekodowanie,
Uruchomienie Raspberry Pi
Imie i nazwisko Nr indeksu Liczba punktów: Ramki oznaczone kolorem żółtym należy uzupełnić odpowiednią informacją! Po zakończeniu ćwiczenia niniejszą formatkę należy wysłać na adres: iwona.kochanska@eti.pg.gda.pl
System kontroli dostępu ACCO NET Instrukcja instalacji
System kontroli dostępu ACCO NET Instrukcja instalacji acco_net_i_pl 12/14 SATEL sp. z o.o. ul. Budowlanych 66 80-298 Gdańsk POLSKA tel. 58 320 94 00 serwis 58 320 94 30 dz. techn. 58 320 94 20; 604 166
EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2018 ZASADY OCENIANIA
EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 208 ZASADY OCENIANIA Układ graficzny CKE 208 Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu Nazwa kwalifikacji: Montaż i
Instrukcja konfiguracji programu Fakt z modułem lanfakt
Instrukcja konfiguracji programu Fakt z modułem lanfakt (wersja 2016.04) Fakt Dystrybucja Sp. z o. o. 81-552 Gdynia, ul. Wielkopolska 21/2 www.fakt.com.pl serwis@fakt.com.pl Spis treści 1.Moduł lanfakt...
Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?
Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz
2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego
2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego produktu. 23 czerwca 2014 Spis treści 3 Spis treści...5
Konfiguracja podglądu obrazu z kamery IP / rejestratora BCS przez sieć LAN.
Konfiguracja podglądu obrazu z kamery IP / rejestratora BCS przez sieć LAN. Aby oglądać obraz z kamery na komputerze za pośrednictwem sieci komputerowej (sieci lokalnej LAN lub Internetu), mamy do dyspozycji
Instalacja środowiska MPI w systemie operacyjnym Linux
Instalacja środowiska MPI w systemie operacyjnym Linux Zakres ćwiczenia W tym ćwiczeniu dowiesz się, w jaki sposób dokonać instalacji środowiska MPI w systemie operacyjnym Linux. Do instalacji wybrano
Pakiet Deino MPI jako środowiska programowania równoległego Instalacja i konfiguracja pakietu
Deino MPI 1 Pakiet Deino MPI jako środowiska programowania równoległego Instalacja i konfiguracja pakietu Jędrzej Ułasiewicz Wrocław 2010 Deino MPI 2 1. PAKIET DEINO MPI JAKO ŚRODOWISKA PROGRAMOWANIA RÓWNOLEGŁEGO
Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika
Warsztaty AVR Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR Dariusz Wika 1.Krótki wstęp: Eclipse to rozbudowane środowisko programistyczne, które dzięki możliwości instalowania
Instalacja i podstawowa konfiguracja aplikacji ImageManager
Instalacja i podstawowa konfiguracja aplikacji ImageManager Wymagania systemowe dla aplikacji ImageManager przynajmniej 1 GB pamięci RAM (4 GB rekomendowane) przynajmniej 75 MB wolnego miejsca na dysku
Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C
Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy
Połączenia. Obsługiwane systemy operacyjne. Strona 1 z 5
Strona 1 z 5 Połączenia Obsługiwane systemy operacyjne Korzystając z dysku CD Oprogramowanie i dokumentacja, można zainstalować oprogramowanie drukarki w następujących systemach operacyjnych: Windows 8
Jak zainstalować i skonfigurować komunikator MIRANDA, aby wyglądał i funkcjonował jak Gadu Gadu Tutorial by t800.
Jak zainstalować i skonfigurować komunikator MIRANDA, aby wyglądał i funkcjonował jak Gadu Gadu Tutorial by t800. Wraz z niniejszym tutorialem, dołączone są 4 pliki (krok0, krok1, itd). Nie należy ich
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Instalacja Wirtualnego Serwera Egzaminacyjnego
Instalacja Wirtualnego Serwera Egzaminacyjnego (materiał wewnętrzny: aktualizacja 2010-10-26 Pilotaż Egzaminów Online) Wprowadzenie: 1. Wirtualny Serwer Egzaminacyjny ma niewielkie wymagania sprzętowe
Pomoc: konfiguracja PPPoE
Pomoc: konfiguracja PPPoE Sieć AGGnet wykorzystuje protokół PPPoE w celu uwierzytelnienia użytkownika, zanim przyznany zostanie dostęp do zasobów Internetu. Każdy abonent naszej sieci otrzymuje indywidualny
Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.
Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja
Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x
Wdrożenie modułu płatności eservice dla systemu oscommerce 2.3.x - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie
4. Podstawowa konfiguracja
4. Podstawowa konfiguracja Po pierwszym zalogowaniu się do urządzenia należy zweryfikować poprawność licencji. Można to zrobić na jednym z widżetów panelu kontrolnego. Wstępną konfigurację można podzielić
1. INSTALACJA SERWERA
1. INSTALACJA SERWERA Dostarczony serwer wizualizacji składa się z: 1.1. RASPBERRY PI w plastikowej obudowie; 1.2. Karty pamięci; 1.3. Zasilacza 5 V DC; 1,5 A; 1.4. Konwertera USB RS485; 1.5. Kabla
IBM SPSS Statistics Wersja 25. Windows Instrukcja instalacji (licencja autoryzowanego użytkownika) IBM
IBM SPSS Statistics Wersja 25 Windows Instrukcja instalacji (licencja autoryzowanego użytkownika) IBM Spis treści Instrukcja instalacji.......... 1 Wymagania systemowe........... 1 Kod autoryzacji.............
Procedura wdrożeniowa program MERKURY QUATTRO wer. 1.0
Syriusz sp. z o.o. Rzeszów, 2009 Procedura wdrożeniowa program MERKURY QUATTRO wer. 1.0 POSTANOWIENIA OGÓLNE Minimalna, sugerowana ilość godzin wdrożenia programu to: bez przenoszenia danych 8 godzin +
Enterprise, czyli instytutowy klaster obliczeniowy
Enterprise, czyli instytutowy klaster obliczeniowy Janusz Szwabiński szwabin@ift.uni.wroc.pl Enterprise, czyli instytutowy klaster obliczeniowy p.1/28 Plan wykładu Klastry komputerowe Enterprise od podszewki
Kod produktu: MP-W7100A-RS232
KONWERTER RS232 - TCP/IP ETHERNET NA BAZIE W7100A FIRMY WIZNET MP-W7100A-RS232 jest gotowym do zastosowania konwerterem standardu RS232 na TCP/IP Ethernet (serwer portu szeregowego). Umożliwia bezpośrednie
Ćwiczenie Konfiguracja statycznych oraz domyślnych tras routingu IPv4
Ćwiczenie Konfiguracja statycznych oraz domyślnych tras routingu IPv4 Topologia Tabela adresacji Urządzenie Interfejs Adres IP Maska podsieci Brama domyślna R1 G0/1 192.168.0.1 255.255.255.0 N/A S0/0/1
Kalipso wywiady środowiskowe
Kalipso wywiady środowiskowe Instrukcja obsługi INFO-R Spółka Jawna - 2017 43-430 Pogórze, ul. Baziowa 29, tel. (33) 479 93 29, (33) 479 93 89 fax: (33) 853 04 06 e-mail: admin@ops.strefa.pl Spis treści:
OPTIMA PC v2.2.1. Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA 255 2011 ELFON. Instrukcja obsługi. Rev 1
OPTIMA PC v2.2.1 Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA 255 Instrukcja obsługi Rev 1 2011 ELFON Wprowadzenie OPTIMA PC jest programem, który w wygodny sposób umożliwia konfigurację
Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1 MPI dynamiczne zarządzanie procesami MPI 2 umożliwia dynamiczne zarządzanie procesami, choć
Nowinki technologiczne procesorów
Elbląg 22.04.2010 Nowinki technologiczne procesorów Przygotował: Radosław Kubryń VIII semestr PDBiOU 1 Spis treści 1. Wstęp 2. Intel Hyper-Threading 3. Enhanced Intel Speed Technology 4. Intel HD Graphics
Sprawozdanie z zajęć laboratoryjnych: Technologie sieciowe 1
Łukasz Przywarty 171018 Data utworzenia: 10.04.2010r. Prowadzący: dr inż. Marcin Markowski Sprawozdanie z zajęć laboratoryjnych: Technologie sieciowe 1 Temat: Zadanie domowe, rozdział 6 - Adresowanie sieci
Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki
Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki Cel Konfiguracja i testowanie serwera WWW Apache w celu optymalizacji wydajności. 2/25 Zakres Konfigurowanie serwera Apache jako wydajnego
IBM SPSS Statistics dla systemu Windows Instrukcje dotyczące instalacji (jeden użytkownik)
IBM SPSS Statistics dla systemu Windows Instrukcje dotyczące instalacji (jeden użytkownik) Przedstawione poniżej instrukcje dotyczą instalowania IBM SPSS Statistics wersji 21 przy użyciu licencja dla jednego
Instrukcja instalacji wtyczki Przelewy24
Instrukcja instalacji wtyczki Przelewy24 Prestashop 1.7 Data: 2017-01-03 Ver: 1.1 Moduł przeznaczony jest dla Prestashop w wersji minimum 1.7. Strona 1 z 9 1 Minimalne wymagania wtyczki Przelewy24 - PHP
Akademickie Centrum Informatyki PS. Wydział Informatyki PS
kademickie Centrum Informatyki PS Wydział Informatyki PS Wydział Informatyki Sieci komputerowe i Telekomunikacyjne Transmisja w protokole IP Krzysztof ogusławski tel. 4 333 950 kbogu@man.szczecin.pl 1.
Dydaktyka Informatyki budowa i zasady działania komputera
Dydaktyka Informatyki budowa i zasady działania komputera Instytut Matematyki Uniwersytet Gdański System komputerowy System komputerowy układ współdziałania dwóch składowych: szprzętu komputerowego oraz
EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2017 CZĘŚĆ PRAKTYCZNA
Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu Układ graficzny CKE 2016 Nazwa kwalifikacji: Montaż i eksploatacja komputerów osobistych oraz urządzeń peryferyjnych Oznaczenie