Operacje kolektywne MPI
|
|
- Ludwik Kołodziej
- 8 lat temu
- Przeglądów:
Transkrypt
1 Operacje kolektywne MPI 1
2 Operacje kolektywne Do tej pory w operacje przesyłania komunikatu miały charakter punkt-punkt (najczęściej pomiędzy nadawcą i odbiorcą). W operacjach grupowych udział biorą wszystkie procesy w komunikatorze; wszystkie muszą wywołać daną funkcję. Jeżeli używamy MPI_COMM_WORLD oznacza to wszystkie procesy aplikacji. Wszystkie operacje grupowe są blokujące. Niektóre są synchronizujące. Komunikaty nie mają etykiet. Procesy odbierające i nadające używają takiej samej długości komunikatu. 2
3 Operacja barriery int MPI_Barrier(MPI_Comm com); Jest to operacja tylko synchronizująca. Nie przesyła i nie przetwarza żadnych danych. Przypominam, że muszą wywołać wszystkie procesy w komunikatorze. Definicja jest następująca Proces może opuścić operację MPI_Barrier dopiero gdy wszystkie inne procesy w komunikatorze wywołają tę operację. Była wykorzystana w programie Mandelbrot przy pomiarze czasu. Proces 0 mierzył czas swojej funkcji Master (MPI_Wtime) Ale co się wydarzy gdy proces 0 wystartuje na maszynie jako pierwszy, a pozostałe znacznie później -> do czasu obliczeń zostanie dodany czas oczekiwania na pozostałe procesy (przy pierwszej operacji Send albo Receive). Wyjście: wszystkie procesy aplikacji po zainicjowaniu MPI, przed pomiarem czasu wykonują kod: MPI_Barrier(MPI_COMM_WORLD); 3
4 Operacja rozgłaszania (ang. broadcast). P 0 P 1 P 2 P Jeden proces (w przykładzie o numerze 1, zwany root proces) przesyła komunikat, który otrzymują pozostałe procesy. int MPI_Bcast( void *buffer, int count, MPI_Datatype datatype, int root,mpi_comm comm). Przypominam, że funkcje muszą wywołać wszystkie procesy w komunikatorze!!! Parametr root, to numer procesu który jest nadawcą, pozostałe są odbiorcami. Wszystkie procesy muszą dostarczyć ten sam numer root. Wszystkie procesy muszą dostarczyć takie same wartości parametrów count oraz datatype. 4
5 Broadcast złożoność obliczeniowa Najprostsza implementacja operacji broadcast dla p procesów wysyła p komunikatów ze źródła. Złożoność jest O(p). Pseudokod: if (myrank == root) { for (int i=0;i<n;i++) if (i!= myrank) MPI_Send(buf,count,datatype,i,...,comm); } else MPI_Recv(buf, count,datatype, root,...,comm,status); Istnieją lepsze algorytmy, oparte na różnych strukturach drzewiastych. Realna złożoność jest O(log p). 5
6 Broadcast po drzewie binarnym - demo Istnieją jeszcze lepsze algorytmy (np. teraz w krokach >2 proces 1 jest bezczynny) Drzewo rozpinające hipersześcian (4 kroki). Dla wysokiej wydajności sieć połączeń musi wspierać równoległe przesyłanie komunikatów 6
7 Operacja redukcji (ang. reduce) P 0 P P 2 P Wszystkie procesy wykonują przemienną operację na danych (np. Sumowanie) a wynik jest przesyłany do jednego procesu (root) int MPI_Reduce ( void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm ) Proces root, również przesyła dane do redukcji (jest nadawcą i odbiorcą), pozostałe są nadawcami. Operacja redukcji jest odwrotnością operacji rozgłaszania i może być wykonana w czasie O(log p) przy pomocy wydajnych algorytmów drzewiastych. 7
8 Operacje redukcji Operacja MPI_MAX MPI_MIN MPI_SUM MPI_PROD MPI_LAND MPI_BAND MPI_LOR MPI_BOR MPI_LXOR MPI_BXOR MPI_MAXLOC MPI_MINLOC Znaczenie Maksimum Minimum Suma Iloczyn Logiczne AND Bitowe AND Logiczne OR Bitowe OR Logical XOR Bitowe XOR Lokacja maksimum Lokacja minimum Typy danych C całkowite i zmiennoprzec. C całkowite i zmiennoprzec. C całkowite i zmiennoprzec. C całkowite i zmiennoprzec. C całkowite C całkowite i byte C całkowite C całkowite i byte C całkowite C całkowite i byte Pary danych Pary danych 8
9 Operacja allreduce. P 0 P P 2 P Operacja redukcji, której wynik jest wysyłany wszystkim procesom, a nie tylko jednemu. int MPI_Allreduce ( void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm ) Brak argumentu root, ponieważ wynik otrzymują wszystkie procesy. Operacja allreduce koncepcyjnie jest sekwencją operacji redukcji i operacji rozgłaszania wyniku i może być zaimplementowana w czasie O(log p) przy pomocy wydajnych algorytmów drzewiastych. 9
10 Operacja scan. P 0 P P 2 P częściowe sumy Jest to częściowa operacja redukcji, w której proces o numerze i otrzymuje w swoim buforze odbiorczym recvbuf redukcję danych wysłanych przez procesy 0,1,...,i. int MPI_Scan ( void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,mpi_op op, MPI_Comm comm ) Brak argumentu root, ponieważ wynik otrzymują wszystkie procesy. Operacja allreduce koncepcyjnie jest sekwencją operacji redukcji i operacji rozgłaszania wyniku i może być zaimplementowana w czasie O(log p) przy pomocy wydajnych algorytmów drzewiastych. 10
11 Definiowanie własnych operacji Własną operację redukcji możemy zdefiniować przy pomocy funkcji: int MPI_Op_create(MPI_User_function *function,int commute,mpi_op *op ); Parametr commute powinien być równy 1 jeżeli operacja jest przemienna. Pod adresem op zostanie zapisany identyfikator operacji do posłużenia się jako argument operacji redukcji. Parametr function jest adresem funkcji o prototypie: void MPI_User_function( void * a, void * b, int * len, MPI_Datatype *type ); która przeprowadza operację b[i]=a[i] op b[i], dla i=0..len-1. a i b są wektorami wartości typu type o długości len. Stworzoną operację, gdy nie jest już potrzebna należy zwolnić przy pomocy funkcji int MPI_Op_free( MPI_Op *op ) 11
12 Przykład: całkowanie metodą Monte-Carlo Całka jest przybliżana poprzez losowanie wielokrotne losowanie wartości x r z przedziału [x 1,x 2 ] i sumowanie f(x r ): Zrównoleglenie jest bardzo proste (problem żenująco równoległy ): Niech każdy proces przeprowadza losowanie i oblicza własną sumę wartości funkcji. Następnie proces 0 zsumuje (operacja redukcji) sumy cząstkowe i obliczy wartość całki mnożąc sumę przez (x 2 -x 1 ) i dzieląc przez N. Aby zademonstrować operację rozgłaszania poprosimy użytkownika o podanie liczby prób. Uwaga: należy zadbać aby generator liczb losowych w każdym procesie był zainicjalizowany innym ziarnem. W przeciwnym wypadku każdy proces będzie losowałe te same liczby i wyniki nie będą statystycznie poprawne. Uwaga: istnieją o wiele wydajniejsze algorytmy całkowania! 12
13 Obliczanie sum cząstkowych int rank,size,n; // N to całkowita liczba prób // Całka tej funkcji na przedziale [0,1] to pi double f(double a) { return (4.0 / (1.0 + a*a)); } double PartialSum() { int Trials=N/size,i; double sum=0.0; // Korekta, aby łączna liczba prób była równa N if (rank<n%size) Trials++; } for(i=0;i<trials;i++) { double x=drand48(); sum+=f(x); } return sum; Www Www Www 13
14 Funkcja main (1) int main(int argc,char *argv[]) { double t1, t2; double globalsum,sum; const double PI25DT = ; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&size); MPI_Comm_rank(MPI_COMM_WORLD,&rank); // Inicjalizacja przy pomocy numeru procesu, każdy proces ma inne // ziarno generatora liczb pseudolosowych srand48((rank+1)*111); // Czekamy aż wszystkie wystartują MPI_Barrier(MPI_COMM_WORLD); if (rank == 0) { // Proces 0 pyta o liczbę prób printf("podaj liczbę prób:"); fflush(stdout); scanf("%d",&n); // mierzy czas t1=mpi_wtime(); } // Proces 0 rozgłasza liczbę prób pozostałym procesom. MPI_Bcast(&N, 1, MPI_INT, 0, MPI_COMM_WORLD); 14
15 } Funkcja main (2) // Wszystkie procesy obliczają sumę częściową sum=partialsum(); // sumy częściowe wszystkich procesów są sumowane a wynik // przesyłany do procesu 0 do zmiennej global sum. MPI_Reduce(&sum,&globalsum,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD); // Proces 0 drukuje wyniki if (rank == 0) { printf("pi jest w przybliżeniu %.16f, Błąd %.16f\n", globalsum/n, fabs(globalsum/n - PI25DT)); t2=mpi_wtime(); printf("czas obliczeń = %f\n", t2-t1); } MPI_Finalize(); return 0; Wszystkie procesy (w tym proces o numerze 0) przeprowadzają obliczenia Proces 0 jest wyróżniony poprzez Wczytywanie danych (liczba prób trzeba ją przesłać innym) Drukowanie wyników (trzeba zsumować sumy cząstkowe) Pomiar czasu 15
16 Operacja scatter sendcnt=recvcnt=2 P 0 P 1 P Jest wykonywana przy pomocy funkcji int MPI_Scatter(void *sendbuf,int sendcnt,mpi_datatype sendtype, void *recvbuf,int recvcnt,mpi_datatype recvtype,int root,mpi_comm comm); Proces źródłowy root wysyła innym procesom (i sobie) części wektora o adresie sendbuf i o długości sendcnt każda. Każdy proces otrzymuje tyle samo (recvcnt) elementów do bufora odbiorczego pod adresem recvbuf. Wszystkie procesy muszą dostarczyć identyczną wartość recvcnt. Proces o numerze i odbiera elementy począwszy od numeru i*sendcnt. 16
17 Operacja gather sendcnt=recvcnt=2 P 0 P 1 P Odwrotność operacji scatter. Jest wykonywana przy pomocy funkcji int MPI_Gather(void *sendbuf,int sendcnt,mpi_datatype sendtype, void *recvbuf,int recvcnt,mpi_datatype recvtype,int root,mpi_comm comm); Proces źródłowy root odbiera od każdego innego procesu (i od siebie) wektor o adresie sendbuf i o długości sendcnt każda. Argument recvcnt specyfikuje liczbę elementów odebranych od pojedynczego nadawcy a nie całkowitą liczbę odebranych elementów. Elementy zostaną zapisane do bufora odbiorczego pod adresem recvbuf. Wszystkie procesy muszą dostarczyć identyczną wartość recvcnt. Proces o numerze i odbiera elementy począwszy od numeru i*sendcnt. 17
18 Operacja allgather sendcnt=recvcnt=2 P 0 P 1 P Jest to operacja gather, której wynik przesyłany jest wszystkim procesom brak procesu źródłowego root. int MPI_Allgather(void *sendbuf,int sendcnt,mpi_datatype sendtype, void *recvbuf,int recvcnt,mpi_datatype recvtype,mpi_comm comm); Proces źródłowy root odbiera od każdego innego procesu (i od siebie) wektor o adresie sendbuf i o długości sendcnt każda. Argument recvcnt specyfikuje liczbę elementów odebranych od pojedynczego nadawcy a nie całkowitą liczbę odebranych elementów. Elementy zostaną zapisane do bufora odbiorczego pod adresem recvbuf. Wszystkie procesy muszą dostarczyć identyczną wartość recvcnt. Proces o numerze i odbiera elementy począwszy od numeru i*sendcnt. 18
19 Operacje gather i scatter ze zmienną liczbą elementów. Do tej pory zakładaliśmy, że każdy proces wysyła identyczną liczbę elementów. MPI dostarcza również operacje, w których możemy podać różną liczbę elementów dla różnych procesów. Ma ona prototyp: int MPI_Gatherv (void *sendbuf, int sendcnt,mpi_datatype sendtype, void *recvbuf, int *recvcnts, int *displs, MPI_Datatype recvtype,int root, MPI_Comm comm) Liczba wysyłanych elementów przez proces i to parametry sendcount oraz recvcnts[i] (tablica!!!). Mogą one być różne dla różnych procesów. Wartość displs[i] (tablica!!!) oznacza miejsce, w które w buforze recvbuf będą zapisane elementy wysłane przez proces i. Dostępna jest również operacja MPI_Allgatherv dla operacji allgather oraz operacja MPI_Scatterv o prototypie: int MPI_Scatterv (void *sendbuf,int *sendcnts,int *displs, MPI_Datatype sendtype,void *recvbuf,int recvcnt, MPI_Datatype recvtype, int root,mpi_comm comm ) 19
20 Operacja reduce-scatter recvcnts[0]=recvcnts[1]= =recvcnts[2]=2 Połączenie funkcji MPI_Reduce z MPI_Scatterv. Jest wykonywana przy pomocy funkcji: int MPI_Reduce_scatter ( void *sendbuf, void *recvbuf, int *recvcnts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm ) Operacja redukcji jest wykonywana na buforze o liczbie elementów równej sumie liczb z tablicy recvcnts. Proces i otrzymuje recvcnts[i] elementów. Wszystkie procesy muszą dostarczyć te same wartości parametrów datatype, op, comm oraz identyczną tablicę recvcnts. 20
21 Operacja All-to-All P 0 : A 0 B 0 C 0 P 0 : A 0 A 1 A 2 P 1 : A 1 B 1 C 1 MPI_Alltoall P 1 : B 0 B 1 B 2 P 2 : A 2 B 2 C 2 P 2 : C 0 C 1 C 2 Każdy proces wykonuje jednocześnie operacje scatter/gather wysyłając części swojego bufora nadawczego sendbuf innym procesom i odbierając do bufora odbiorczego recvbuf części wysłane przez inne procesy. int MPI_Alltoall( void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype,mpi_comm comm ) W powyższym przykładzie sendcount=recvcnt=1. Istnieje wersja (MPI_Alltoallv) pozwalająca na wysłanie różnej liczby elementów różnym procesom. 21
22 Przykład: mnożenie macierzy i wektora Kwadratowa macierz double A[N][N], Wektory double x[n], y[n]. Operacja macierzowa y=a*x; Kod szeregowy: for(int i=0;i<n;i++) { y[i]=0; for(int j=0;j<n;j++) y[i]=y[i]+a[i][j]*x[j]; } i - ty element wektora y to wynik przemnożenia i-tego wiersza macierzy A przez wektor x. y = A * x 22
23 Dystrybucja wierszami Każdy proces otrzymuje i przechowuje N/p (p jest liczbą procesów) wierszy macierzy A. Ponadto każdy proces otrzymuje N/p elementów wektora x oraz odpowiada za obliczenie N/p elementów wektora wynikowego y; Dystrybucja danych i wyników dla 3 procesów. y = A * x P 0 P 1 P 2 Proces P1 mógłby obliczyć wartość swoich (niebieskich) elementów wektora y, ale potrzebuje do tego całego wektora x. Podobnie w przypadku procesów P 0 oraz P 2. Idea: skorzystać z operacji MPI_Allgather, umożliwiając zgromadzenie przez wszystkie procesy całego wektora x. 23
24 Reprezentacja macierzy A w pamięci Pamięć jest tablicą jednowymiarową, zaś macierz A tablicą dwuwymiarową. Jak odwzorować ją w jednowymiarowej pamięci? A A 0,0 A 0,1 A 0,2 A 1,0 A 1,1 A 1,2 A 0,0 A 0,1 A 0,2 A 1,0 A 1,1 A 1,2 A 2,0 A 2,1 A 2,2 A 2,0 A 2,1 A 2,2 Deklaracja macierzy A: double *A; Alokacja pamięci macierzy NxN: A=malloc(sizeof(double)*N*N); Adresowanie elementu A i,j : (numeracja indeksów od 0) A[i*N+j] 24
25 Kod funkcji mnożącej (Grama i wsp.) void MultiplyRowwise(int N, double *A,double *x,double *y) // A część macierzy przechowywana przez proces // x oraz y części wektorów int np; // liczba procesów double fullx[n]; // pełny wektor x; rozszerzenie gnu języka C i C++ MPI_Comm_size(MPI_COMM_WORLD,&npes); // Liczba wierszy macierzy A oraz elementów wektorów x i y // przechowywanych przez proces int nlocal=n/np; // Zakładamy, że N dzieli się przez np // Gromadzimy wszyskie elementy wektora x w fullx; MPI_Allgather(x,nlocal,MPI_DOUBLE,fullx,nlocal,MPI_DOUBLE, MPI_COMM_WORLD); // Obliczamy elementy wektora y za które odpowiada proces for(int i=0;i<nlocal;i++) { y[i]=0.0; for(int j=0;j<n;j++) y[i]+=a[i*n+j]*fullx[j]; } } 25
26 Alternatywna dystrybucja macierzy kolumnami Każdy proces otrzymuje N/p kolumn macierzy A i odpowiada za N/p elementów wektorów x oraz y. y = A * x P 0 P 0 P 1 P 1 P 2 P 2 P 0 P 1 P 2 Każdy proces oblicza częściowy iloczyn skalarny dla swoich kolumn macierzy A. Częściowe iloczyny skalarne są sumowane funkcją MPI_Reduce dając wektor y Wektor y jest rozpraszany pomiędzy procesy funkcją MPI_Scatter. Kod zostawiam jako pracę domową. 26
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
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
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
Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP
Modele programowania równoległego Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP MPP - Cechy charakterystyczne 1 Prywatna, wyłączna przestrzeń adresowa.
Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak
Modele programowania równoległego Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak MPP - Cechy charakterystyczne 1 Prywatna - wyłączna przestrzeń adresowa. Równoległość
Programowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 2 Jan Kazimirski 1 MPI 1/2 2 Dlaczego klastry komputerowe? Wzrost mocy obliczeniowej jednego jest coraz trudniejszy do uzyskania. Koszt dodatkowej mocy obliczeniowej
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,
Miary Wydajności. Efektywność programu równoległego (E) jest definiowana jako stosunek przyśpieszenia do liczby procesorów
Miary Wydajności Czas wykonania równoległego (Tpar) jest czasem pomiędzy momentem rozpoczęcia obliczeń do momentu gdy ostatni procesor zakończy obliczenia Przyspieszenie (S) jest definiowane jako stosunek
Message Passing Interface
Message Passing Interface Interfejs programowania definiujący powiązania z językami C, C++, Fortran Standaryzacja (de facto) i rozszerzenie wcześniejszych rozwiązań dla programowania z przesyłaniem komunikatów
Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla
Tryby komunikacji między procesami w standardzie Message Passing Interface Piotr Stasiak 171011 Krzysztof Materla 171065 Wstęp MPI to standard przesyłania wiadomości (komunikatów) pomiędzy procesami programów
Architektura sieci połączeń między procesorami, sterowanie komunikacjami, biblioteki komunikacyjne
Wykład 4 Architektura sieci połączeń między procesorami, sterowanie komunikacjami, biblioteki komunikacyjne Spis treści: 1. Statyczne sieci połączeń w systemach równoległych 2. Dynamiczne sieci połączeń
Programowanie współbieżne Wykład 12 MPI c.d. Rafał Skinderowicz
Programowanie współbieżne MPI c.d. Rafał Skinderowicz Komunikacja grupowa Poprzednio rozważaliśmy komunikację między parami procesów synchroniczna (blokująca) np. MPI Recv, MPI Send asynchroniczna (nieblokująca)
Przykład MPI: zbiór Mandelbrota
Przykład MPI: zbiór Mandelbrota 1 Zbiór Mandelbrota Zbiór punktów na płaszczyźnie zespolonej, które są quasi-stabilne, kiedy są iterowane funkcją: z k 1 = z k 2 c gdzie z k+1 wartość zespolona w k+1 iteracji,
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
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ć
Programowanie Współbieżne
Programowanie Współbieżne MPI ( główne źródło http://pl.wikipedia.org/wiki/mpi) 1 Historia Początkowo (lata 80) różne środowiska przesyłania komunikatów dla potrzeb programowania równoległego. Niektóre
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 Środowisko przesyłania komunikatów MPI Rodzaje procedur: blokujące nieblokujące Tryby przesyłania
Wprowadzenie do MPI. Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.
Wprowadzenie do MPI Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.pl Maciej Cytowski m.cytowski@icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl
Język C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
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
Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe. 1. Wektory i macierze: a. Przykład
Programowanie Równoległe Wykład 5. MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 5 MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej MPI, wykład 3. Plan: - wirtualne topologie - badanie skalowanie czasu rozwiązania
51. Metody komunikacji nieblokującej.
51. Metody komunikacji nieblokującej. Funkcje nieblokujace różnia sie od wersji blokujacych przedrostkiem I (immediate) w nazwie oraz jednym dodatkowym argumentem: request, który jest używany do sprawdzenia,
Język C, tablice i funkcje (laboratorium)
Język C, tablice i funkcje (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
Programowanie współbieżne... (5)
Programowanie współbieżne... (5) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html 6 FUNKCJI Proste programy MPI można pisać używając tylko 6 funkcji Programowanie współbieżne...
Rozszerzenia MPI-2 1
Rozszerzenia MPI-2 1 2 Dynamiczne tworzenie procesów Aplikacja MPI 1 jest statyczna z natury Liczba procesów określana jest przy starcie aplikacji i się nie zmienia. Gwarantuje to szybką komunikację procesów.
Architektury systemów równoległych
Architektury systemów równoległych 1 Architektury systemów z pamięcią wspólną Architektury procesorów Procesory wielordzeniowe Procesory graficzne Akceleratory Procesory hybrydowe Architektury systemów
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
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,
Język C, tablice i funkcje (laboratorium, EE1-DI)
Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
5. Model komunikujących się procesów, komunikaty
Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć
Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, Materiał
Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych
Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2014/15 Znajdowanie maksimum w zbiorze
I. Podstawy języka C powtórka
I. Podstawy języka C powtórka Zadanie 1. Utwórz zmienne a = 730 (typu int), b = 106 (typu long long), c = 123.45 (typu double) Wypisz następujące komunikaty: Dane sa liczby: a = 730, b = 106 i c = 123.45.
Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.
Struktura programu Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem. W ostatnich latach najbardziej używanym stylem oprogramowania
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ą
Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych
Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2018/19 Problem: znajdowanie
utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,
Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz
Algorytmy numeryczne 1
Algorytmy numeryczne 1 Wprowadzenie Obliczenie numeryczne są najważniejszym zastosowaniem komputerów równoległych. Przykładem są symulacje zjawisk fizycznych, których przeprowadzenie sprowadza się do rozwiązania
http://www.mcs.anl.gov/research/projects/mpi/standard.html
z przedmiotu, prowadzonych na Wydziale BMiI, Akademii Techniczno-Humanistycznej w Bielsku-Białej. MPI czyli Message Passing Interface stanowi specyfikację pewnego standardu wysokopoziomowego protokołu
Czym jest całka? Całkowanie numeryczne
Całkowanie numeryczne jest to zagadnienie z metod elementów skończonych (MES). Korzystając z całkowania numerycznego możemy obliczyć wartość dowolnej całki jednowymiarowej oznaczonej. Wynik jest zawsze
Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych
Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2013/14 Znajdowanie maksimum w zbiorze
Algorytmy sortujące 1
Algorytmy sortujące 1 Sortowanie Jeden z najczęściej występujących, rozwiązywanych i stosowanych problemów. Ułożyć elementy listy (przyjmujemy: tablicy) w rosnącym porządku Sortowanie może być oparte na
Programowanie w standardzie MPI
Programowanie w standardzie MPI 1 2 Podstawy programowania z przesyłaniem komunikatów Model systemu równoległego w postaci p procesów, każdy z nich z własną przestrzenią adresową, nie współdzieloną z innymi
Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:
5 Tablice Tablica jest zestawem obiektów (zmiennych) tego samego typu, do których można się odwołać za pomocą wspólnej nazwy. Obiekty składowe tablicy noszą nazwę elementów tablicy. Dostęp do nich jest
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...
PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie współbieżne... (w13)
PARADYGMATY I JĘZYKI PROGRAMOWANIA Programowanie współbieżne... (w13) Treść 2 Wstęp Procesy i wątki Szybkość obliczeń prawo Amdahla Wyścig do zasobów Synchronizacja i mechanizmy synchronizacji semafory
Metody Metody, parametry, zwracanie wartości
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca
Złożoność obliczeniowa zadania, zestaw 2
Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze
Programowanie - wykład 4
Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include
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,
Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35
Programowanie w C++ Wykład 3 Katarzyna Grzelak 12 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35 Zakres ważności obiektów K.Grzelak (Wykład 1) Programowanie w C++ 2 / 35 Zakres ważności obiektów
Optymalizacja komunikacji w systemach rozproszonych i równoległych
Optymalizacja komunikacji w systemach rozproszonych i równoległych Szkolenie PCSS, 16.12.2001 literatura W. Gropp, E. Lusk, An Introduction to MPI, ANL P.S. Pacheco, A User s Guide to MPI, 1998 Ian Foster,
Łagodne wprowadzenie do Message Passing Interface (MPI)
Łagodne wprowadzenie do Message Passing Interface (MPI) Szymon Łukasik Zakład Automatyki PK szymonl@pk.edu.pl Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 1/48 Czym jest MPI? Własności
Część 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe
I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom
Weryfikacja oprogramowania, korzystajacego z MPI
Weryfikacja oprogramowania, korzystajacego z MPI Krzysztof Nozderko kn201076@students.mimuw.edu.pl 23 maja 2005 Wprowadzenie Równoległe obliczenia olbiczenia naukowców sa często bardzo kosztowne obliczeniowo
Interfejs MPI. Maciej Kasperski, Rafał Kozik. 16 kwietnia 2008
16 kwietnia 2008 Wprowadzenie Co to jest MPI? Plan prezentacji: co to jest MPI? komunikatory i grupy procesów; przesyłanie komunikatów; komunikacja kolektywna; wirtualne topologie;. Co to jest MPI? Wstęp
Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char
Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Ćwiczenie 1. Wprowadzenie do programu Octave
Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do
Programowanie aplikacji równoległych i rozproszonych. Wykład 8
Wykład 8 p. 1/?? Programowanie aplikacji równoległych i rozproszonych Wykład 8 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Plan wykładu
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. 1. Identyfikator funkcji,
Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne
1 Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,
Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010
Algorytmy równoległe Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka Znajdowanie maksimum w zbiorze n liczb węzły - maksimum liczb głębokość = 3 praca = 4++ = 7 (operacji) n - liczność
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach. 1. Dynamiczna alokacja pamięci dla tablic wielowymiarowych - Przykładowa
Programowanie współbieżne... (12) Andrzej Baran 2010/11
Programowanie współbieżne... (12) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html Dekompozycja danych. Wejście. rank 0 rank 1 rank 2 A B C A B C A B C indata indata indata wejście
Język C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
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
Klient-Serwer Komunikacja przy pomocy gniazd
II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu
Język ANSI C tablice wielowymiarowe
Język ANSI C tablice wielowymiarowe Gdy tablica wielowymiarowa jest parametrem funkcji, to w standardzie ANSI C konieczne jest podanie wszystkich wymiarów poza pierwszym. Przykład. Napisać program wczytujący
wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis
i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje
MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata
MACIERZE Sobiesiak Łukasz Wilczyńska Małgorzata Podstawowe pojęcia dotyczące macierzy Nie bez przyczyny zaczynamy od pojęcia macierzy, które jest niezwykle przydatne we wszystkich zastosowaniach, obliczeniach
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Algorytmy Równoległe i Rozproszone Część V - Model PRAM II
Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/ kuszner/arir/ 2005/06
Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1
Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).
Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami
Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami dr inż. Mariusz Uchroński Wrocławskie Centrum Sieciowo-Superkomputerowe Agenda Cykliczny problem przepływowy
wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;
Programowanie C++ Zadanie 1 Napisz program do obliczenia sumy i iloczynu ciągu liczb zakooczonego liczbą zero. Zakładamy, że ciąg zawiera co najmniej jedną liczbę (założenie to jest konieczne przy obliczeniu
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Instytut Informatyki Politechnika Poznańska Proces transmisji może w prowadzać błędy do przesyłanych wiadomości błędy pojedyncze lub grupowe Detekcja: Wymaga uznania, że niektóre wiadomości są nieważne
Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()
RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )
III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego
PARADYGMATY PROGRAMOWANIA Wykład 3
PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane
Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011
Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu
tablica: dane_liczbowe
TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica
Wstęp do informatyki Ćwiczenia. Piotr Fulmański
Wstęp do informatyki Ćwiczenia Piotr Fulmański Piotr Fulmański 1 e-mail 1: fulmanp@math.uni.lodz.pl Wydział Matematyki i Informatyki, Uniwersytet Łódzki Banacha 22, 90-238, Łódź Polska Data ostaniej modyfikacji:
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:
Tablice Tablice jednowymiarowe Jeżeli nasz zestaw danych składa się z wielu drobnych elementów tego samego rodzaju, jego najbardziej naturalnym ekwiwalentem w programowaniu będzie tablica. Tablica (ang.
Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady
Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy
Funkcje. Wprowadzenie. Mirosław Ochodek
Funkcje Wprowadzenie Mirosław Ochodek Miroslaw.Ochodek@pwsz.pila.pl Miroslaw.Ochodek@cs.put.poznan.pl Funkcje (i procedury) Problem Zbyt długi ciąg instrukcji sprawia, że kod jest nieczytelny Często w
W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja
Pętle W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. Instrukcja for ma następującą postać: for (w1;w2;w3) instrukcja w1, w2, w3 są wyrażeniami Schemat blokowy
Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.
Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania
Wykład 1. Systemy przekazywania wiadomości z założeniem bezbłędności działania
Mariusz Juszczyk 16 marca 2010 Seminarium badawcze Wykład 1. Systemy przekazywania wiadomości z założeniem bezbłędności działania Wstęp Systemy przekazywania wiadomości wymagają wprowadzenia pewnych podstawowych
Podstawy Informatyki Elementarne podzespoły komputera
Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Reprezentacja informacji Podstawowe bramki logiczne 2 Przerzutniki Przerzutnik SR Rejestry Liczniki 3 Magistrala Sygnały
Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.
Lista 1 Utworzenie tablicy jest równoznaczne z alokacją pamięci na elementy tablicy (utworzeniem dynamicznej tablicy). W zadaniach należy pamiętać o zwolnieniu zasobów przydzielonych na stercie. Zabronione