Modelowanie zagadnień technicznych SKRYPT. Siergiej Fialko

Wielkość: px
Rozpocząć pokaz od strony:

Download "Modelowanie zagadnień technicznych SKRYPT. Siergiej Fialko"

Transkrypt

1 Modelownie zgdnień technicznych SKRYPT Siergiej Filko Wydził Fizyki, Mtemtyki i Informtyki Politechniki Krkowskiej Krków

2 Siergiej Filko Modelownie zgdnień technicznych. Niniejszy kurs jest poświęcony typowym problemom orz podstwowym kierunkom ich rozwiązywni, pojwijącym się przed progrmistmi przy oprcowywniu inżyniersko-technicznych systemów komputerowych. W chrkterze przykłdów rozptrzone zostły typowe lgorytmy lgebry liniowej: obliczeni iloczynu sklrnego dwóch wektorów, mnożenie mcierzy przez wektor, mcierzy przez mcierz, rozwiązywnie ukłdów równń liniowych lgebricznych z mcierzmi gęstymi orz rzdkimi symetrycznymi przy zstosowniu metod bezpośrednich. Szczególną uwgą zostły objęte trzy kierunki: osiągnięcie wysokiej wydjności n kżdym z procesorów, osobliwości zrównolegleni obliczeń n wielojądrowych komputerch PC orz podstwowe sposoby prcy z mcierzmi rzdkimi. Kurs jest przeznczony dl studentów kierunków technicznych, tkich jk informtyk stosown i mtemtyk obliczeniow, może też być pożyteczny dl deweloperów oprogrmowni, użytkowników progrmów orz prgnących głębiej zrozumieć zsdy prcy nowoczesnych systemów komputerowych z dziedziny obliczeń technicznych.

3 Spis Treści. Cele i zdni kursu 5.. Podstwowe cechy komputerów wielordzeniowych. 9.. Potokowe przetwrznie dnych techniki oprogrmowni..3. Pobiernie dnych z wyprzedzeniem Struktur pmięci komputer. Cche konflikty.. Osiągnięcie wysokiej wydjności lgorytmów obliczeniowych 7 n jednym procesorze.. Oszcownie wydjności podstwowych lgorytmów 7 lgebry liniowej.... Podstwowe złożeni i modele pmięci Algorytm y = +y Algorytm y = y+a Algorytm C = C + A B Algorytm klsyczny (niwny) Usunięcie skoków dnych przy odczytywniu 34 elementów mcierzy B Podził mcierzy n bloki blokownie 35 pmięci podręcznej Blokownie rejestrów Wektoryzownie obliczeń użycie rejestrów 43 XMM. Techniki oprogrmowni SSE, SSE Podził mcierzy n bloki, pkownie dnych 46 według Intel Mth Kernel Librry, mikrojądro... Rozwiązywnie ukłdów równń liniowych 5 lgebricznych dl mcierzy rzdkich symetrycznych.... Metody Guss i Choleskiego Blokow metod Choleskiego Elementy oprogrmowni równoległego w rchitekturze SMP 6 n pltformie Windows NT 3.. Tworzenie procesów i wątków. Sekcje krytyczne, 6 zdrzeni i sygnły. 3.. Wielowątkowość, prwo Amdhl', zrównowżenie 7 obciążeni procesorów, zirnistość Bezpieczne równoległe lokownie pmięci, technik TLS. Osobliwości prcy z pmięcią podręczną. Zmienne 8 3

4 loklne i globlne Algorytm dot = T y Wyniki testów typowych lgorytmów n komputerch 9 wielordzeniowych PC Obliczenie dopełnieni Schur przy zrównolegleniu n 96 podstwie OpenMP. Mikrojądro dl prcy z rejestrmi XMM, pkownie dnych Jeśli Pństw komputer m kilk rdzeni Mcierzy rzdkie symetryczne 4.. Podstwowe pojęci. Grf przyległości. Zbiór przyległy. Struktur poziomów z korzeniem w wierzchołku peryferyjnym. Formty skompresowne. 4.. Wpływ uporządkowni n skuteczność rozwiązni ukłdów równń liniowych lgebricznych metodmi bezpośrednimi Podstwowe lgorytmy uporządkowni. Metod 6 włożonych przekrojów i lgorytm minimlnego stopni. Algorytmy hybrydowe, METIS. 5. Rozwiązywnie ukłdów równń liniowych lgebricznych z 8 mcierzmi rzdkimi symetrycznymi metodmi bezpośrednimi 5.. Solwer skyline Solwer frontlny Solwer domin decomposition Dekompozycj Choleskiego looking-left Dekompozycj Choleskiego looking-right Solwer wielofrontlny Blokow wielofrontln metod podkonstrukcji PARDISO PARFES 57 Litertur 73 Złączniki 77 Złącznik. Kod progrmu MemTest_ 77 Złącznik. Kod progrmu DGEMM 989 (J. Dongrr) 8 Złącznik 3. Kod progrmu MultThreds 83 Złącznik 4. Kod progrmu dot_prod_tbb 85 4

5 . Cele i zdni kursu Nzw modelownie zgdnień technicznych obejmuje wiele pojęć o szerokim znczeniu. W obrębie tego kursu główną uwgę udzielono osobliwościom modelowni komputerowego zgdnień technicznych, czyli spektom informtycznym, które powstją przy tworzeniu systemów obliczeniowych w zgdnienich technicznych. Celem tego kursu jest zpoznnie się z technikmi i metodmi oprcowni lgorytmów, często spotyknych przy modelowniu zgdnień technicznych, przy czym głównie zwrócono uwgę n podstwy tworzeni tkich metod n wielordzeniowych komputerch PC. W postci typowych przykłdów występują klsyczne zgdnieni lgebry liniowej: obliczenie iloczynu sklrnego dwóch wektorów, mnożenie mcierzy przez wektor, mnożenie mcierzy przez mcierz, rozwiązywnie ukłdów równń liniowych lgebricznych z mcierzmi symetrycznymi gęstymi i rzdkimi przy zstosowniu współczesnych metod bezpośrednich. Problemy, wynikjące przy rozwżniu podnych zdń, są często spotykne w innych brnżch zgdnień technicznych. Dltego osiągnięte umiejętności orz techniki progrmowni zncznie przekrczją grnicy rozwżnych tu problemów. Kurs obejmuje: Osiągnięcie wysokiej wydjności typowych lgorytmów obliczeniowych zgdnień technicznych przy progrmowniu sekwencyjnym orz wielowątkowym dl komputerów wielordzeniowych (SMP symmetricl multiprocessing). Typowe techniki progrmowni wielowątkowego dl lgorytmów obliczeniowych. Algorytmy dl mcierzy rzdkich: formty skompresowne, uporządkownie w celu zmniejszeni ilości zpełnień przy fktoryzcji, sme solwery metody fktoryzcji. Kurs zwier elementy mtemtyki lgebry liniowej, lgebry mcierzy, teorii grfów, metod numerycznych jk również wymg wiedzy z podstw oprogrmowni w języku C, C++, systemów opercyjnych i oprogrmowni wielowątkowego. Przy przedstwiniu twierdzeń mtemtycznych, położeń i wniosków uwg jest głównie skupion nie n ścisłości dowodów, jk jest to przyjęte w kursch, ukierunkownych n mtemtyków, le n lgorytmch i włściwościch, niezbędnych dl relizcji komputerowej. Przy pisniu kursu utor kierowł się doświdczeniem, nbytym w firmch informtycznych RoboBAT ( i SCAD Soft 5

6 ( w których oprcowywł oprogrmownie z dziedziny metody elementów skończonych i innych metod obliczeniowych. Modelownie zgdnień technicznych znjduje się n przecięciu metod numerycznych i informtyki. Często zdni techniczne doprowdzją do rozwiązywni zdń numerycznych dużego rozmiru powstją ukłdy równń liniowych i nieliniowych lgebricznych, zgdnieni wrtości włsnych, obliczeni numeryczne cłek, cłkownie zgdnień Cuchy itd. Ilość współczesnych modeli różnorodnych obiektów technicznych może wynosić od kilkset tysięcy do kilk milionów równń. Jest jedn z cech tego typu zdń, przy czym użytkownik njczęściej prgnie rozwiązywć te zdni n komputerch typu PC. Typowe przykłdy tkich zdń widoki i modele różnych konstrukcji są przedstwione n rys...5. Rys.. Budynki wielopiętrowe 6

7 Rys.. Konstrukcji inżynierskie Rys..3 Model MES stdionu w Wilnie (6 98 równń nieliniowych lgebricznych) 7

8 Rys..4 Model MES terminlu lotnisk w Wilnie ( równń nieliniowych lgebricznych) Rys..5 Model budynku wielopiętrowego z bloków betonowych ( równń liniowych lgebricznych) 8

9 Przy oprcowniu oprogrmowni, przeznczonego dl modelowni zgdnień technicznych, zwrócimy uwgę n njwżniejsze momenty: Zstosownie niezwodnych i optymlnych metod i lgorytmów mtemtycznych. Skuteczn prc ze wszystkimi poziommi hierrchii pmięci pmięciom główną, pmięciom podręczną, rejestrmi procesor. Zrównoleglenie opercji n różnych etpch relizcji lgorytmów.. Podstwowe cechy komputerów wielordzeniowych W tym kursie dl porównni wydjności różnych lgorytmów będziemy używć mirę wydjności FLOPS (Floting Point Opertions Per Second) ilość opercji zmiennoprzecinkowych wykonnych z sekundę. Jest to nturln mir wydjności dl lgorytmów, które powstją w zgdnienich nukowotechnicznych, gdzie dominntowymi są opercji rytmetyczne zmiennoprzecinkowe. Przecież t mir nie jest przydtn do oceny wydjności innych rodzjów lgorytmów kompiltorów, bz dnych, itp. Dl lgorytmów obliczeniowych, wykonnych n współczesnych komputerch PC, łtwo stosowć MFLOPS и GFLOPS odpowiednio 6 FLOPS orz 9 FLOPS. Różne opercje zmiennoprzecinkowe mją różną trwłość. Opercje zmiennoprzecinkowe mogą być szybkie i wolne. Przybliżony stosunek trwłości różnych opercji zmiennoprzecinkowych jest podny w tb.. Przybliżony stosunek trwłości opercji zmiennoprzecinkowych dodwnie, odejmownie, porównnie, mnożenie dzielenie, obliczenie pierwistk kwdrtowego 4 eksponent, sinus,... 8 Tbel. Będziemy rozwżć tylko komputery z pmięcią wspólną. Jest to tk rchitektur systemów komputerowych równoległych kiedy kilk jednkowych procesorów współprcują z tą smą pmięcią główną (rys..6). Tką rchitekturę nzywją UMA Uniform Memory Access. 9

10 CPU CPU CPU CPU cche cche System Bus cche cche RAM Rys..6 Wieloprocesorowe systemy z jednorodnym dostępem do pmięci UMA (Uniform Memory Access) Kżdy z procesorów (CPU) może mieć swoją włsną pmięć podręczną (cche) i łączą się z pmięcią główną (RAM) poprzez mgistrle (system bus). Współczesne komputery PC wielordzeniowe nleżą do tkiej rchitektury, poniewż kilk tkich smych procesorów (rdzeni) współprcują z jedną wspólną pmięcią główną i są sterowne jednym egzemplrzem systemu opercyjnego. Tk rchitektur dostł nzwę SMP (symmetricl multiprocessing). Procesory mją dostęp równoprwny (kżdy z procesorów nie m żdnej przewgi nd innymi) i równoznczny (czs dostępu do dowolnej części pmięci jest tki sm). Przy tym związek między procesmi i synchronizcj są proste, oprogrmownie mniej skomplikowne, niż w wypdku rchitektury z pmięcią rozproszoną. Jednk tk rchitektur m podstwowe ogrniczeni n ilość procesorów krytyczn jest przepustowość mgistrli. N dzień dzisiejszy corz więcej zdń technicznych mogą być rozwiązne n komputerch klsy PC, moc obliczeniow których ciągłe rośnie. Tkie komputery są tnie, i większość użytkowników z młych i średnich biur projektowych preferuje używć włśnie tkie komputery i brdzo niechętnie podejmują decyzję o przejściu n klstery, sieci komputerowe i potężne stcji robocze. Doświdczony projektnt njczęściej znjdzie sposób zmniejszyć rozmir zdni obliczeniowego tk, by to zdnie zmieściło się w komputerze klsy PC. Komputery klsy PC mją ogrniczony rozmir pmięci głównej i stosunkowo nie wysoką przepustowość mgistrli. T cech często wymg specjlnych podejść przy tworzeniu lgorytmów i oprogrmowni. Uwg tego kursu zostł skupion głównie n podstwch tworzeni oprogrmowni dl opisnej klsy komputerów.

11 . Potokowe przetwrznie dnych techniki oprogrmowni. W nowoczesnych mikroprocesorch szeroko stosuje się potokowe przetwrznie dnych. Przy tym cły proces jest podzielony n nieduże części stopnie przebiegu, kżd z których jest relizown przez poszczególne urządzeni fizyczne. Obróbkę kżdej mszynowej komendy możn rozłożyć n kilk stopni etpów. Przy tym dne są przekzywne od poprzedniego etpu do nstępnego. N przykłd [Шагин, 3], mmy 5 etpów wykonni opercji trwłością 5, 5, 6, 5 i 5 ns odpowiednio (rys..7), 5 ns nkłd n orgnizcje przetwrzni potokowego. Średni czs wykonni poleceni przy przetwrzniu sekwencyjnym wynosi 6 ns, przy przetwrzni potokowym (t sr pot ) trwłości njdłuższego tktu plus nkłd n przetwrznie potokowe 6+5 = 65 ns [t sr pot = (mksymln trwłość etpu)*(ilość etpów)/(ilość potoków) = 65*5/5 = 65 ns]. Przyspieszenie przy przetwrzni potokowym w stosunku do przetwrzni sekwencyjnego wynosi 6/65 = 4 rzy. Struktur poleceni i ilość etpów zleżą od rodzju poleceni. W podnym przykłdzie kżde polecenie skłd się z pięciu etpów. Mogą to być IF obliczenie dresu poleceni, pobrnie poleceni, ID dekodownie poleceni, OF obliczenie dresu operndu, pobrnie operndu, EX wykonnie opercji n operndch, WB zpis wyniku. Przy przetwrzniu potokowym pierwszy potok wykonuje pierwszy etp pierwszego poleceni (IF). Dlej dziłją dw potoki. Pierwszy IF dl drugiego rozkzu, drugi ID dl pierwszego poleceni. Dlej pierwszy potok IF dl trzeciego poleceni, drugi ID dl drugiego poleceni i trzeci OF dl pierwszego poleceni. I tk dlej. Kżdy potok przetwrz tylko swój etp i jest wykonywny tylko odpowiednią częścią sprzętu. Po wciągnięciu wszystkich potoków w dowolnym momencie czsu jednocześnie dziłją pięć potoków, w skutek czego i powstje zrównoleglenie przy potokowym przetwrzni dnych. W odróżnieniu od wielowątkowości tkie zrównoleglenie nie wymg dużej prcy od progrmisty i dltego jest brdzo wygodne. Typowymi frgmentmi kodu, gdzie przetwrznie potokowe jest brdzo skuteczne są długie pętle for, while, do while, w których są wykonne duże ciągi dokłdnie tkich smych instrukcji.

12 Sekwencyjne przetwrznie rozkzów ns 6 ns 6 ns rozkz rozkz rozkz 3 Potokowe przetwrznie rozkzów ns rozkz rozkz rozkz 3 rozkz rozkz potoki Rys..7 Sekwencyjne i potokowe przetwrznie dnych. Czs jłowy dl kżdego etpu orz czs wykorzystny n wyrównnie trwłości etpów jest oznczony kolorem szrym W pewnych sytucjch mogą powstwć zburzeni potokowego przetwrzni. Rozwżmy kilk typowych przykłdów. Przykłd. for(i=; i<n; i++) A[i] =.* A[i];

13 Potok, pobierjący wrtość operndu A[ ] (etp OF) n itercji i+, będzie wstrzymny poniewż dres operndu nie jest znny dopóki licznik itercji pętli i nie pozostnie inkrementowny. Rozwiąznie: for(i=; i<n; i+=) A[i] =.*A[i]; A[i+] =.*A[i+]; Tk technik otrzymł nzwę rozwijni pętli. Instrukcji w pętli są niezleżne dltego jeden potok procesor jest w stnie pobierć dres operndu drugiej instrukcji nie oczekując n zkończenie wykonni przez inne potoki pierwszej instrukcji, czyli potoki są w stnie dziłć równoległe. Rozwijnie pętli wspier potokowe przetwrznie dnych, usuwjąc zburzeni. Współczesne kompiltory C/C++ w wersji relese przy ustwieniu flgi optymlizcji /O (optymlizcj z celem podniesieni wydjności) smodzielnie kilkkrotnie rozwijją pętle. Jest to wykonne dl stndrdowych frgmentów kodu. Dl kodów skomplikownych możliw tk sytucj że progrmist ręcznie będzie rozwijł pętle. W szczególności dotyczy to technik SSE, SSE3 [SSE]. Przykłd [Касперский, 3]. while(net = p[net]) //ciło pętli net++; Dopóki nie zostnie wykonn osttni lini instrukcji pętli, dotąd procesor nie będzie znł zmiennej net i nie jest w stnie użyć prefetch pobiernie dnych z wyprzedzeniem. Czs wykonni tego kodu jest wyznczony ltentością ukłdu pmięci odcinkiem czsu od wystwieni przez procesor zpotrzebowni n chipset do umieszczeni odpowiednich dnych w CPU. Rozwiąznie: while(net = p[net++]) //ciło pętli Procesor wysył do chipsetu zpotrzebownie n łdownie słow p[net] i ntychmist inkrementuje net. Adres nstępnego słow już jest znny. Dlej 3

14 procesor wysył kolejne zpotrzebownie, nie oczekując n opercję w pętli. Dopóki procesor liczy, chipset będzie dostrczł nową porcje dnych dl kolejnej itercji pętli. Czs łdowni do rejestru N zleżnych słów wynosi T = N (T ch+t mem), gdzie T ch ltentność chipset, T mem ltentność pmięci. Czs łdowni N niezleżnych słów wynosi T = N/C+T ch+t mem, gdzie C przepustowość ukłdu pmięci objętość dnych, odczytywnych z pmięci do CPU z jednostkę czsu. Przykłd 3 [Касперский, 3]. for(i=; i<n; i++) A[i] = A[i]+B[i]; //line C[i] = A[i]+.; //line A[i] = D[i]+.; //line 3 Lini kodu 3 nie może być wykonn dopóki nie będzie zkończon lini. Inczej A[i] będzie zmodyfikowne wcześniej od jego użyci w linii. Rozwiąznie: register double rrr; for(i=; i<n; i++) A[i] = A[i]+B[i]; //line rrr = A[i]; C[i] = rrr +.; //line A[i] = D[i]+.; //line 3 Rozwżmy test, kod którego jest umieszczony w złączniku. Rozwiązujemy zdnie dot = T, gdzie wektor o rozmirze N. Rozmir N jest utomtycznie zmieniony tk żeby być wielokrotnym w stosunku do rozmiru pmięci podręcznej L, przedstwionej w ilości słów double. Dl komputer, n którym to zdnie było testowne, rozmir L wynosił 3 KB lbo 496 słów typu double. Progrm reprezentuje kilk różnych metod. Pierwsz metod (rys..8) w pełni odpowid podejściu klsycznemu. Tkie podejści we współczesnej literturze otrzymło nzwę metod niwnych, poniewż kod komputerowy odpowid lgorytmu mtemtycznemu. Tkie metody nie biorą pod uwgę szczególne cechy struktury pmięci komputer i dltego często demonstrują brdzo niską wydjność. 4

15 t_s = GetTickCount(); for(it=; it<ntimes; it++) dot =.; for(i=; i<n; i++) dot += X[i]*X[i]; t_elps = (double)(gettickcount()-t_s); Rys..8 Metod klsyczn (niwn) Współczesne komputery brdzo szybko obliczją tkie zdni. Dl tego żeby zpewnić poprwność pomiru czsu obliczeń, trzeb zwiększyć trwłość wykonni tego zdni powtrzmy ntimes rzy jego wykonnie. Funkcj pltformy Win3 GetTickCount() zwrc czs w ms od czsu wystrtowni systemu opercyjnego [MSDN], t_elps czs wykonni tego frgmentu kodu. Drug i trzeci metody używją czterokrotne i ośmiokrotne rozwijnie pętli (rys..9.). for(it=; it<ntimes; it++) dot =.; for(i=; i<n; i+=4) dot += X[i]*X[i]+X[i+]*X[i+]+ X[i+]*X[i+]+X[i+3]*X[i+3]; Rys..9 Czterokrotne rozwijnie pętli for(it=; it<ntimes; it++) dot =.; for(i=; i<n; i+=8) dot += X[i]*X[i]+X[i+]*X[i+]+X[i+]*X[i+]+ X[i+3]*X[i+3]+X[i+4]*X[i+4]+X[i+5]*X[i+5]+ X[i+6]*X[i+6]+X[i+7]*X[i+7]; Rys.. Ośmiokrotne rozwijnie pętli 5

16 Czwrt metod stosuje ośmiokrotne rozwijnie pętli orz pobiernie dnych z wyprzedzeniem (prefetch rys..) for(it=; it<ntimes; it++) dot =.; for(i=; i<n; i+=8) _mm_prefetch((const chr *)(&X[i+8]), _MM_HINT_T); dot += X[i]*X[i]+X[i+]*X[i+]+X[i+]*X[i+]+ X[i+3]*X[i+3]+X[i+4]*X[i+4]+X[i+5]*X[i+5]+ X[i+6]*X[i+6]+X[i+7]*X[i+7]; Rys.. Ośmiokrotne rozwijnie pętli orz wykonnie prefetch'u W tym kodzie instrukcj prefetch(...) jest poleceniem dl ukłdu pmięci o pobierniu 8 słów double, które będą potrzebne przy nstępnej itercji pętli, i umieszczeniu ich w pmięci podręcznej procesor. Podczs gdy procesor wykonuje instrukcje itercji bieżącej, ukłd pmięci niezleżnie przygotowuje dne dl nstępnej itercji. Osttni metod używ 8-bitowe XMM rejestry, jkie mogą zmieścić słow double i z jeden cykl procesor wykonć dw mnożeni lub dw dodwni. Dl słów typu flot (integer) w XMM rejestrze możn zmieścić 4 słow i wykonć w jednym cyklu procesor odpowiednio 4 mnożeni lub 4 dodwni. Współczesne procesory komputerów klsy PC mją 8 dostępnych rejestrów XMM n pltformie 3-bitowej (i3) orz 6 dostępnych XMM rejestrów n pltformie 64-bitowej ( 64). N podstwie techniki SSE [SSE] w językch C/C++ istnieje możliwość progrmowni n rejestrch XMM, przy czym kod jest bliski do język ssembler. Schemtyczne opercje mnożeni i dodwni, wykonne n rejestrch XMM, są podne n rys... Liczby, b orz c, d są łdowne do rejestrów XMM, XMM, przy czym, c znjdują się w górnej części kżdego rejestru, ntomist b, d w dolnej. Wynik będzie umieszczony w rejestrze XMM. Odpowiedni frgment kodu jest przedstwiony n rys..3. 6

17 b c d XMM b XMM c d XMM XMM = _mm _mul_pd(xmm, XMM) + c b+ d XMM b XMM + c d XMM XMM = _mm _dd_pd(xmm, XMM) Rys.. Opercje mnożeni i dodwni n rejestrch XMM dl liczb typu double Deklrujemy pięć zmiennych typu m8d o nzwch c c4, sum, jkie ndją możliwość stosowni instrukcji SSE, SSE3. Żeby udostępnić prototypy instrukcji SSE, SSE3, trzeb dołożyć ngłówek #include <emmintrin.h>. Dyrektyw declspec(lign(6)) ozncz że tblic res[] będzie wyrównn w grnicch 6 bjtów. Jest to koniecznie dl instrukcji wyłdowni dnych z XMM rejestru _mm_store_pd. Pierwsz pętle obejmuje ilość powtrzni lgorytmu. Przed uruchomieniem drugiej pętli wyzerowujemy rejestr sum instrukcją _mm_setzero_pd. Wykonujemy prefetch z krokiem 8 słów typu double i łdujemy rejestry c c4 instrukcją _mm_lod_pd. Kżd tk instrukcj łduje w rejestr XMM dw sąsiednie elementy tblicy X. Dltego pmięć dl tblicy X jest lokown funkcją _ligned_mlloc przy wyrównniu n grnice 6 bjtów (złcznik ). Zwrtość rejestru c mnożymy przez siebie i wynik umieszczmy do rejestru c. Do rejestru sum dodjemy zwrtość rejestru c. I tk dlej. Po zkończeniu wykonni pętli wewnętrznej w górnej części rejestru sum znjduje się sum kwdrtów przystych elementów tblicy X res [] =, w dolnej N / i= i 7

18 sum kwdrtów nieprzystych elementów res [] = rejestr sum do tblicy res i dodjemy te elementy. N / i= i. Wyłdowujemy m8d c, c, c3, c4, sum; declspec(lign(6)) double res[]; t_s = GetTickCount(); //number of double words in cche line 64B is 8 for(it=; it<ntimes; it++) sum = _mm_setzero_pd(); for(i=; i<n; i+=8) _mm_prefetch((const chr *)(&X[i+8]), _MM_HINT_T); c = _mm_lod_pd(&x[i]); //lod X[i], X[i+] to c c = _mm_lod_pd(&x[i+]);//lod X[i+],X[i+3] to c c3 = _mm_lod_pd(&x[i+4]);//lod X[i+4],X[i+5] to c3 c4 = _mm_lod_pd(&x[i+6]);//lod X[i+6],X[i+7] to c3 c = _mm_mul_pd(c, c); //c <- c*c sum = _mm_dd_pd(sum, c);//sum = sum + c*c c = _mm_mul_pd(c, c); //c <- c*c sum = _mm_dd_pd(sum, c);//sum = sum + c*c c3 = _mm_mul_pd(c3, c3); //c3 <- c3*c3 sum = _mm_dd_pd(sum, c3);//sum = sum + c3*c3 c4 = _mm_mul_pd(c4, c4); //c4 <- c4*c4 sum = _mm_dd_pd(sum, c4);//sum = sum + c4*c4 _mm_store_pd (res, sum); //unlod res <- sum dot = res[]+res[]; //dot = res[]+res[]; t_elps = (double)(gettickcount()-t_s); Rys..3 Użycie rejestrów XMM dl lgorytmu dot = T Wyniki są przedstwione n rys..4. Testy są wykonne n komputerze z procesorem Intel Core Qud CPU GHz, cche L: 4х3 KB, L: 496 KB, RAM DDR MHz, 8 GB, chipset Intel P35/G33/G3, OS Windows Vist TM Business (64-bit), Service Pck. 8

19 Rys..4 Wyniki testowni zdni dot = T n komputerze z procesorem Intel Core Qud CPU GHz.3 Pobiernie dnych z wyprzedzeniem Pobiernie dnych z wyprzedzeniem (prefetch) jest wykonywny z celą ukryć zwłokę (ltentność) ukłdu pmięci [Grm A., Gupt A., Krypis G., Kumr V., 3], [Касперский, 3]. Typowy schemt bez prefetch u: for(i=; i<n; i++) dot += X[i]*X[i]; Tki progrm dził tk: przy i = procesor wystwi n chipset zpotrzebownie n słowo X[]. Chipset umieszcz to w kolejkę zpotrzebowń. Jk tylko oprcownie tej kolejki dojdzie do nszego zpotrzebowni, podne słowo będzie odczytne z pmięci głównej i z pomocą mgistrli przesunięte do pmięci podręcznej L. Procesor w tym czsie wykonuje puste cykle. Odcinek czsu licząc od momentu wystwieni zpotrzebowni n chipset do umieszczeni dnych w pmięci podręcznej jest ltentnością ukłdu pmięć chipset (T ch+t mem). N nstępnej itercji i = i wszystko będzie powtórzone dokłdnie tk, jk dl poprzedniej itercji. 9

20 Czs wykonni tkiego lgorytmu : T = N (T ch+t mem)+ N t ops N (T ch+t mem), gdzie t ops czs wykonni jednego mnożeni lub dodwni, N t ops << N (T ch+t mem). Typowy schemt pętli z prefetch em: for(i=; i<n; i+=8) //inicjujemy łdownie nstępnej linii cche dnych z //dresem &X[i+8] do cche L. Przy niemożliwości //łdowni cche L będzie łdowny cche L. //Zkłdmy, że rozmir cche linii dl podnego //sprzętu wynosi 64 B - 8 słów double. Ten kod jest //zleżny od sprzętu. _mm_prefetch((const chr *)(&X[i+8]), _MM_HINT_T); dot += X[i]*X[i]+X[i+]*X[i+] + +X[i+7]*X[i+7]; Terz oczekiwnie procesor w skutek ltentności ukłdu pmięci odbyw się tylko przy i =. Dlej procesor i ukłd pmięci dziłją równoległe. Przyczyną hmowni obliczeń dl tkiego kodu jest ogrniczon przepustowość mgistrli, nie ltentność ukłdu pmięci. Czs wykonni podnego lgorytmu wynosi T = N/C + T ch+t mem + N t ops/k N/C, gdzie C przepustowość ukłdu pmięci, k przyspieszenie obliczeń w skutek usunięci zburzeń potokowego przetwrzni dnych przy rozwijniu pętli. Rozróżniją prefetch hrdwrowy i softwrowy [Prefetch, ]. Prefetch hrdwrowy dostrcz 64 bjtów (rozmir cche-linii) z jeden rz. Kiedy prefetch hrdwrowy wyzncz dostęp do linii cche l, z którą nstępuje lini cche l+, on zcznie inicjownie prefetch'u do kolejnej linii cche. Prefetch hrdwrowy zwier szereg ogrniczeń. On nie może przecinć grnicy stron pmięci, wypełni tylko linie cche L, nie może wyznczyć dostęp do dnych, które są pobierne z dużymi skokmi. Tę ogrniczeni mogą być pokonne poprzez użycie prefetch'u softwrowego, jki może wypełnić linii cche L lub L (L3), jeśli poziom cche L już jest wypełniony. Może być wykonny tk zwny non-temporl prefetch, który wypełni cche L, wyciśnięcie tych dnych jest wykonywne do pmięci głównej, nie do cche'u niskiego poziomu. O wyborze typu prefetch'u softwrowego decyduje drygi rgument instrukcji prefetch.

21 .4 Struktur pmięci komputer. Cche konflikty Njczęściej hierrchie pmięci współczesnego komputer jest przedstwion w postci pirmidy (rys..5, [Demmel J. W., 997]). Rys..5 Hierrchi pmięci współczesnego komputer Njszybsz pmięć (njdroższ, m niewielką objętość) jest umieszczon z góry (wierzchołek pirmidy), njwolniejsz (tni, m stosownie dużą objętość) jest z dołu. Przykłdowe rozmiry i czsy dostępu dl różnych rodzjów pmięci są podne w tbeli.. Przykłdowe rozmiry i czsy dostępu dl różnych rodzjów pmięci Typ pmięci rozmir Czs dostępu, ns rejestry Kilkset B < ns podręczn (L) kilknście KB Kilk ns podręczn (L - L3) Kilk MB Kilknście ns główn Kilkset MB sto kilkdziesiąt ns Tbel..

22 Gdyby pmięć komputer byłby tk jednorodn i tk smo szybk, jk rejestry procesor, to znczn część mteriłu, przedstwinego w dnym oprcowniu, utrciłby sens. Dodtkowo koszt tkiego hipotetycznego komputer byłby wręcz niebotyczny. Oprócz tego, szybk pmięć (rejestry, pmięć podręczn) jest zgromdzon n elementch półprzewodników, które z kolei dość intensywnie wydzielją ciepło. Dltego problem odprowdzni ciepł jest obecnie jedną z njmocniejszych przeszkód, stojących n drodze ku powiększeniu pojemności szybkiej pmięci. Z innej strony, istnienie hierrchicznej struktury pmięci, której poziomy zncznie różnią się szybkością dostępu do dnych, rodzi cły szereg problemów przy przejściu z jednego poziomu n inny. Pierwsz część nszego oprcowni będzie poświęcon włśnie tym problemom. W rmch dnego kursu, z wyjątkiem osttniego rozdziłu, będą rozptrzone zdni, które mieszczą się tylko w pmięci głównej (RAM) komputer. Optymlne wykorzystnie pmięci podręcznej jest brdzo wżne dl wydjności progrmów. W zleżności od typu procesor pmięć podręczn skłd się z linii o kilku słów o rozmirze 3B, 64B, 8B. Dne z pmięci głównej będą umieszczone w pmięci podręcznej przed umieszczeniem w rejestrch procesor. Mówimy o odwzorowniu bloków pmięci głównej w linie pmięci podręcznej (cche-linie). Przy czytniu dnych (słowo, bjt) procesor njpierw sprwdz stn swojej pmięci podręcznej. Jeśli te dne są w pmięci podręcznej (nzwiemy tą sytucje red hit trfienie), oni będą umieszczone w rejestry procesor. Jeśli tych dnych (słow, bjt) niem w pmięci podręcznej (red miss chybienie), będzie przełdown cł lini pmięci podręcznej [Касперский, 3]. Przy pobrniu tych dnych (bjt, słow) z pmięci głównej będą pobrne nie tylko to słowo, bjt, i bjty sąsiednie tk, żeby wypełnić cłą linie pmięci podręcznej. Dne, które będą umieszczone w cche-linie, muszą być wyrównne po grnicch, wielokrotnych 3B, 64B, 8B odpowiednio. Ideologi cche-linii poleg n tym, że zdni njczęściej prcują ze zbiorem sąsiednich słów (bjtów), więc przy odczycie tych słów (bjtów) często wynik stn red hit, i procesor pobier te dne w rejestry z cche-linii, nie przez wolny knł mgistrl pmięć główn. Przecież cche-linii istotnie komplikują odnowienie pmięci w środowisku wieloprocesorowym z pmięcią wspólną Rozwżmy tki przykłd [Richter, 997]: Procesor P odczytuje słowo, również i słow sąsiedni w swój cche (rys..6). Procesor P odczytuje słowo, również i słow sąsiedni w swój cche, przy czym słowo procesor P w skutek wyrównni po grnicch, wielokrotnych rozmiry cche-linii, znjduje się w cche-linii procesor P też (rys..7).

23 P P Cche-lini l Słowo, z którym prcuje procesor P Słowo, z którym prcuje procesor P Dne, mpowne do cche-linii l Rys..6 Procesor P odczytuje słowo, również i słow sąsiedni w swój cche P P Cche-lini l Cche-lini l Słowo, z którym prcuje procesor P Słowo, z którym prcuje procesor P Dne, mpowne do cche-linii l Rys..7 Procesor P odczytuje słowo orz słow sąsidujące do swojego cche'u, przy tym słowo procesor P 3

24 Procesor P modyfikuje słowo i umieszcz ten wynik do swojego cche'u. Wrtość tego słow w pmięci głównej n rzie pozostje bez zmin (rys..8). Procesor P nic nie wie o tym, że zwrtość słow uległ zminie. Terz wrtość słow zleży od tego, cche którego procesor będzie wyłdowny w pmięć główną później. P P Cche-lini l Cche-lini l Słowo, z którym prcuje procesor P Słowo, z którym prcuje procesor P Dne, mpowne do cche-linii l Rys..8 Procesor P modyfikuje słowo i umieszcz ten wynik do swojego cche'u. Wrtość tego słow w pmięci głównej n rzie pozostje bez zmin Tki scenriusz był by prwdziwą ktstrofą. Producenci sprzętu komputerowego brdzo dobrze o tym wiedzą, i dltego w rzeczywistości komputer nigdy tk nie dził. Dziłnie komputer wygląd nstępująco. Procesor P odczytuje słowo, orz słow sąsidujące do swojego cche'u (rys..6). Procesor P odczytuje słowo, tkże słow sąsidujące do swojego cche'u przy czym słowo procesor P w skutek wyrównni do grnic, wielokrotnych rozmirów cche-linii, też znjduje się w cche-linii procesor P (rys..7). 4

25 Procesor P modyfikuje słowo i umieszcz ten wynik w swoim cche'u (rys..8). Wrtość tego słow w pmięci głównej n rzie pozostje bez zmin, le procesor P orz wszystkie inne procesory, w cche'u, których okzło się słowo, dokonuje snooping śledzeni z stnem słów zmodyfikownych, i zgłszją zwrtość swojego cche jko uniewżnioną (rys..9). P P Cche-lini l Cche-lini l Słowo, z którym prcuje procesor P Słowo, z którym prcuje procesor P Dne, mpowne do cche-linii l Rys..9 Procesor P modyfikuje słowo i umieszcz ten wynik w swoim cche'u. Wrtość tego słow w pmięci głównej n rzie pozostje bez zmin, le procesor P w skutek snooping'u zgłsz zwrtość swojego cche jko uniewżnioną Procesor P wyłduje zwrtość swojego cche do pmięci głównej, procesor P ponownie złdowuje swoją cche-linie (rys..). Terz dne w pmięci głównej i w cche-linich procesorów P, P są spójne (koherentne). Przecież płcą z tą spójność jest ndliczbowe przełdowni cche-linie procesorów P, P. Będziemy nzywć tką sytucje cche-konfliktmi. Okzuje się, że obecność pmięci podręcznej, przeznczonej dl przyspieszeni obliczeń wskutek zmniejszeni ilości odczytów-zpisów bezpośrednich z pmięci głównej (do pmięci głównej), może stć się przyczyną istotnego zmniejszeni wydjności obliczeń, jeśli dne nie będą wyrównne z uwzględnieniem powyżej 5

26 opisnej specyfiki prcy z cche-linimi. Obowiązek, związny z wyrównniem dnych do grnic cche-linii, spoczyw n progrmiście. P P Cche-lini l Cche-lini l Przełdownie cchelinii l Słowo, z którym prcuje procesor P Słowo, z którym prcuje procesor P Dne, mpowne do cche-linii l Rys.. Procesor P wyłduje zwrtość swojego cche do pmięci głównej, procesor P ponownie złdowuje swoją cche-linie. Terz dne w pmięci głównej i w cche-linich procesorów P, P są spójne (koherentne). Dl uniknięci konfliktów w pmięci podręcznej progrmiści zwykłe używją nstępujących zsobów. Rozdzielenie dnych służących tylko dl odczytu od dnych przeznczonych dl odczytu i zpisu lub tylko do zpisu. Przy dnych, które są tylko do odczytu, konflikty w pmięci podręcznej nie wynikją. Użycie pmięci loklnej dl kżdego wątku. Przy tworzeniu wątków system opercyjny tworzy osobny stos kżdego wątku, przy czym stosy różnych wątków utomtycznie będą wyrównne do grnic cche-linii. Dne rozmieszczone w pmięci głównej są wyrównne tk, żeby różne procesory mieli dostęp do różnych dresów pmięci, rozdzielonej przynjmniej grnicą cche-linii. 6

27 . Osiągnięcie wysokiej wydjności lgorytmów obliczeniowych n jednym procesorze. Oszcownie wydjności podstwowych lgorytmów lgebry liniowej Będziemy rozwżć nstępujące lgorytmy lgebry liniowej: Mnożenie wektor przez sklr spy: y = y + α. Mnożenie mcierzy przez wektor: y = y + A. Mnożenie mcierzy przez mcierz: C = C + A B. Njpierw rozwżymy wyniki dziłlności progrmu testowego Mulm, oprcownego przez utor, który wykonuje obliczeni według różnych lgorytmów mnożeni mcierzy przez mcierz. Mcierzy są kwdrtowe o rozmirze N N. Wyniki są przedstwione n rys... Rys.. Wydjność różnych metod mnożeni mcierzy przez mcierz. Komputer z procesorem Intel Core Qud CPU GHz 7

28 Przy tkim smym rozmirze zdni N kżd z prezentownych metod wykonuje dokłdnie tą smą ilość opercji rytmetycznych. Przy tym wydjność tych metod istotnie się różni. Dl dość dużego rozmiru zdni wydjność kżdej metody prktycznie nie zleży od rozmiru zdni N. Pierwszą metodę klsyczną, możn znleźć w dowolnym pordniku mtemtycznym (kolejność umieszczeni pętli i, j, k [Golub, 996]). Drug metod też klsyczn m kolejność pętli i, k, j. Trzeci metod poleg n podzile mcierzy n odnośnie niewielkie bloki kwdrtowe, przy czym w pmięci podręcznej L jednocześnie są umieszczone trzy bloki po jednym z kżdej mcierzy. Będziemy nzywć tą metodę block cche, rozmir bloku oznczymy jko l b. Czwrt metod pozostł wykonn w technice Intel Mth Kernel Librry (Intel MKL) [Goto K, Vn De Geijn R A (8)] biblioteki wysokiej wydjności Intel [Intel MKL, ], przy czym utor oprcowł swoje włsne mikrojądro [Filko S., (9), CT] kod niskiego poziomu, npisny n podstwie technik SSE, SSE3. Będziemy oznczć tą metodę jko block_cche_reg. I osttni metod DGEMM (Double Generl Mtri Multipliction) jest pobrn z Intel MKL w wersji...5. Testy są wykonne n komputerze z procesorem Intel Core Qud CPU GHz, chrkterystyki którego zostły podne wyżej. Powstje pytnie: dl czego przy dokłdnie tkiej smej ilości opercji rytmetycznych, wykonnych kżdą metodą dl podnego rozmiru zdni N, wydjność kżdej z tych metod jest różn? Jk trzeb tworzyć progrmy, zęby prcowć n wysokim poziomie wydjności? Odpowiedzi n te pytni zostł poświęcony dny rozdził.... Podstwowe złożeni i modele pmięci Zczniemy od teoretycznego oszcowni wydjności podstwowych lgorytmów lgebry liniowej. W tym celu wprowdzimy nstępujące złożeni, n podstwie, których będziemy wykonywć tkie oszcowni. Odczyt i zpis (cche RAM) i opercje rytmetyczne są wykonywne w czsie sekwencyjnym (rezygnujemy z możliwości ukłdu pmięci prcowć niezleżnie w czsie od procesor centrlnego CPU). Pmięć podręczn (cche) jest rozdzieloną pomiędzy dnymi w njbrdziej skuteczny sposób (procesor i system opercyjny są intelektulne dne złdowne w cche tk, żeby zminimlizowć ilość trnsferów cche RAM). Komputer m tylko rejestry (njbrdziej szybką pmięć), jeden poziom cche (szybk pmięć rezygnujemy z hierrchicznej struktury pmięci podręcznej) i 8

29 pmięć główną, dostęp do dresów której jest wykonny z szybkością mgistrli [Demmel J. W., 997]. Wszystkie dne są umieszczone w pmięci głównej (RAM). Oznczymy n rozmir zdni, M rozmir pmięci podręcznej, przy czym M << n. Czs wykonni progrmu możn oszcowć: m tbus t = f trith + m tbus = f trith +, (.) f trith gdzie f, m ilość opercji rytmetycznych i ilość trnsferów dnych cche RAM, t rith, t bus trwnie jednej opercji rytmetycznej i przesłni jednego słow dnych. Zkłdmy, że wszystkie opercje rytmetyczne mją jednkowy czs trwni, wrtości t rith, t bus nie zleżą od lgorytmu i kodu progrmu (zleżą tylko od sprzętu), lgorytm dl wykonni dnego zdni z punktu widzeni ustwieni mtemtycznego jest optymlny. Osttnie złożenie ozncz, że dl dnego lgorytmu ilość opercji rytmetycznych f nie d się zmniejszyć. W tki sposób, pozostje jedyn możliwość zmniejszeni czsu obliczeń t zmniejszyć ilość trnsferów dnych m. N podstwie przyjętych złożeń czs obliczeń t w (.) zleży tylko od stosunku m/f. Wprowdźmy wskźnik wydjności f q =. (.) m T chrkterystyk będzie służyć dl oszcowni wydjności lgorytmów. Będziemy przechowywć mcierze w tblicch jednowymirowych. Przy tym mcierz możn umieścić w tką tblicę wiersz po wierszu, lbo kolumn po kolumnie. Będziemy umieszczć mcierze w jednowymirowej tblice wiersz po wierszu , 9 gdzie liczby,, 3,... oznczją kolejność umieszczeni elementów mcierzy w tblice jednowymirowej. 9

30 Umieszczenie wektorów w tblice jednowymirowej jest tkie 3 3. Umieszczenie mcierzy blokowej wiersz po wierszu jest podne dl przykłdu 4 4 i rozmirów bloku :,,,, = : : : : : : : : Algorytm y = y + α Zczniemy od prostego lgorytmu spy mnożeni wektor przez sklr. //odczyt α i umieszczenie w rejestrze for(i=; i<=n; i++) //odczyt y i, i y i = y i + α * i; //zpis y i Z jedną itercje tki lgorytm wykonuje dwie opercje rytmetyczne jedno mnożenie i jedno dodwnie. Ilość itercji jest równ n. Stąd wynik że f = n. Zmienn α nie zleży od indeksu itercji pętli, dltego njskuteczniej umieścić α w rejestrze i utrzymywć tm przy wykonniu itercji żeby uniknąć niepotrzebnych łdowń rejestru przy kżdej itercji. Przy kżdej itercji trzeb jeden rz odczytć y i i jeden rz i. Po wykonniu obliczeń zmodyfikowny element y i powinien być zpisny do pmięci RAM. W trkcie wykonni cłego lgorytmu trzeb wykonć n odczytów i n zpisów. Ilość trnsferów dnych wynosi m = 3n+, wskźnik wydjności jest równy f n q = = =, (.3) m 3n n 3

31 gdzie dl dużych n wrtością /n możn pominąć w stosunku do 3. W tki sposób, wskźnik wydjności dl lgorytmu spy wynosi /3...3 Algorytm y = y+a Rozwżmy terz lgorytm mnożeni mcierzy przez wektor. Digrm lgorytmu przedstwimy w postci j i j i y A, (.4) gdzie liczby,, 3,... oznczją kolejność umieszczeni elementów mcierzy orz wektorów w tblicch jednowymirowych. Kierunki indeksów są oznczone strzłkmi. Algorytm jest podny niżej. for(i=; i<=n; i++) //odczyt y i i umieszczenie w rejestr for(j=; j<=n; j++) //odczyt ij, j y i = y i + ij* j; //zpis y i W tym lgorytmie dl kżdego elementu wektor y wyzncz się iloczyn sklrny dwóch wektorów, pierwszy z których jest wierszem mcierzy A, drugi wektorem. Algorytm powinien wykonć opercji z jedną itercje pętli wewnętrznej, jk zwier n itercji i będzie powtórzon n rzy w pętle zewnętrznej. Ozncz to, że f = n. Element y i nie zleży od indeksu itercji pętli wewnętrznej i dltego może być umieszczony w rejestrze przed uruchomieniem pętli wewnętrznej i jest ciągłe utrzymywny tm ż do zkończeni tej pętli. Wyłdownie do pmięci zmodyfikownej wrtości y i odbyw się po zkończeniu itercji pętli j. W trkcie przebiegu lgorytmu trzeb wykonć n odczytów i n zpisów elementów wektor y. Elementy mcierzy A będą odczytne n rzy (kżdy element jest odczytywny tylko jeden rz) w tej kolejności, w której pozostłe umieszczone w tblice A. 3

32 Elementy wektor będą odczytne tylko jeden rz przy pierwszym wykonniu pętli j, jeśli rozmir pmięci podręcznej zezwl n przechowywnie cłego wektor. Przy tym będzie zrobione n odczytów. Jeśli rozmir zdni jest n tyle duży, że wektor nie jest w stnie zmieścić się w pmięci podręcznej, to jego elementy będą odczytywne ponownie przy kżdym uruchomieniu pętli j. W tkim przypdku będziemy mieli n odczytów dl elementów wektor. Ilość trnsferów dnych dl cłego lgorytmu wynosi m = n +3n, jeśli M n i m = n +n, jeśli M < n. Wskźnik wydjności jest równy q = q = f m f m n = =, n + 3n 3 + n n = =, n + n + n M n M < n (.5) Wydjność drugiego lgorytmu okzuje się wyższ od pierwszego zgdnieni, nie ptrząc n to, że tk w pierwszym zgdnieniu, jk i w drugim wskźnik wydjności nie zleży od rozmiru pmięci podręcznej. Ozncz to, że te lgorytmy są skzne n wykonnie z prędkością wolnej mgistrli, nie szybkiego procesor [Demmel J. W., 997]. Zwiększenie częstotliwości zegr procesor lbo objętości pmięci podręcznej nie powoduje istotnego przyspieszeni obliczeń. Rozwżmy przykłd. Złóżmy, że trwłość trnsferu jednego słow wynosi ~4 cykli procesor. Dl lgorytmu q = ozncz, że n jedną opercję rytmetyczną przypd jeden trnsfer dnych. Jeden cykl procesor zużyje n opercje rytmetyczną. Pozostłe 39 cykli, ntomist są puste, poniewż procesor będzie oczekiwł n dostrczenie dnych. Tu nie zostły uwzględnione prefetch i ten fkt, że łdownie dnych do pmięci podręcznej jest wykonywne nie słowo po słowie, grupmi słów, umieszczonych w cche-linie. Jednkże, to nie zmieni sytucji w cłości...4 Algorytm C = C+A B..4. Algorytm klsyczny (niwny) Istnieje kilk modyfikcji lgorytmu mnożeni mcierzy przez mcierz [Golub, Vn Lon, 996]. Rozwżmy lgorytm przy umieszczeniu kolejności pętli i, j, k. Tki lgorytm jest njczęściej podwny w pordnikch mtemtycznych, jego digrm jest przedstwiony w postci 3

33 j k j = i i k C A B, (.6) gdzie liczby,, 3,... oznczją kolejność umieszczeni elementów mcierzy w tblice jednowymirowej. Kierunki indeksów są oznczone strzłkmi. Algorytm jest zrelizowny dokłdnie tk, jk jest podny w pordnikch n [ n] cij + = ikbkj, i, j, k =, (.7) i dltego dostł nzwę lgorytmu niwnego. Algorytm ten jest podny niżej. for(i=; i<=n; i++) for(j=; j<=n; j++) //odczyt c ij i umieszczenie w rejestrze for(k=; k<=n; k++) //odczyt ik, kj c ij = c ij + ik*b kj ; //zpis c ij Pętl wewnętrzn lgorytmu przedstwi sobą obliczenie iloczynu sklrnego dwóch wektorów, pierwszy z których jest wierszem i mcierzy A, drugi kolumną j mcierzy B. Dl mcierzy kwdrtowych lgorytm wykonuje n 3 opercji rytmetycznych f = n 3. Elementy mcierzy C nie zleżą od indeksu k, dltego element c ij jest łdowny do rejestru przed uruchomieniem pętli wewnętrznej i pozostje tm dotąd, dokąd pętl j nie skończy się. Wyłdownie z rejestru do pmięci odbyw się po zkończeniu pętli. Tkim czynem dl elementów mcierzy C mmy n odczytów i n zpisów. Elementy mcierzy B zleżą od dwóch osttnich indeksów przy kżdym uruchomieniu pętli k elementy mcierzy B powinny być odczytne ponownie mmy n 3 odczytów. 33

34 Elementy mcierzy A będą odczytne n rzy, jeśli objętość pmięci podręcznej jest wystrczjąc dl przechowywni cłego wiersz i mcierzy A. W przeciwnym wypdku przy kżdym uruchomieniu pętli k elementy mcierzy A powinny być odczytne ponownie, czyli ilość odczytów będzie wynosić n 3. Ilość trnsferów dnych RAM cche RAM wynosi m = n 3 +3n, jeśli M n, lbo m = n 3 +n, jeśli M < n. Stąd otrzymujemy wskźnik wydjności: q = q = f m f m = n 3 3 n + 3n 3 n = 3 n + n =, 3 + n =, + n M n M < n. (.8) Ten lgorytm wykzł njmniejszą wydjność (rys..), poniewż elementy mcierzy B w pętli wewnętrznej są pobierne skokowo w tblicy jednowymirowej elementy są umieszczone wiersz po wierszu, lgorytm odczytuje ich kolumn po kolumnie. Powoduje to w przypdku dużych mcierzy brdzo nie skuteczny sposób dziłni ukłdu pmięci i, jko skutek, drstyczne zwolnienie obliczeń...4. Usunięcie skoków dnych przy odczytywniu elementów mcierzy B Przestwimy pomiędzy sobą pętli o indeksch j, k. Zmodyfikowny lgorytm m wygląd for(i=; i<=n; i++) for(k=; k<=n; k++) //odczyt ik i umieszczenie w rejestrze for(j=; j<=n; j++) //odczyt c ij, b kj c ij = c ij + ik*b kj ; //zpis c ij W pętle wewnętrznej lgorytm wykonuje mnożenie wektor przez sklr, poniewż element mcierzy ik nie zleży od indeksu pętli wewnętrznej i dltego 34

35 może być umieszczony w rejestrze przed rozpoczęciem tej pętli i ciągłe tm pozostwć do jej zkończeni. W smej pętle wiersz k mcierzy B jest mnożony poprzez sklr ik, w skutek czego dostjemy poprwiony wiersz i mcierzy C. Algorytm wykonuje n 3 opercji rytmetycznych f = n 3. Ilość trnsferów dnych RAM cche RAM wynosi m = n 3 +3n, jeśli M n, lbo m = 3n 3 +n, jeśli M < n. Uzsdnienie tych wyników pozostwimy czytelnikowi jko ćwiczenie. Stąd dostjemy wskźnik wydjności: q = q = f m f m = n 3 n + 3n 3 3 n = 3 3n + n =, 3 + n =, 3+ 3 n M n M < n. (.9) W użytym przez ns modelu teoretycznym nie było brne pod uwgę istotne zwolnienie prcy lgorytmów przy skokowym pobierniu dnych z pmięci głównej. Dltego wskźnik wydjności dl mcierzy dużych (M < n) okzuje się być nwet gorszym, niż w przypdku poprzednim, chociż w rzeczywistości lgorytm i, k, j dził zncznie szybszej (rys..), poniewż skoki w dnych przy odczycie elementów mcierzy B pozostją usunięte Podził mcierzy n bloki blokownie pmięci podręcznej Podzielimy kżdą z mcierzy A, B, C n bloki kwdrtowe tk żeby w pmięci podręcznej możn by było umieścić po jednym bloku z kżdej mcierzy. Będziemy zkłdć, że rozmir zdni n jest wielokrotny rozmirowi bloku l b. Tkie złożenie nie obniż ogólności wniosków, poniewż nszym celem jest wyjśnienie, jkie czynniki wpływją n podniesienie wydjności. W lgorytmch rzeczywistych, przeznczonych dl prktycznego zstosowni, progrmiści stosują tk zwne podkłdnie znjdują njwiększy rozmir zdni n < n tki że n %l b = (reszt od dzieleni n przez l b jest równ zeru, czyli n jest wielokrotny do l b ). Przy tym główn część zdni będzie wykonn n podstwie lgorytmu blokowego, niewielk pozostł część lgorytmu niwnego (rys..). 35

36 n n Rys.. Podkłdnie: znjdujemy tki njwiększy rozmir n < n że n jest wielokrotny rozmirowi bloku lb. Dl zkreskownej części mcierzy stosujemy metodę blokową, dl pozostłej metodę niwną Podził mcierzy n bloki dl przykłdu o rozmirze 4 4 orz kierunki indeksów blokowych ib, jb, kb są przedstwione n digrmie jb : 3 4 : 3 4 : : : : 7 8 C C A A B B... :... + =... : :.... ib 9 : ib 9 : kb 9 : 3 4 : : : C C A A B B C kb A jb Dl mcierzy blokowej stosujemy dziłni nd blokmi Nb [ Nb] C ib, jb = Cib, jb + Aib, kb Bkb, jb, ib, jb, (.) kb= Pozostwimy czytelnikowi udowodnienie, że lgorytm blokowy doprowdzi do dokłdnie tkich smych wyników jk i lgorytm zwykły. Tu N b ilość bloków wzdłuż jednego boku mcierzy (rys..3). Dl podnego przykłdu N b = 3. B 36

37 l b n Rys..3 Podził mcierzy n bloki o rozmirze lb Algorytm metody blokowej wygląd tk: for(ib=; ib<=nb; ib++) for(jb=; jb<= Nb; jb++) //odczyt bloku C ib,jb i umieszczenie w cche for(kb=; kb<= Nb; kb++) //odczyt bloków A ib,kb, B kb,jb C ib,jb = C ib,jb + A ib,kb B kb,jb ; //zpis bloku C ib,jb Przy mnożeniu bloków w pętli wewnętrznej jest używny lgorytm niwny. Poniewż bloki zostły umieszczone w pmięci podręcznej nie występuje drstyczne obniżenie wydjności w skutek skoków przy pobierniu elementów bloku B kb,jb. Ilość opercji rytmetycznych wykonnych przy jednej itercji pętli 3 wewnętrznej, wynosi l. Ilość itercji przy wykonniu cłego zdni jest równ b N b, dltego lgorytm wykonuje f = lb N b = n opercji rytmetycznych, poniewż n = l N b b (rys..3). Jest to dokłdnie tyle, ile wykonują lgorytmy niwne. Indeksy bloku C ib,jb nie zleżą od indeksu itercji pętli wewnętrznej kb, stąd wynik że blok C ib,jb będzie odczytny do pmięci podręcznej przed uruchomieniem pętli wewnętrznej, zpisny do pmięci głównej po 37

38 38 zkończeniu pętli kb [Demmel J. W., 997]. Ilość trnsferów dnych dl bloków mcierzy C przy wykonniu cłego zdni wynosi n N n N l N l b b b b b = = 3. Rozmir bloku l b jest dość duży, dltego kżd zmin indeksów lgorytmu powoduje ponowne łdownie bloków mcierzy A, B do pmięci podręcznej. To ozncz, że ilość odczytów dl tych mcierzy rzem wynosi 3 3 n N N n N l N b l b b b b b = = 3. Ilość trnsferów dnych dl lgorytmu blokowego wynosi ( ) b b b N n N n n n N m + = + =, wskźnik wydjności b b b l N n N n n m f q = = = = 3 Im większy rozmir bloku, tym wyższ jest wydjność lgorytmu. Przy czym rozmir bloku jest ogrniczony wrunkiem, że trzy bloki powinny być umieszczone w pmięci podręcznej M l b 3. Stąd wynik, że optymlny rozmir bloku jest równy 3 M l b =, wydjność lgorytmu blokowego 3 M q = (.)

39 Dl lgorytmu blokowego wydjność rośnie przy zwiększeniu rozmiru pmięci podręcznej. Wróćmy do przykłdu z rozdziłu..3. Terz nsz procesor podczs kżdego M trnsferu dnych powinien wykonć f = qm m = = opercji rytmetycznych. 3 Przy wystrczjąco dużym rozmirze M ilość pustych cykli będzie dążyć do zer. Wydjność lgorytmów lgebry liniowej przyjęto odnosić do jednego z poziomów BLAS (Bsis Liner Algebr Subroutines bibliotek wysokiej wydjności typowych procedur lgebry liniowej) zgodnie z rzędem opercji rytmetycznych O(n k ). BLAS O(n ), BLAS O(n ), BLAS 3 O(n 3 ) tb... Jedną z njlepszych relizcji BLAS zwier [Intel MKL]. Klsyfikcj lgorytmów lgebry liniowej według BLAS Algorytm f q = Poziom BLAS m y = y + α /3 O(n) Tbel.. y = y + A C = C + A B Clssic i, j, k C = C + A B Clssic i, k, j (M n) (M < n) (M n) (M < n) (M n) /3 (M < n) O(n ) 3 O(n 3 ) 3 O(n 3 ) C = C + A B Metod blokow 3 M q = 3 O(n 3 ) Algorytmy poziomów, BLAS prcują n niskim poziomie wydjności (q ) z prędkością wolnego ukłdu pmięci. Przyczyną tego jest to, że oni zwierją ilość dnych tkiego smego rzędu, jk i ilość opercji rytmetycznych. Przy tym nie m możliwości wielokrotnego wykorzystni szybkiej pmięci podręcznej. Dl lgorytmów poziomu 3 BLAS ilość opercji rytmetycznych jest większego rzędu w stosunku do ilości dnych. Tkie lgorytmy mją przynjmniej teoretyczną możliwość wielokrotnego użyci dnych, które zostły jeden rz 39

40 umieszczone do pmięci podręcznej. Algorytmy niwne nie potrfią tego zrelizowć, i wydjność okzł się dl nich nie większ niż dl lgorytmów poziomu, BLAS. Dl lgorytmu blokowego podniesienie wydjności okzło się możliwe w skutek tego, że dne, jeden rz umieszczone w pmięć podręczną, były wielokrotnie odczytywne z szybkiej pmięci podręcznej, nie z wolnej pmięci głównej. T technik dostł nzwę cche reuse, podstwą ku temu posłużył podził mcierzy n bloki Blokownie rejestrów Dotąd rozwżliśmy trnsfer dnych pomiędzy pmięcią główną pmięcią podręczną. Terz zjmiemy się poziomem pmięć podręczn rejestry pmięć podręczn. Okzuje się, że zstosownie techniki blokowej zmniejsz ilość łdowni rejestrów i relizuje zsdę, że dne, które zostły umieszczone jeden rz w rejestrze, powinny być wielokrotnie użyte (register s reuse). Tk smo, jk i w przypdku blokowni pmięci podręcznej, stosownie techniki blokowej n poziomie rejestrów procesor (register's blocking) doprowdz do podniesieni wydjności lgorytmu. Rozwżmy lgorytm C ib,jb = C ib,jb + A ib,kb B kb,jb, gdzie A ib,kb, B kb,jb, C ib,jb są to bloki mcierzy, umieszczone w pmięci podręcznej. Njpierw zstosujemy do mnożeni tych bloków lgorytm niwny i, k, j. for(i=; i<=lb; ++i) for(j=; j<=lb; ++j) r = ; for(k=; k<=lb; ++k) r = r + ik b kj ; c ij = r; Tu r zmienn klsy pmięci register, któr m być przechowywn w rejestrze podczs wykonni cłej pętli wewnętrznej, ik, b ik elementy bloków A ib,kb, B kb,jb odpowiednio. Po zkończeniu pętli wewnętrznej wrtość zmiennej r będzie przypisn do c ij elementowi bloku C ib,jb. W pętli wewnętrznej liczy się iloczyn sklrny, przy czym pierwszym wektorem jest wiersz i bloku A ib,kb, drugim kolumn j bloku B kb,jb. Policzymy ilość opercji rytmetycznych i ilość łdowń rejestrów. Z jedną itercje pętli k jest wykonywne opercje rytmetyczne (jedno mnożenie i jedno 4

41 dodwnie) i łdowni dnych do rejestrów (elementy ik, b ik). Przy wykonniu cłego zdni instrukcj kodu w pętli wewnętrznej będzie powtórzon n 3 rzy, czyli będzie wykonn n 3 opercji rytmetycznych orz n 3 łdowń do rejestrów. Wskźnik wydjności wynosi n q = n 3 3 = = W tki sposób możn policzyć tylko wskźnik wydjności dl jednej itercji pętli wewnętrznej. Dl lgorytmu niwnego q =, dl jego wykonni są niezbędne 4 rejestry typu double jeden rejestr dl r, dw rejestry dl elementów ik, b ik i jeden rejestr pomocniczy, dl umieszczeni wyniku pośredniego przy wykonniu mnożeni, poniewż n poziome sembler mnożenie jest opercją binrną, przy czym wynik będzie umieszczony do dresu pierwszego operndu. Żeby zchowć wrtość pierwszego operndu bez zmin, trzeb przed mnożeniem skopiowć jego do rejestru pomocniczego, w którym po wykonniu opercji mnożeni okże się wynik. Rozwżmy terz lgorytm mnożeni bloków mcierzy przy blokowniu rejestrów w schemcie. for(i=; i<lb; i+=) for(j=; j<lb; j+=) //r, r, r, r3 wyzerowujemy rejestry, w //których będziemy przechowywli elementy mcierzy C for(k=; k<lb; ++k) r = r + ik b kj; r = r + i+,k b kj; r = r + i,k b k,j+; r3 = r3 + i+,k b k,j+; c ij += r; c i+,j += r; c i,j+ += r; c i+,j+ += r3; Pętl i jest inkrementown ze skokiem. To ozncz, że mcierzy A ib,kb orz C ib,jb będą podzielone n poziome psm o szerokości (rys..4). Pętl j też jest inkrementown ze skokiem. Mcierzy B kb,jb i C ib,jb będą podzielone n pionowe 4

42 psm o szerokości. Mcierz C ib,jb więc będzie podzielon n kltki o rozmirze. k j j i k = i A ib,kb B kb,jb C ib,jb Rys..4 Grficzn interpretcj lgorytmu blokowni rejestrów Żeby otrzymć wynik poprwny, trzeb rozwinąć pętlę wewnętrzną o wrtości indeksów i+, j+. Ozncz to, że w pętli wewnętrznej zmist obliczeni iloczynu sklrnego przy wykonniu opercji sklrno-wektorowych, jk to było robione w lgorytmie niwnym, liczymy iloczyn mcierzy zkreskownych n rys..4, przy czym otrzymujemy wrtości elementów mcierzy C ib,jb w kltce. Są to elementy c ij, c i+, j, c i,j+, c i+,j+. Elementy te nie zleżą od indeksu itercji pętli wewnętrznej, dltego są przechowywne w rejestrch r r3 przy wykonniu itercji pętli wewnętrznej. Wyłdownie dnych z tych rejestrów do pmięci odbyw się po zkończeniu pętli k. Z jedną itercje pętli wewnętrznej trzeb wykonć 4 mnożeni i 4 dodwni (rzem 8 opercji rytmetycznych) orz 4 łdowni elementów mcierzy ik, i+,k, b kj, b k,j+ do rejestrów. W lgorytmie elementy te zostły podkreślone. W tki sposób, blokownie rejestrów doprowdziło do tego, że w pętli wewnętrznej kżdy element jest jeden rz łdowny i dw rzy używny w wyrżenich rytmetycznych. Wskźnik wydjności wynosi q = 8/4 =. Jest to w dw rzy więcej niż dl lgorytmu niwnego. Dl wykonni tego lgorytmu będą potrzebne 8 rejestrów: 4 rejestry dl elementów mcierzy C ib,jb, dl elementów mcierzy A ib,kb i dl elementów mcierzy B kb,jb. Jeszcze jeden rejestr potrzebujemy dl przechowywni wyników opercji mnożeni. Tki lgorytm może być uruchomiony n pltformie 3- bitowej, poniewż są dostępne 8 rejestrów dl liczb typu double. N pltformie 64- bitowej mmy dostępnych 6 tkich rejestrów. Dltego możemy zstosowć rozmir bloku 3 3. Potrzebuje to 9 rejestrów dl elementów mcierzy C ib,jb, 3 rejestry dl elementów mcierzy A ib,kb, rejestr dl elementów mcierzy B kb,jb i 4

43 rejestr pomocniczy rzem 4 rejestrów. W jednej itercji pętli wewnętrznej będą wykonne 8 opercji rytmetycznych i 6 łdowń do rejestrów. Wskźnik wydjności jest równy q = 8/6 = 3. Przedstwim czytelnikowi możliwość smodzielnego stworzeni lgorytmu blokowni rejestrów 3 3 i udowodnieni tego, co wyżej zostło przedstwione. Dl rozmiru zdni N = w tbeli. jest podn wydjność dl lgorytmu niwnego (i, j, k), lgorytmu blokowni rejestrów i lgorytmu blokowni pmięci podręcznej l b = 64 orz blokowni rejestrów procedur dgemm BLAS 989 [Dongrr, Myes, di Brozolo, 989]. Obliczeni były wykonne n komputerze z procesorem Intel Core Qud CPU GHz. Progrm dgemm BLAS 989 zostł pobrny z Internetu i przepisny z Fortrnu n C (złącznik ). Porównnie wydjności (MFLOPS) lgorytmów C = C+A B Tbel. Algorytm niwny ijk 3 Algorytm blokowni rejestrów 6 Algorytm blokowni cche (lb=64) orz rejestrów (BLAS 989, J. Dongrr) 3 Wszystkie progrmy zostły skompilowne kompiltorem Intel C/C++.. przy opcjch /O3 /QT /QT /Qunroll: /Qprllel Wektoryzownie obliczeń użycie rejestrów XMM. Techniki oprogrmowni SSE, SSE3. Nstępnym etpem podniesieni wydjności jest zstosownie elementów wektoryzowni obliczeń. Procesory Pentium IV, Pentium Dul-Core, Intel Core Qud, Intel Core i5, Intel Core i7 i wiele innych zwierją 6 8- bitowych rejestrów XMM, kżdy z których umieszcz dw słow typu double. Tkie rejestry ndją możliwość w jednym cyklu procesor wykonć dw mnożeni lub dw dodwni. W porównniu ze zwykłymi rejestrmi typu double, które mogą wykonywć tylko jedną opercje (mnożenie lub dodwnie) z jeden cykl procesor, użycie rejestrów XMM teoretycznie zezwl podnieść wydjność lgorytmów obliczeniowych, jeśli nie powstje przy tym ztrzymnie trnsferu dnych RAM cche RAM, cche rejestry cche. Jest to element rchitektury SIMD (single instruction strem multiple dt strem). Jeszcze kilk lt temu zstosownie rejestrów XMM było możliwe tylko w języku ssembler. Terz technologie SSE, SSE3 (Streming SIMD Etensions SSE, SSE3) dją możliwość progrmowni z użyciem rejestrów XMM n poziomie język C/C++ [SSE]. Dl podniesieni wydjności jest stosowne blokownie rejestrów XMM. Istnieją różne schemty blokowni. Dl plikcji 3-bitowych (pltform i3) dostępnych jest tylko 8 rejestrów XMM. Stąd i blokownie odbyw się w 43

44 schemcie lbo 4, lbo 4. N rys..5 jest przedstwiony schemt blokowni 4 rejestrów XMM, używny dl procesorów Pentium IV rchitektury Prescott и Opteron [Goto K, Vn De Geijn R A, 8]. j k j i += i k C ib,jb A B ib,kb kb,jb Rys..5 Schemt blokowni 4 rejestrów XMM Przy jednej itercji pętli wewnętrznej mmy 6 opercji rytmetycznych orz 6 łdowń dnych do rejestrów. Wskźnik wydjności q = 6/6 =.67. Frgment kodu, npisnego w technice SSE, jest przedstwiony poniżej. #include <emmintrin.h> #include <intrin.h> m8d c, c, c3, c4, w, w, wt, wt;//są potrzebne 8 //rejestrów XMM const int mr = ; const int nr = 4; for(i=; i<lbv; i+=mr) for(j=; j<lbh; j+=nr) pwt = WT+M*j;//wskzuje do Bkb,jb ; M ilość wierszy //w bloku Bkb,jb pw = W+i*M; //wskzuje do Aib,kb ; M ilość kolumn //w bloku Aib,kb // wyzerowujemy rejestry c c4 dl elementów bloku // Cib,kb c = _mm_setzero_pd(); c = _mm_setzero_pd(); c3 = _mm_setzero_pd(); c4 = _mm_setzero_pd(); for(k=; k<m; k++) 44

45 w = _mm_lod_pd(pw); //lod w <- ik, ik wt = _mm_lod_pd(pwt); //lod wt <- b kj, b k,j+ wt = _mm_lod_pd(pwt+);//lod wt <- b k,j+, b k,j+3 w = _mm_mul_pd(w, wt);// ikb kj, ikb k,j+: w<-w*wt c = _mm_dd_pd(c, w);//c ij, c i,j+ <- c ij, c i,j++ // ikb kj, ikb k,j+ w = _mm_mul_pd(w, wt);// ikb k,j+, ikb k,j+3: //w<-w*wt c = _mm_dd_pd(c, w);//c i,j+, c i,j+3 <- //c i,j+, c i,j+3+ ikb k,j+, ikb k,j+3 w = _mm_lod_pd(pw+);//lod w <- i+,k, i+,k w = _mm_mul_pd(w, wt);// i+,kb kj, i+,kb k,j+: //w<-w*wt c3 = _mm_dd_pd(c3, w);//c i+,j, c i+,j+ <- //c i+,j, c i+,j++ i+,kb kj, i+,kb k,j+ w = _mm_mul_pd(w, wt);// i+,kb kj, i+,kb k,j+: //w<-w*wt c4 = _mm_dd_pd(c4, w);//c i+,j+, c i+,j+3 //<- c i+,j+, c i+,j+3+ i+,kb k,j+, i+,kb k,j+3 pw += mr; pwt+= nr; pos_cw = mr*j; //wyłdujemy z rejestrów do bloku Cib,kb _mm_store_pd(cw+pos_cw, c); _mm_store_pd(cw+pos_cw+, c); _mm_store_pd(cw+pos_cw+4, c3); _mm_store_pd(cw+pos_cw+6, c4); //j loop //i loop Dne dl tblic B kb,jb, C ib,jb mją być wyrównne do grnic 6 bjtów poniewż są one złdowne przy pomocy instrukcji _mm_lod_pd() orz wyłdowne instrukcją _mm_store_pd(). Dltego są używne funkcje [MSDN]: ptr_a = (double *)_ligned_mlloc(number_of_bytes, 6), _ligned_free(ptr_a). Tu ptr_a bufor pmięci, który lokuje się dynmicznie z wyrównniem n grnicę 6 bjtów, lbv, lbh ilość wierszy i ilość kolumn bloku mcierzy C ib,jb orz ilość wierszy w bloku A ib,kb i ilość kolumn w bloku mcierzy B kb,jb, M ilość kolumn bloku A ib,kb, orz ilość wierszy bloku B kb,jb. Indeksy itercji i, j są inkrementowne ze skokmi mr, nr odpowiednio. Powoduje to podził bloku C ib,jb 45

46 m r.. n kltki o rozmirze mr nr, bloku A ib,kb n psm poziome o szerokości mr, bloku B kb,jb n psm pionowe o szerokości nr (rys..6). n r j k M n r j lbv i lbv += m r i.. k lbh lbh C ib,jb Aib,kb Bkb,jb Rys..6 W pętle wewnętrznej obliczmy iloczyn podmcierzy wydzielonych Dl wspierni potokowego przetwrzni dnych pętl wewnętrzn pozostje rozwinięt K rzy. Ilość używnych rejestrów XMM nie zleży od K. W zleżności od typu procesor K może osiągnąć 9 rzy [Yotov K., Roeder T., Pingli K., Gunnels J., Gustvson F., 7]. Npisn w tki sposób pętl wewnętrzn dostł nzwę mikrojądr (microkernel) Podził mcierzy n bloki, pkownie dnych według Intel Mth Kernel Librry, mikrojądro. Dltego, żeby zminimlizowć "red miss" (cche-chybienie przy odczycie), dne mją być umieszczone w pmięci głównej w kolejności ich pobierni. Będziemy to nzywć kolejnością optymlną. Jednk pierwotne umieszczenie dnych w kżdej z mcierzy i w blokch C ib,jb, A ib,kb, B kb,jb nie odpowid tkiej kolejności. Z tego wynik konieczność przepkowni dnych. Istnieje kilk różnych sposobów przepkowni. Algorytm przepkowni procedury DGEMM BLAS z 989 roku dl mcierzy, umieszczonych w pmięci głównej kolumn po kolumnie, wygląd tk (złącznik ): for(ib=; ib<nb; ++ib) 46

47 for(kb=; kb<nb; ++kb) //Pck A ib,kb for(jb=; jb<nb; ++jb) C ib,jb+=a ib,kb*b kb,jb Pkownie elementów bloku A ib,kb odbyw się w tki sposób, że po wykonniu cłego zdni lgorytm fktycznie prcuje z mcierzą, elementy której umieszczone są w pmięci tk, jk to jest pokzne n rys..7. Tkie pkownie jest optymlne poniewż w trkcie wykonni cłego zdni ilość trnsferów dnych nie przekrcz ilości elementów mcierzy A. Po pkowniu elementy bloku A ib,kb są umieszczone w pmięci dokłdnie w tkiej kolejności, w jkiej będą pobierne w pętli wewnętrznej. Przy tym będzie potrzebn jedn dodtkow tblic dl przechowywni przepkownego bloku o rozmirze l b l b. Rys..7 Pkownie elementów bloku Aib,kb Algorytm mnożeni bloków C ib,jb+=a ib,kb*b kb,jb używ blokownie rejestrów double : for(j=; j<lb; j+=) for(i=; i<lb, i+=) // wyzeruj rejestry dl bloku C ib,jb : t = t = t = t = ; 47

48 for(k=; k<lb; ++k) t = t + ik b kj; t = t + i+,k b kj; t = t + ik b k,j+; t = t + i+,k b k,j+; c ij = t; c i+,j = t; c i,j+ = t; c i+,j+ = t; Teoretycznie optymlny rozmir bloku możn dostć z wrunku, że trzy bloki A ib,kb, B kb,jb, C ib,kb powinny się mieścić w pmięci podręcznej. Jeśli brć pod uwgę tylko rozmir cche L, to 3 L lb = L lb =, 3 skąd przy L=3K = 3*4 = bjtów lbo 3 768/8 = 4 96 słów double dostjemy l b = Testy pokzują że optymlny rozmir bloku wychodzi większy, poniewż w podnym oszcowniu nie był wzięt pod uwgę obecność pmięci podręcznej L (L3). W procedurze DGEMM z biblioteki Intel MKL jest użyty inny podził n bloki (rys..8) [Goto K, Vn De Geijn R A, 8]. Algorytm n poziome mnożeni bloków wygląd nstępująco for(kb=; kb<nb; ++kb) //Przepkownie bloku B kb for(ib=; ib<nb; ++ib) // Przepkownie bloku A ib,kb C ib+=a ib,kb*b kb Tu mcierz A jest podzielon n bloki kwdrtowe o rozmirze l b l b. Zkłdmy, że rozmir zdni jest wielokrotny do rozmiru bloku. W przeciwnym wypdku trzeb użyć podkłdni (rozdził..4.3). Mcierzy B i C są podzielone n psm pionowe o szerokości l b. Przepkownie bloków mcierzy A i B jest optymlne (ptrz rozdził..4.5). W pętli wewnętrznej wykonujemy 48

49 mr mr mnożenie bloków mcierzy C ib+=a ib,kb*b kb przy blokowniu 4 rejestrów XMM (lgorytm zostł podny wyżej). Dl minimlizowni ilości chybień w pmięci podręcznej jest wykonne przepkownie bloków mcierzy (rys..9) według przyjętego schemtu blokowni rejestrów XMM. kb jb= jb= ib kb = ib A B C nr A ib,kb B kb C ib = nr Rys..8 Podził n bloki według Intel MKL (n górze) orz podmcierze używne w pętli wewnętrznej przy blokowniu rejestrów XMM 4 nr nr mr lb = lb N A B C ib,kb kb ib N nr nr l b mr = l b lb Rys..9 Pkownie dnych przy blokowniu rejestrów XMM mr nr. Z dołu są podmcierze, które powinny być umieszczone w buforze TLB 49

50 Z punktu widzeni wydjności obliczeń przy wykonniu pętli wewnętrznej w cche L mją być umieszczone bloki dnych, zkreskowne n rys..8 (dół), orz kltk mcierzy C ib o rozmirze m r n r. Stąd wynik: l b ( m + n ) r r + m n r r = L L m n r r lb = (.) mr + nr Z innej strony rozmir dnych, umieszczonych w cche L, nie powinien przekroczyć rozmiru TLB Trnsltion Lookside Buffer. To jest cche CPU używny przez nrzędzie sterowni pmięcią dl przyspieszeni trnslcji dresów wirtulnych w trkcie mpowni dresów wirtulnych do pmięci fizycznej. Wiele procesorów w tym procesory 86, używją tego urządzeni. Jeśli obszr dnych przekrcz rozmir TLB, dostęp do tych dnych idzie zncznie wolniej. Jeśli chybieni przy odczycie w pmięci podręcznej możn ukryć z pomocą prefetch'u, to chybień w buforze TLB ukryć nie d się. Drugi wrunek nie przekroczenie rozmiru bufor TLB przy wykonniu pętli wewnętrznej (dne, oznczone n poprzednim rys.9, dół): b l r b b r + n l = TLB l = n + TLB n (.3) Z tych dwóch wrunków trzeb wybrć ten, który doprowdzi do mniejszego rozmiru l b. N przykłd: m r =, n r = 4, TLB = 56 K (Pentium IV, Pentium Dul- Core), L = 3 K. To ozncz, że L = 496 słów double, TLB = słów double. Ze wzoru (.) otrzymujemy l b = (4 96-*4)/(+4) = 68 orz z (.3) wyznczmy l b = [+3 768] - = 79. Stąd optymln wrtość l b = 76, poniewż l b musi być wielokrotn do n r = 4. Technologie EM64t (system opercyjny 64 bitowy) dopuszczją obecność 6 8-bitowych rejestrów XMM. Więc blokownie rejestrów orz pkownie dnych powinny odpowidć schemtowi 4 4 (m r = n r = 4). Dl tkiego lgorytmu są potrzebne 8 rejestrów dl elementów mcierzy C ib, dl elementów mcierzy A ib,kb, rejestr dl elementów mcierzy B kb i rejestr pomocniczy dl przechowywni wyników opercji mnożeni. N kżdej itercji pętli wewnętrznej mmy 8 łdowń do rejestrów i 3 opercji rytmetyczne, czyli q = 3/8 = 4. r 5

51 m r.. n r j k M n r j lbv i lbv += m r i.... k lbh lbh C ib,jb Aib,kb Bkb,jb Rys.. Schemt blokowni 4 4 rejestrów XMM. Rozwiązywnie ukłdów równń liniowych lgebricznych dl mcierzy rzdkich symetrycznych.. Metody Guss i Choleskiego Porównmy czs obliczeń progrmu testowego Guss, tworzonego przez utor i przeznczonego dl rozwiązywni ukłdów równń liniowych lgebricznych z mcierzą symetryczną gęstą metodmi bezpośrednimi. Progrm wykonuje kilk różnych relizcji metod Guss i Choleskiego. Rozmir zdni wynosi 4 równń. Wyniki są w tbeli.3. W pierwszych dwóch wierszch jest przedstwion metod Guss dl mcierzy symetrycznej przy umieszczeniu elementów mcierzy w tblice jednowymirowej wiersz po wierszu i kolumn po kolumnie. Nstępne dw wiersze tbeli reprezentują metodę Choleskiego przy umieszczeniu elementów mcierzy wiersz po wierszu i kolumn po kolumnie. W osttnich wierszch są umieszczone wyniki dl blokowej metody Choleskiego przy różnych rozmirch bloku. N rys. jest przedstwion wydjność blokowej metody Choleskiego w zleżności od rozmiru bloku. Tmże są wyniki dl metody Guss i metody Choleskiego (umieszczone wierz po wierszu). Te metody nie są blokowe, dltego wyniki nie zleżą od rozmiru bloku l b. Wydjność metody blokowej przy l b dąży do wydjności metody Guss. Mksymln wydjność dl metody Choleskiego blokowej w dość szerokich grnicch wrtości l b brdzo mło zleży od rozmiru bloku. 5

52 Wszystkie metody wykonują tą smą ilość opercji rytmetycznych, jednk demonstrują zupełnie różne wydjności. Powstje pytnie dlczego? Wyjśnimy to w dnym rozdzile. Tbel.3 Porównywnie wydjności rozwiązni ukłdu równń liniowych lgebricznych o rozmirze 4 z mcierzą gęstą symetryczną różnymi metodmi. Metod FLOP Czs, s Wydjność, MFlops Guss (LU), wiersz po wiersze Guss (LU), kolumn po kolumnie Cholesky (LL T ), wiersz po wiersze Cholesky (LL T ), kolumn po kolumnie 4. 9 Block Cholesky (block 6) O(n 3 /3) Block Cholesky (block ) Block Cholesky (block 4) Block Cholesky (block 48) Block Cholesky (block 96) Rys.. Wydjność vi rozmir bloku 5

53 Metody bezpośrednie są to tkie metody, które doprowdzją do dokłdnego rozwiązni (w rytmetyce dokłdnej) po wykonniu skończonej ilości opercji. Tk cech odróżni je od metod itercyjnych, które doprowdzją do rozwiązni przybliżonego, przy czym ilość opercji dl metod itercyjnych nie jest przewidywn. Podstwą dl metod bezpośrednich jest fktoryzcj, czyli rozkłd mcierzy źródłowej w iloczyn mcierzy o strukturze specjlnej: dolne trójkątne, górne trójkątne orz digonlne. Złóżmy, że trzeb rozwiązć ukłd równń liniowych lgebricznych z mcierzą dolną trójkątną o wymirze 3 3: λ λ λ 3 λ λ 3 y y λ 33 y 3 b = b b 3. (.4) Mnożymy pierwszy wiersz mcierzy przez wektor y : λ y = b y = b / λ. Mnożymy drugi wiersz mcierzy przez wektor y : λ y + λ y = b. W tym wyrżeniu y już jest znny, dl tego otrzymliśmy jedno równnie z jedną y = b λ y. Mnożymy trzeci wierz mcierzy przez niewidomą ( ) λ wektor y : λ 3y + λ3 y + λ33 y3 = b3. Znów mmy jedno równnie i jedną niewidomą y 3 poniewż y, y są widome z poprzednich kroków y = b λ y λ y. Możn udowodnić że dl zdni o dowolnym ( ) 33 3 λ k rozmirze N yk = bk λ k, s ys / λk, k, k =,, K, N. s= W podobny sposób rozwiązujemy ukłd równń liniowych lgebricznych z mcierzą górną trójkątną u u u u u u y = y y 3. (.5) Zczynmy od osttniego równni: u333 = y3 3. Przechodzimy dlej do przedosttniego równni u + u33 = y. Dl pierwszego równni 53

54 mmy u + u + u3 3 = y. Dl zdni z N niewidomymi lgorytm n jest tki: k = yk uk, s s / uk, k, k = N, N, K,. s= k + Dl mcierzy digonlnej kżde równnie zwier tylko jedną niewidomą. Dl tego dzielimy kżdy z elementów wektor prwej strony przez odpowiedni element digonlny i otrzymujemy rozwiąznie. T procedur otrzymł nzwę sklowni digonlnego. Ukłd równń liniowych lgebricznych A = b, (.6) rozwiązujemy w kilk etpów. Njpierw wykonujemy fktoryzcję mcierzy A = LU, (.7) gdzie L mcierz doln trójkątn, U górn trójkątn. Podstwimy w (.6): L y U = b. (.8) Wykonujemy podstwienie bezpośrednie: Wykonujemy podstwienie wsteczne: Ly = b y. (.9) U = y. (.) W (.9) rozwiązujemy ukłd równń liniowych lgebricznych z mcierzą dolną trójkątną, w (.) z mcierzą górną trójkątną. W tki sposób, rozkłd mcierzy n iloczyn mcierzy dolnej trójkątnej i górnej trójkątnej doprowdz zdnie (.7) do rozwiązni zdń (.9) i (.). Ogrniczymy się rozwżniem mcierzy symetrycznych. Dl fktoryzcji mcierzy symetrycznych i dodtnio określonych njczęściej stosown jest metod Choleskiego T A = LL, (.) podstwieni bezpośrednie i wsteczne przyjmują postci Ly = b y, (.) 54

55 T L = y. (.3) Dl metody Guss będziemy przechowywć w pmięci głównej część górną trójkąt , dl metody Choleskiego dolną trójkąt Tu poprzez liczby,,... oznczone są kolejne numery umieszczeni elementów mcierzy w tblice jednowymirowej. Istnieje kilk relizcji metod Guss i Choleskiego [Golub, Vn Lon, 996]. Rozptrzmy lgorytm metody Guss, używny dl pierwszego zdni w teście wymienionym powyżej (rys..). k =,, K, n piv =. / i = k +, K, n piv = j = i, K, n i, j i, k = k, k piv; i, j λ end j loop end i loop end k loop i, k // λ i, k j, k = i, k / kk Rys.. Algorytm fktoryzcji mcierzy gęstej symetrycznej metodą Guss 55

56 Złóżmy, że wykonno k - pierwszych kroków lgorytmu (rys..3). Górn część mcierzy wierszy od do k - są sfktoryzowne. Wykonujemy elimincję kolumny k. Wiersz k pozostje bez zmin, wierszę od k+ do n ulegją poprwieniu (pętle po indeksie i). Dl wiersz i poprwimy elementy w pętli j. Rys..3 Algorytm fktoryzcji mcierzy gęstej symetrycznej metodą Guss W pętli wewnętrznej tego lgorytmu (indeks j) wykonuje się lgorytm spy (rozdził..), poniewż λ ik nie zleży od indeksu itercji j. Czyli w pętli wewnętrznej jest wykonny lgorytm = + α, gdzie α jest stłą, któr nie ij zleży od indeksu j. Dl jednej itercji pętli wewnętrznej są wykonne jedno mnożenie i jedno dodwnie. Przy tym trzeb wykonć dw odczyty elementów ij, kj i jeden zpis elementu ij. Jeśli wiersz k jest umieszczony w pmięci podręcznej, to elementy ij kj kj będą pobierne z pmięci podręcznej. Dl dość dużej mcierzy elementy ij z wierszu i z kżdym rzem trzeb odczytywć z pmięci głównej do pmięci podręcznej, po modyfikcji zpisywć do pmięci głównej. N kżde dwie opercji rytmetyczne trzeb wykonć jeden odczyt z pmięci podręcznej, jeden odczyt z pmięci głównej i jeden zpis do pmięci głównej. Jest to podstwow przyczyn powolnego dziłni tego lgorytmu. Dl zrelizownego w teście lgorytmu Choleskiego (rys..4,.5) przebieg fktoryzcji jest wykonny wierz po wierszu (pętl po i). 56

57 57 ( ) loop i end l S l loop k end S S i k S loop j end l S l loop k end S S j k S row i in elements updte of for loop i j rows loop over n i l i k k i i i i i i i i i k i k i j j j k k j k i j i j i j j j i j i k j k i = = = = + = = = = = + = = = = = =,,,,,,,,,,,,,,,,, // ; ;,,,.; // ;,,,.; //,,, //,, K K K K Rys..4 Algorytm fktoryzcji mcierzy gęstej symetrycznej metodą Choleskiego Rys..5 Algorytm fktoryzcji mcierzy gęstej symetrycznej metodą Choleskiego

58 Dl oblicznego elementu l ij bieżącego wiersz i jest potrzebny wiersz j dl j obliczeni sumy i, k j, k, któr jest liczon w pętli wewnętrznej po indeksie k = k. Jest to obliczenie iloczynu sklrnego dwóch wektorów, elementy których są pobierne z wierszy i, j : = S + i. W trkcie jednej itercji pętli S, k j, k wewnętrznej są wykonne dwie opercji rytmetyczne (jedno mnożenie i jedno dodwnie). Jeśli wiersz i jest umieszczony w pmięci podręcznej, to n kżde dwie opercji rytmetyczne trzeb odczytć element, z pmięci podręcznej i element, z pmięci głównej. Zmienn S jest utrzymywn w rejestrze, dl tego j k zpis do pmięci głównej nie jest potrzebny. Stąd ten lgorytm jest szybszy od lgorytmu Guss.... Blokow metod Choleskiego N rys..6 przedstwiony jest jeden krok blokowej fktoryzcji Choleskiego, któr poleg n podzile mcierzy n bloki. Digonlny blok A mcierzy źródłowej m wymir l b l b, który jest dobierny n podstwie obliczeniowego eksperymentu. Zwykłe optymlny rozmir l b leży w grnicch 4 9. l b A W T L i k L T W T W M = W M mod I Rys..6 Blokow metod Choleskiego. Podził mcierzy n bloki. Z prwej strony znjduje się mcierz źródłow Z, z lewej iloczyn dwóch mcierzy, które powstją: Z = B C, gdzie B jest pierwszą mcierzą z prwej strony, C drugą. N pierwszym etpie mnożymy pierwszy wierz blokowy mcierzy B przez pierwszą kolumnę blokową mcierzy C: T A = L L. (.4) 58

59 Ozncz to, że blok A powinien być sfktoryzowny, jko wynik powstje doln trójkątn mcierz L. N drugim etpie mnożymy drugi wiersz blokowy mcierzy B przez pierwszą kolumnę blokową mcierzy C: Trnsponujemy osttnie wyrżenie ~ T ~ T W = W L + M W L = W mod. ~ T T T T ~ T ~ T T ( W L ) = ( L ) W = L W = W, skąd osttecznie otrzymujemy ~ L W T = W T ~ W. (.5) Tu trzeb rozwiązć ukłd równń liniowych lgebricznych z mcierzą dolną trójkątną L, jk był wyznczon w pierwszym etpie, z pczką prwych stron T W. Dostjemy pczkę wektorów rozwiązni W ~. W trzecim etpie mnożymy drugi wiersz blokowy mcierzy B przez drugą kolumnę blokową mcierzy C: ~ ~ T M = W W + M mod I, skąd znjdujemy dolny blok digonlny M mod ~ ~ T = M W W. (.6) Po wykonniu podnego kroku fktoryzcji stosujemy tkie sme podejście dl mcierzy M mod dzielimy je n bloki i powtrzmy te etpy od początku. I tk dlej. W końcu n miejsce mcierzy B powstje doln trójkątn mcierz L, n miejsce B mcierz L T. Fktoryzcj bloku digonlnego A (.4) odbyw się n poziomie wysokiej wydjności, poniewż rozmir l b jest dość mły i mcierz w cłości będzie umieszczon w pmięci podręcznej. Dl rozwiązni ukłdu równń liniowych lgebricznych z pczką prwych stron (.5) możn też stworzyć lgorytm wysokiej wydjności. Istotne jest to, że są wykonywne opercje mcierzowe, nie sklrno-wektorowe, jk to się odbyw przy jednej prwej stronie. Wyrżenie (.6) otrzymło nzwę obliczeni dopełnieni Schur. Włśnie n ten etp przypd pond 99% obliczeń dl mcierzy o dużym rozmirze. 59

60 Wyrżenie (.6) zwier mnożenie mcierzy przez mcierz. Dl osiągnięci mksymlnej wydjności stosujemy procedurę DGEMM lbo DSYRK z biblioteki Intel MKL. Jeśli przyjąć, że rozmir bloku l b =, to metod blokow będzie doprowdzon do metody klsycznej looking right (rozdził 5.5), któr fktoryzuje mcierz kolumn po kolumnie. Są tu wykonne opercje sklrno-wektorowe, i dl tego wydjność tkiego lgorytmu znjduje się n poziomie metody Guss (rozdził..). 6

61 3. Elementy oprogrmowni równoległego w rchitekturze SMP n pltformie Windows NT 3. Tworzenie procesów i wątków. Sekcje krytyczne, zdrzeni i sygnły. Podny w tym rozdzile mterił opisuje osobliwości tworzeni, sterowni, ksowni orz synchronizcji procesów i wątków dl systemu opercyjnego Windows pltformy NT bsed (Windows XP, Windows 3, Windows Vist, Windows 7 itd.). Głównymi źródłmi literckimi dl jego npisni posłużyły prce [Richter J. (997)] orz [MSDN ()]. Proces jest obiektem jądr systemu opercyjnego, który reprezentuje egzemplrz progrmu uruchomionego. Proces skłd się z obiektu jądr, który służy dl kierowni procesem przez system opercyjny, przestrzeni dresowej, któr obejmuje kod i dne wszystkich modułów ee, dll orz również stosów wątków orz stos (hep) pmięci, lokownej dynmicznie. Proces smodzielnie nie wykonuje nic. Żeby proces zczął dziłć koniecznie jest uruchomienie wątku (wątków). Włśnie wątki niosą odpowiedzilność z wykonnie instrukcji kodu, zwrtego w przestrzeni dresowej procesu. Kżdy wątek m swój włsny stos i w trkcie wykonni instrukcji kodu rozdziel rejestry CPU. Kżdy proces m przynjmniej jeden wątek, który wykonuje kod w przestrzeni dresowej. Jeśli zmknąć wszystkie wątki procesu, system opercyjny (OS) utomtycznie zniszczy ten proces orz również jego przestrzeń dresową. Dl wszystkich istniejących wątków system opercyjny plnuje pewne odcinki czsu, w skutek czego CPU udziel kżdemu wątkowi kwnty czsu. Dl komputer jedno-procesorowego powstje szeregownie cykliczne (rys. 3. jest pobrny z [Richter J. (997)]). 6

62 Rys. 3. Szeregownie cykliczne. Dl komputerów wieloprocesorowych lgorytm zrównowżeni obciążeni procesorów jest brdziej skomplikowny. Kiedy tworzy się proces, system opercyjny tworzy pierwotny wątek. Ten wątek może stworzyć wielu potomnych wątków (child threds), które mogą tworzyć swoje włsne potomne wątki. Tworzenie procesu odbyw się przy wywołniu funkcji CreteProcess: BOOL CreteProcess( LPCTSTR lpapplictionnme, LPTSTR lpcommndline, LPSECURITY_ATTRIBUTES lpprocessattributes, LPSECURITY_ATTRIBUTES lpthredattributes, BOOL binherithndles, DWORD dwcretionflgs, LPVOID lpenvironment, LPCTSTR lpcurrentdirectory, LPSTARTUPINFO lpstrtupinfo, LPPROCESS_INFORMATION lpprocessinformtion ); // nme of eec. module // commnd line string // SD // SD // hndle inheritnce option // cretion flgs // new environment block // current directory nme // strtup informtion // process informtion 6

63 Tu SD ozncz Security Descriptor. Szczegółowy opis tej funkcji znjduje się w [MSDN ()]. Njwżniejszymi skłdowymi są lpcommndline, wiersz tekstowy, który zwier ścieżkę orz nzwę ee module, lpstrtupinfo wskźnik do struktury STARTUPINFO orz lpprocessinformtion wskźnik do struktury PROCESS_INFORMATION, który zwrc t funkcj. Poniżej umieszczony jest typowy przykłd tworzeni procesu. void CClcEtern::StrtProc() /*=========================================================== Strtujemy nowy proces i zwieszmy bieżący proces dopóki tworzony proces nie skończy się =========================================================*/ PROCESS_INFORMATION pi; STARTUPINFO StrtupInfo; ZeroMemory(&StrtupInfo, sizeof(strtupinfo)); StrtupInfo.cb = sizeof(strtupinfo); DWORD dweitcode; LPTSTR lpcommndline = "Q:\\win3pp\\Disp\\Debug\\Disp.ee"; BOOL fsuccess = CreteProcess(NULL, lpcommndline, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &StrtupInfo, &pi); if(!fsuccess) AfMessgeBo("StrtProc is filed"); throw EXCEPT_CALC; //zmykmy hndle wątku tworzonego procesu CloseHndle(pi.hThred); //ztrzymujemy wykonnie kodu dopóki tworzony proces //nie skończy się WitForSingleObject(pi.hProcess, INFINITE); //Niszczymy hndle tworzonego procesu GetEitCodeProcess(pi.hProcess, &dweitcode); CloseHndle(pi.hProcess); Hndle jest tu typem zmiennej, przeznczonej dl odróżnieni jednego obiektu OS od drugiego. Z pomocą hndle możn sterowć obiektmi. Wywołnie funkcji CreteProcess powoduje: 63

64 . Tworzenie obiektu jądr procesu przez system opercyjny i ustwienie licznik obiektu jądr n. Jądro procesu to struktur dnych, któr służy do kierowni procesem i zwier sttystyczną informcję o procesie.. Tworzenie wirtulnej przestrzeni dresowej, łdownie kodu i dnych dl ee pliku orz wszystkich dll do przestrzeni dresowej procesu. 3. OS tworzy obiekt jądr wątku i ustwi licznik obiektu jądr wątku n. Będzie to pierwotny wątek procesu. Jądro wątku jest strukturą dnych, któr służy do kierowni wątkiem i zwier sttystyczną informcje o nim. 4. Pierwotny wątek zczyn wykonnie kodu. Jeśli przy tworzeniu procesu występuje sukces, funkcj CreteProcess zwrc TRUE. Istnieje kilk sposobów zkończeni procesu.. Funkcj, z której pierwotny wątek zczyn wykonnie kodu, dochodzi do instrukcji return. Jest to njlepszy sposób zkończeni wątku, poniewż: Kżdy obiekt C++, tworzony przez ten wątek, będzie zniszczony poprwnie, używjąc włsnego destruktor. OS poprwnie zwolni stos wątku. OS ustwi kod zkończeni procesu n wrtość, którą zwrc funkcj wejściow wątku pierwotnego. Os zmniejszy licznik obiektu jądr procesu o.. Jeden z wątków procesu wywołuje funkcję EitProcess (w mirę możliwości unikmy tego). Część kodu po wywołniu EitProcess nigdy nie będzie wykonn. Wszystkie wątki tego procesu będą przerwne. Chociż dokumentcj SDK głosi, że wszystkie resursy wątków i procesu (stosy wątków, stos pmięci (hep) orz pliki) będą zwolnione poprwnie, dl progrmów C++ może to spowodowć, że destruktory kls nie zdziłją. N przykłd [Richter J. (997)]: #include <windows.h> #include <stdio.h> clss CSomeObj public: CSomeObj() printf("constructor\r\n"); ~CSomeObj() printf("destructor\r\n"); ; 64

65 CSomeObj g_globlobj; void min () CSomeObj LoclObj; EitProcess(); // This shouldn't be here // At the end of this function, the compiler // utomticlly dded the code necessry //to cll LoclObj's destructor. EitProcess prevents //it from eecuting. Wydruk n monitorze wygląd tk: Constructor Constructor Potwierdz to, że destruktory obiektów globlnego orz loklnego nie zdziłły. Jeśli EitProcess() usunąć z kodu, wydruk będzie tki: Constructor Constructor Destructor Destructor Funkcj EitProcess jest przeznczon dl ksowni procesu poprzez swoje włsne wątki. 3. Jeden z wątków procesu wywołuje funkcję TerminteProcess (w mirę możliwości unikmy tego), któr jest przeznczon dl ksowni procesu dowolnym wątkiem (nie tylko włsnym). Służy on dl przymusowego (wryjnego) zkończeni procesu, kiedy proces w skutek jkichś zdrzeń (błędów) gubi sterownie i nie odpowid n notyfikcje. 4. Wszystkie wątki procesu zostły zkończone w skutek wywołni funkcji EitThred(..), TerminteThred, system opercyjny niszczy proces. To się zdrz rzdko. Przy zkończeniu procesu: Kżdy wątek procesu będzie zkończony. Wszystkie obiekty użytkownik, jk również obiekty GDI (grphic device interfce), będą zwolnione, z kolei obiekty jądr zostną zmknięte (zwolnienie pmięci, stosu, zmknięcie plików). Obiekt jądr proces przechodzi w stn signled. 65

66 Licznik obiektu jądr zmniejsz się o. Przejdźmy do oglądni wątków. Aplikcje, które mją tylko jeden wątek, są plikcjmi jednowątkowymi. Przypuśćmy, że mmy plikcję jednowątkową okno dilogowe z przyciskiem START. Po nciśnięciu n ten przycisk będą uruchomione jkieś obliczeni, przy czym dziłją one n tym smym wątku. W tkim przypdku wszystkie kontrolki dilogu są zblokowne, dopóki obliczeni nie zkończą się żden przycisk dilogowy nie d się ncisnąć. Nie m możliwości przerwni obliczeń (n przykłd, w celu poprwieni dnych wejściowych i ponownego uruchomieni). Pozostje tylko jedn możliwość przerwć wykonnie cłego zdni poprzez menedżer zdń. Dl poprwieni tej wdy trzeb stworzyć plikcję wielowątkową w tki sposób, żeby przy nciśnięciu przycisku START wątek pierwotny stworzył nowy wątek, zdniem którego będzie wykonywnie obliczeń. Terz wątek pierwotny obsługuje okienko dilogu, wątek potomny jedynie liczy. Wątek pierwotny jest wątkiem interfejsowym, poniewż tworzy się go jko plikcję GDI. Z tego powodu on widzi hndle okn, wątek potomny może wysyłć do niego komunikty. Wysyłnie komuniktów jest możliwe tylko do okn plikcji, poniewż m ono hndle, który występuje podobnie jk dres, do którego możn wysłć komunikt. W odróżnieniu od wątków interfejsowych wątki robocze nie mją okn plikcji orz nie mją hndle. Dl tego wątek roboczy może wysłć komunikt wątkowi interfejsowemu, le wątek interfejsowy do wątku roboczego już nie. Njczęściej tkie dwu wątkowe plikcje są tworzone tk, że wątek potomny, który odpowid z obliczeni, jest wątkiem roboczym. Czs od czsu wątek roboczy wysył komunikty wątkowi interfejsowemu, informując go o stnie wykonni zdni obliczeniowego, wątek interfejsowy wyświetl n kontrolkch dilogu tą informcje. Wątek interfejsowy jest włścicielem hndle wątku roboczego, poniewż sm go stworzył. Przy pomocy tego hndle wątek interfejsowy może sterowć przebiegiem wątku roboczego: zwiesić wątek roboczy przy nciśnięciu przycisku PAUSE, obudzić wątek roboczy po zwieszeniu, przykleić wątek roboczy (orz siebie) do procesor fizycznego, zmienić priorytet wątku roboczego, sksowć go przy nciśnięciu n przycisk BREAK itd. Aby dilog szybko regowł n poleceni użytkownik, wątkowi obliczeniowemu nleży obniżyć priorytet o jeden punkt w stosunku do wątku interfejsowego. Wielowątkowość jest to niezbędn skłdow obliczeń równoległych dl rchitektury SMP. Wątek się skłd z: Obiektu jądr, będącego strukturą dnych mjącej z zdnie kierownie wątkiem i przechowywnie dnych sttystycznych. 66

67 Stosu wątku, który wspier prmetry wszystkich funkcji, zmiennych loklnych wątku i kodu zwrcnego wątkiem. Wątek wyzncz kolejność wykonni instrukcji kodu, wykonuje te instrukcje w obszrze przestrzeni dresowej procesu, jk też operuje dnymi, umieszczonymi w przestrzeni dresowej procesu. Jeśli mmy kilk wątków tego smego procesu, ozncz to, że te wątki dzielą pomiędzy sobą przestrzeń dresową. Dw lbo więcej wątków mogą wykonywć ten sm kod i operowć tymi smymi dnymi. Wątki mogą rozdzielć hndles jądr, dl tego, że tbele hndles istnieją dl kżdego procesu, le nie dl kżdego wątku. Tworzenie wątku odbyw się przy wywołniu funkcji CreteThred [MSDN, ()]: HANDLE CreteThred( LPSECURITY_ATTRIBUTES lpthredattributes, SIZE_T dwstcksize, LPTHREAD_START_ROUTINE lpstrtaddress, LPVOID lpprmeter, DWORD dwcretionflgs, LPDWORD lpthredid ); // SD // initil stck size // thred function // thred rgument // cretion option // thred identifier Njwżniejszymi rgumentmi tu są dwstcksize rozmir stosu wątku, lpstrtaddress wskźnik do funkcji wątku, lpprmeter rgument, przekzywny do funkcji wątku, dwcretionflgs flg, któr ustwi, w jkim trybie będzie tworzony wątek. Jeśli dwcretionflgs = wątek od rzu zcznie wykonywć instrukcje funkcji wątku. Jeżeli dwcretionflgs = CREATE_SUSPENDED wątek będzie tworzony w trybie zwieszonym. Tki wątek trzeb później obudzić przez wywołnie funkcji ResumeThred. W przypdku powodzeni funkcj CreteThred zwrc hndle do tworzonego wątku, który służy do sterowni wątków, w przeciwnym wypdku NULL. Kżdy wątek zczyn wykonnie instrukcji kodu funkcji wątku, wskźnik do której jest przekzywny rgumentem lpstrtaddress : DWORD WINAPI ThredFunc(PVOID pvprm) DWORD rtwresult = ; //Coś wykonuje return(dwresult); Tu DWORD jest synonimem unsigned long, PVOID synonimem void *. OS Windows wprowdz swoje włsne nzwy podstwowych typów dnych. Mkro WINAPI ozncz Windows Appliction Progrm Interfce ustwi odpowiednie 67

68 konwencje wywoływni funkcji [MSDN, ()]. ThredFunc jest nzwą funkcji wątku, podn przez progrmistę. Jeśli tworzy się kilk wątków, przy czym kżdy z nich m wykonywć te sme instrukcje kodu, wszystkie te wątki będą używli tej smej funkcji wątku. Przy wykonniu osobnych instrukcji kodu kżdy wątek powinien mieć swoją włsną funkcję wątku, przy czym nzwy tych funkcji wątków powinny być uniklne. Wrz z zkończeniem wykonni instrukcji funkcji wątku, dziłlnie wątku zkończy się też. Funkcj wątku przyjmuje tylko jeden prmetr wskźnik typu void do dnych, które muszą być przekzne wątkowi. Jeśli trzeb przekzć więcej dnych, nleży stworzyć strukturę dnych i umieścić te dne, jko skłdowe struktury. Przy tworzeniu wątku system opercyjny tworzy obiekt jądr "wątek", przydziel pmięć dl stosu wątku w przestrzeni dresowej procesu. Nowy wątek m dostęp do wszystkich hndles obiektu jądr, pmięci procesu orz stosów innych wątków tego smego procesu. Dl tego w zdnich wielowątkowych komunikcj pomiędzy wątkmi jednego procesu jest stosunkowo prost. Podobnie do funkcji min, WinMin funkcj wątku zwrc kod zkończeni. Funkcj wątku jk njbrdziej powinn używć swoich włsnych prmetrów i zmiennych loklnych. Do zmiennych sttycznych i globlnych jednocześnie mogą próbowć uzyskć dostęp kilk wątków. Wtedy dl zbezpieczeni poprwnej wrtości tej zmiennej trzeb użyć synchronizcji. Powoduje to komplikcję kodu, spdek wydjności obliczeń, zmniejszenie niezwodności progrmu. Zmienne loklne i prmetry wątku pozostją umieszczone w jego stosie loklne dne różnych wątków są umieszczone w różnych dresch pmięci. Dostęp do tych dnych z innego wątku tego smego procesu jest możliwy tylko przez progrmistę przy npisniu odpowiedniego kodu. System opercyjny db utomtycznie o wyrównnie obszrów stosów wątkowych do grnic cche-linii procesorów. Z tego wynik, że dl dnych, które służą do zpisu i są zdeklrowne jko zmienne loklne wątku, konflikty w pmięci podręcznej nie powstją. Tblicy o dużym rozmirze nie d się umieścić w stosie wątku. Njprwdopodobniej będą one lokowne dynmicznie i umieszczone w stosie (hep'ie) procesu. Przykłd tworzeni wątków jest podny w progrmie MultThred (złącznik 3). Struktur THREAD_DATA jest przeznczon dl przekzywni dnych wątkom potomnym. W pętli for(ithred=; ithred<nthreds; ithred++) wykonujemy wypełnienie elementu tblicy obiektów typu THREAD_DATA o nzwie tdt. tdt[] jest przeznczone dl wątku potomnego o numerze ip =, tdt[] dl wątku o numerze ip = itd. 68

69 Po utworzeniu wątków potomnych wątek pierwotny powinien zostć zwieszony. Wywołujemy dl tego funkcje WitForMultipleObjects [MSDN, ()]. Wątek potomny po jego utworzeniu (ptrz funkcje wątku ThredFunc ) pobier swój numer ip i wyprowdz w strumień stdout informcje printf("hello from thred ip"); Sleep(); printf(" = %d\n", ip); Ze względu n to, iż kilk wątków w tym smym czsie mogą wyprowdzć swoje dne w ten sm strumień stdout, może powstć niespójność dnych (rys. 3.). Rys. 3. Niepoprwny wynik plikcji wielowątkowej MultThred z powodu brku synchronizcji pomiędzy wątkmi Złóżmy, że jeden wątek zczyn wyprowdzenie dnych i wykonuje instrukcję printf("hello from thred ip"); Po wykonniu tej instrukcji wątek może zostć odłączony od procesor w skutek szeregowni cyklicznego. Drugi wątek zczyn wyprowdzenie swoich dnych i wykonuje tą smą instrukcję. N monitorze powstje: Hello from thred iphello from thred ip Terz drugi wątek może skończyć wykonnie swojego kodu przed tym, jk zostnie odłączony od procesor. Możliwe jest, że znów pierwszy wątek będzie podłączony do procesor i zkończy wyprowdznie swoich dnych, tkże możliwe jest, że trzeci wątek opnuje wspólny resurs stdout. Zchownie progrmu stje nieprzewidywnym. N komputerch jednoprocesorowych tki błąd nie występuje przy kżdym uruchomieniu. Powstje wrżenie, że progrm dził 69

70 poprwnie. Dl tego, żeby sprowokowć niepoprwne dziłnie, wstwimy pomiędzy dwom instrukcjmi printf instrukcję Sleep(), któr powoduje ztrzymnie wykonni wątku o ilość milisekund, podnych jko rgument fktyczny. Przy tym wątek będzie odłączony od procesor przez milisekund. Zdrz się, że od rzu ten sm wątek znów zostje podłączony do tego smego procesor, lecz nie zwsze tk się dzieję. Jeśli progrm jest npisny poprwnie, to żdn prowokcj nie powinn doprowdzić do niestbilnego i niepoprwnego dziłni. Dl poprwieni kodu trzeb umieścić wspólny resurs strumień stdout w sekcją krytyczną. Jest to frgment kodu, dostępny tylko jednemu wątkowi. Wejście do sekcji krytycznej jest kontrolowne przez instrukcję wyjście EnterCriticlSection(&cs); LeveCriticlSection(&cs); Jeśli resurs stdout jest wolny, to zjmuje go dowolny wątek. Żden wątek z pozostłych nie może wejść do sekcji krytycznej dopóki wątek, który zjmuje tą sekcję, nie zwolni ją. Tylko wtedy inny wątek może zjąć tą smą sekcję krytyczną. Wyniki poprwionego kodu są podne n rys Rys. 3.3 Poprwny wynik plikcji wielowątkowej MultThred dostęp do wspólnego resursu stdout jest chroniony sekcją krytyczną Wykonnie wątku możn zkończyć n kilk sposobów.. W chwili, gdy funkcj wątku skończy się wtek smo likwiduje się. Jest to njbrdziej pożądny sposób. Wszystkie obiekty C++ będą poprwnie zniszczone przez wywołnie destruktorów. 7

Zrównoleglenie i przetwarzanie potokowe

Zrównoleglenie i przetwarzanie potokowe Zrównoleglenie i przetwarzanie potokowe Zrównoleglenie wysoka wydajność pozostaje osiągnięta w efekcie jednoczesnego wykonania różnych części zagadnienia. Przetwarzanie potokowe proces jest rozdzielony

Bardziej szczegółowo

- saxpy (scalar α X plus Y)

- saxpy (scalar α X plus Y) Wydjność obliczeń sekwencyjnych. Osobliwości prcy z cche - linimi. Typowe lgorytmy lgebry liniowej i oszcownie możliwości ich przyspieszeni y x y y y Ax C C AB Przypomnieć reguły lgebry liniowej: mnożeni

Bardziej szczegółowo

Wektor kolumnowy m wymiarowy macierz prostokątna o wymiarze n=1 Wektor wierszowy n wymiarowy macierz prostokątna o wymiarze m=1

Wektor kolumnowy m wymiarowy macierz prostokątna o wymiarze n=1 Wektor wierszowy n wymiarowy macierz prostokątna o wymiarze m=1 Rchunek mcierzowy Mcierzą A nzywmy funkcję 2-zmiennych, któr prze liczb nturlnych (i,j) gdzie i = 1,2,3,4.,m; j = 1,2,3,4,n przyporządkowuje dokłdnie jeden element ij. 11 21 A = m1 12 22 m2 1n 2n mn Wymirem

Bardziej szczegółowo

Realizacje zmiennych są niezależne, co sprawia, że ciąg jest ciągiem niezależnych zmiennych losowych,

Realizacje zmiennych są niezależne, co sprawia, że ciąg jest ciągiem niezależnych zmiennych losowych, Klsyczn Metod Njmniejszych Kwdrtów (KMNK) Postć ć modelu jest liniow względem prmetrów (lbo nleży dokonć doprowdzeni postci modelu do liniowości względem prmetrów), Zmienne objśnijące są wielkościmi nielosowymi,

Bardziej szczegółowo

DZIAŁ 2. Figury geometryczne

DZIAŁ 2. Figury geometryczne 1 kl. 6, Scenriusz lekcji Pole powierzchni bryły DZAŁ 2. Figury geometryczne Temt w podręczniku: Pole powierzchni bryły Temt jest przeznczony do relizcji podczs 2 godzin lekcyjnych. Zostł zplnowny jko

Bardziej szczegółowo

Analiza matematyczna i algebra liniowa

Analiza matematyczna i algebra liniowa Anliz mtemtyczn i lgebr liniow Mteriły pomocnicze dl studentów do wykłdów Mcierze liczbowe i wyznczniki. Ukłdy równń liniowych. Mcierze. Wyznczniki. Mcierz odwrotn. Równni mcierzowe. Rząd mcierzy. Ukłdy

Bardziej szczegółowo

Macierz. Wyznacznik macierzy. Układ równań liniowych

Macierz. Wyznacznik macierzy. Układ równań liniowych Temt wykłdu: Mcierz. Wyzncznik mcierzy. Ukłd równń liniowych Kody kolorów: żółty nowe pojęcie pomrńczowy uwg kursyw komentrz * mterił ndobowiązkowy Ann Rjfur, Mtemtyk Zgdnieni. Pojęci. Dziłni n mcierzch.

Bardziej szczegółowo

Dr inż. hab. Siergiej Fialko, IF-PK,

Dr inż. hab. Siergiej Fialko, IF-PK, Dr inż. hab. Siergiej Fialko, IF-PK, http://torus.uck.pk.edu.pl/~fialko sfialko@riad.pk.edu.pl 1 Osobliwości przedmiotu W podanym kursie główna uwaga będzie przydzielona osobliwościom symulacji komputerowych

Bardziej szczegółowo

2. FUNKCJE WYMIERNE Poziom (K) lub (P)

2. FUNKCJE WYMIERNE Poziom (K) lub (P) Kls drug poziom podstwowy 1. SUMY ALGEBRAICZNE Uczeń otrzymuje ocenę dopuszczjącą lub dostteczną, jeśli: rozpoznje jednominy i sumy lgebriczne oblicz wrtości liczbowe wyrżeń lgebricznych redukuje wyrzy

Bardziej szczegółowo

STYLE. TWORZENIE SPISÓW TREŚCI

STYLE. TWORZENIE SPISÓW TREŚCI STYLE. TWORZENIE SPISÓW TREŚCI Ćwiczenie 1 Tworzenie nowego stylu n bzie istniejącego 1. Formtujemy jeden kpit tekstu i zznczmy go (stnowi on wzorzec). 2. Wybiermy Nrzędzi główne, rozwijmy okno Style (lub

Bardziej szczegółowo

Wymagania edukacyjne matematyka klasa 2 zakres podstawowy 1. SUMY ALGEBRAICZNE

Wymagania edukacyjne matematyka klasa 2 zakres podstawowy 1. SUMY ALGEBRAICZNE Wymgni edukcyjne mtemtyk kls 2 zkres podstwowy 1. SUMY ALGEBRAICZNE Uczeń otrzymuje ocenę dopuszczjącą lub dostteczną, jeśli: rozpoznje jednominy i sumy lgebriczne oblicz wrtości liczbowe wyrżeń lgebricznych

Bardziej szczegółowo

Wyrównanie sieci niwelacyjnej

Wyrównanie sieci niwelacyjnej 1. Wstęp Co to jest sieć niwelcyjn Po co ją się wyrównje Co chcemy osiągnąć 2. Metod pośrednicząc Wyrównnie sieci niwelcyjnej Metod pośrednicząc i metod grpow Mmy sieć skłdjącą się z szereg pnktów. Niektóre

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA Mteriły do wykłdu MATEMATYKA DYSKRETNA dl studiów zocznych cz. Progrm wykłdu: KOMBINATORYKA:. Notcj i podstwowe pojęci. Zlicznie funkcji. Permutcje. Podziory zioru. Podziory k-elementowe. Ziory z powtórzenimi

Bardziej szczegółowo

INSTRUKCJA. - Jak rozwiązywać zadania wysoko punktowane?

INSTRUKCJA. - Jak rozwiązywać zadania wysoko punktowane? INSTRUKCJA - Jk rozwiązywć zdni wysoko punktowne? Mturzysto! Zdni wysoko punktowne to tkie, z które możesz zdobyć 4 lub więcej punktów. Zdni z dużą ilość punktów nie zwsze są trudniejsze, często ich punktcj

Bardziej szczegółowo

KONKURS MATEMATYCZNY dla uczniów gimnazjów w roku szkolnym 2012/13. Propozycja punktowania rozwiązań zadań

KONKURS MATEMATYCZNY dla uczniów gimnazjów w roku szkolnym 2012/13. Propozycja punktowania rozwiązań zadań KONKURS MATEMATYCZNY dl uczniów gimnzjów w roku szkolnym 0/ II etp zwodów (rejonowy) 0 listopd 0 r. Propozycj punktowni rozwiązń zdń Uwg: Z kżde poprwne rozwiąznie inne niż przewidzine w propozycji punktowni

Bardziej szczegółowo

PODSTAWY ALGEBRY MACIERZY. Operacje na macierzach

PODSTAWY ALGEBRY MACIERZY. Operacje na macierzach PODSTWY LGEBRY MCIERZY WIERSZ i, KOLUMN (j) Mcierz m,n, gdzie m to ilość wierszy, n ilość kolumn i,j element mcierzy z itego wiersz, jtej kolumny Opercje n mcierzch Równość mcierzy m,n = B m,n. def i,j

Bardziej szczegółowo

MATeMAtyka 3 inf. Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych. Zakres podstawowy i rozszerzony. Dorota Ponczek, Karolina Wej

MATeMAtyka 3 inf. Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych. Zakres podstawowy i rozszerzony. Dorota Ponczek, Karolina Wej Dorot Ponczek, Krolin Wej MATeMAtyk 3 inf Przedmiotowy system ocenini wrz z określeniem wymgń edukcyjnych Zkres podstwowy i rozszerzony Wyróżnione zostły nstępujące wymgni progrmowe: konieczne (K), podstwowe

Bardziej szczegółowo

Matematyka finansowa 10.03.2014 r. Komisja Egzaminacyjna dla Aktuariuszy. LXVI Egzamin dla Aktuariuszy z 10 marca 2014 r. Część I

Matematyka finansowa 10.03.2014 r. Komisja Egzaminacyjna dla Aktuariuszy. LXVI Egzamin dla Aktuariuszy z 10 marca 2014 r. Część I Mtemtyk finnsow.03.2014 r. Komisj Egzmincyjn dl Akturiuszy LXVI Egzmin dl Akturiuszy z mrc 2014 r. Część I Mtemtyk finnsow WERSJA TESTU A Imię i nzwisko osoby egzminownej:... Czs egzminu: 0 minut 1 Mtemtyk

Bardziej szczegółowo

Jest błędem odwołanie się do zmiennej, której nie przypisano wcześniej żadnej wartości.

Jest błędem odwołanie się do zmiennej, której nie przypisano wcześniej żadnej wartości. Zmienne Po nieco intuicyjnych początkch, zjmiemy się obiektmi, n których opier się progrmownie są to zmienne. Zmienne Progrmy operują n zmiennych. Ndwnie im wrtości odbyw się poprzez instrukcję podstwieni.

Bardziej szczegółowo

O pewnych zgadnieniach optymalizacyjnych O pewnych zgadnieniach optymalizacyjnych

O pewnych zgadnieniach optymalizacyjnych O pewnych zgadnieniach optymalizacyjnych Spis tresci 1 Spis tresci 1 W wielu zgdnienich prktycznych brdzo wżne jest znjdownie optymlnego (czyli njlepszego z jkiegoś punktu widzeni) rozwiązni dnego problemu. Dl przykłdu, gdybyśmy chcieli podróżowć

Bardziej szczegółowo

symbol dodatkowy element graficzny kolorystyka typografia

symbol dodatkowy element graficzny kolorystyka typografia Identyfikcj wizuln Fundcji n rzecz Nuki Polskiej 1/00 Elementy podstwowe symbol dodtkowy element grficzny kolorystyk typogrfi Identyfikcj wizuln Fundcji n rzecz Nuki Polskiej 1/01 Elementy podstwowe /

Bardziej szczegółowo

Jest błędem odwołanie się do zmiennej, której nie przypisano wcześniej żadnej wartości.

Jest błędem odwołanie się do zmiennej, której nie przypisano wcześniej żadnej wartości. Zmienne: W progrmie operuje się n zmiennych. Ndwnie im wrtości odbyw się poprzez instrukcję podstwieni. Interpretcj tej instrukcji jest nstępując: zmiennej znjdującej się z lewej strony instrukcji podstwieni

Bardziej szczegółowo

Wymagania edukacyjne matematyka klasa 2b, 2c, 2e zakres podstawowy rok szkolny 2015/2016. 1.Sumy algebraiczne

Wymagania edukacyjne matematyka klasa 2b, 2c, 2e zakres podstawowy rok szkolny 2015/2016. 1.Sumy algebraiczne Wymgni edukcyjne mtemtyk kls 2b, 2c, 2e zkres podstwowy rok szkolny 2015/2016 1.Sumy lgebriczne N ocenę dopuszczjącą: 1. rozpoznje jednominy i sumy lgebriczne 2. oblicz wrtości liczbowe wyrżeń lgebricznych

Bardziej szczegółowo

Macierz. Wyznacznik macierzy. Układ równań liniowych

Macierz. Wyznacznik macierzy. Układ równań liniowych Temt wykłdu: Mcierz. Wyzncznik mcierzy. Ukłd równń liniowych Kody kolorów: Ŝółty nowe pojęcie pomrńczowy uwg kursyw komentrz * mterił ndobowiązkowy Ann Rjfur, Mtemtyk n kierunku Biologi w SGGW Zgdnieni.

Bardziej szczegółowo

Wyznacznikiem macierzy kwadratowej A stopnia n nazywamy liczbę det A określoną następująco:

Wyznacznikiem macierzy kwadratowej A stopnia n nazywamy liczbę det A określoną następująco: Def.8. Wyzncznikiem mcierzy kwdrtowej stopni n nzywmy liczbę det określoną nstępująco:.det.det dl n n det det n det n, gdzie i j ozncz mcierz, którą otrzymujemy z mcierzy przez skreślenie i- tego wiersz

Bardziej szczegółowo

WYKŁAD 5. Typy macierzy, działania na macierzach, macierz układu równań. Podstawowe wiadomości o macierzach

WYKŁAD 5. Typy macierzy, działania na macierzach, macierz układu równań. Podstawowe wiadomości o macierzach Mtemtyk I WYKŁD. ypy mcierzy, dziłni n mcierzch, mcierz ukłdu równń. Podstwowe widomości o mcierzch Ogóln postć ukłdu m równń liniowych lgebricznych z n niewidomymi x x n xn b x x n xn b, niewidome: x,

Bardziej szczegółowo

Wykład 6 Dyfrakcja Fresnela i Fraunhofera

Wykład 6 Dyfrakcja Fresnela i Fraunhofera Wykłd 6 Dyfrkcj Fresnel i Frunhofer Zjwisko dyfrkcji (ugięci) świtł odkrył Grimldi (XVII w). Poleg ono n uginniu się promieni świetlnych przechodzących w pobliżu przeszkody (np. brzeg szczeliny). Wyjśnienie

Bardziej szczegółowo

Kodowanie liczb. Kodowanie stałopozycyjne liczb całkowitych. Niech liczba całkowita a ma w systemie dwójkowym postać: Kod prosty

Kodowanie liczb. Kodowanie stałopozycyjne liczb całkowitych. Niech liczba całkowita a ma w systemie dwójkowym postać: Kod prosty Kodownie licz Kodownie stłopozycyjne licz cłkowitych Niech licz cłkowit m w systemie dwójkowym postć: nn 0 Wtedy może yć on przedstwion w postci ( n+)-itowej przy pomocy trzech niżej zdefiniownych kodów

Bardziej szczegółowo

Grażyna Nowicka, Waldemar Nowicki BADANIE RÓWNOWAG KWASOWO-ZASADOWYCH W ROZTWORACH ELEKTROLITÓW AMFOTERYCZNYCH

Grażyna Nowicka, Waldemar Nowicki BADANIE RÓWNOWAG KWASOWO-ZASADOWYCH W ROZTWORACH ELEKTROLITÓW AMFOTERYCZNYCH Ćwiczenie Grżyn Nowick, Wldemr Nowicki BDNIE RÓWNOWG WSOWO-ZSDOWYC W ROZTWORC ELETROLITÓW MFOTERYCZNYC Zgdnieni: ktywność i współczynnik ktywności skłdnik roztworu. ktywność jonów i ktywność elektrolitu.

Bardziej szczegółowo

Propozycja przedmiotowego systemu oceniania wraz z określeniem wymagań edukacyjnych (zakres podstawowy)

Propozycja przedmiotowego systemu oceniania wraz z określeniem wymagań edukacyjnych (zakres podstawowy) Propozycj przedmiotowego systemu ocenini wrz z określeniem wymgń edukcyjnych (zkres podstwowy) Proponujemy, by omwijąc dne zgdnienie progrmowe lub rozwiązując zdnie, nuczyciel określł do jkiego zkresu

Bardziej szczegółowo

Temat lekcji Zakres treści Osiągnięcia ucznia

Temat lekcji Zakres treści Osiągnięcia ucznia ln wynikowy kls 2c i 2e - Jolnt jąk Mtemtyk 2. dl liceum ogólnoksztłcącego, liceum profilownego i technikum. sztłcenie ogólne w zkresie podstwowym rok szkolny 2015/2016 Wymgni edukcyjne określjące oceny:

Bardziej szczegółowo

usuwa niewymierność z mianownika wyrażenia typu

usuwa niewymierność z mianownika wyrażenia typu Wymgni edukcyjne n poszczególne oceny z mtemtyki Kls pierwsz zkres podstwowy. LICZBY RZECZYWISTE podje przykłdy liczb: nturlnych, cłkowitych, wymiernych, niewymiernych, pierwszych i złożonych orz przyporządkowuje

Bardziej szczegółowo

Karta oceny merytorycznej wniosku o dofinansowanie projektu innowacyjnego testującego składanego w trybie konkursowym w ramach PO KL

Karta oceny merytorycznej wniosku o dofinansowanie projektu innowacyjnego testującego składanego w trybie konkursowym w ramach PO KL Złącznik nr 5 Krt oceny merytorycznej Krt oceny merytorycznej wniosku o dofinnsownie projektu innowcyjnego testującego skłdnego w trybie konkursowym w rmch PO KL NR WNIOSKU KSI: WND-POKL. INSTYTUCJA PRZYJMUJĄCA

Bardziej szczegółowo

Wymagania na ocenę dopuszczającą z matematyki klasa II Matematyka - Babiański, Chańko-Nowa Era nr prog. DKOS 4015-99/02

Wymagania na ocenę dopuszczającą z matematyki klasa II Matematyka - Babiański, Chańko-Nowa Era nr prog. DKOS 4015-99/02 Wymgni n ocenę dopuszczjącą z mtemtyki kls II Mtemtyk - Bbiński, Chńko-Now Er nr prog. DKOS 4015-99/02 Temt lekcji Zkres treści Osiągnięci uczni WIELOMIANY 1. Stopień i współczynniki wielominu 2. Dodwnie

Bardziej szczegółowo

Wymagania kl. 2. Uczeń:

Wymagania kl. 2. Uczeń: Wymgni kl. 2 Zkres podstwowy Temt lekcji Zkres treści Osiągnięci uczni. SUMY ALGEBRAICZNE. Sumy lgebriczne definicj jednominu pojęcie współczynnik jednominu porządkuje jednominy pojęcie sumy lgebricznej

Bardziej szczegółowo

Oznaczenia: K wymagania konieczne; P wymagania podstawowe; R wymagania rozszerzające; D wymagania dopełniające; W wymagania wykraczające

Oznaczenia: K wymagania konieczne; P wymagania podstawowe; R wymagania rozszerzające; D wymagania dopełniające; W wymagania wykraczające Wymgni edukcyjne z mtemtyki ls 2 b lo Zkres podstwowy Oznczeni: wymgni konieczne; wymgni podstwowe; R wymgni rozszerzjące; D wymgni dopełnijące; W wymgni wykrczjące Temt lekcji Zkres treści Osiągnięci

Bardziej szczegółowo

Komisja Egzaminacyjna dla Aktuariuszy LIX Egzamin dla Aktuariuszy z 12 marca 2012 r. Część I Matematyka finansowa

Komisja Egzaminacyjna dla Aktuariuszy LIX Egzamin dla Aktuariuszy z 12 marca 2012 r. Część I Matematyka finansowa Mtemtyk finnsow 12.03.2012 r. Komisj Egzmincyjn dl Akturiuszy LIX Egzmin dl Akturiuszy z 12 mrc 2012 r. Część I Mtemtyk finnsow WERSJA TESTU A Imię i nzwisko osoby egzminownej:... Czs egzminu: 100 minut

Bardziej szczegółowo

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI POZIOM PODSTAWOWY Arkusz I Instrukcj dl zdjącego 1. Sprwdź, czy rkusz egzmincyjny zwier 8 stron (zdni 1 3). Ewentulny brk zgłoś przewodniczącemu zespołu ndzorującego

Bardziej szczegółowo

Rozwiązania maj 2017r. Zadania zamknięte

Rozwiązania maj 2017r. Zadania zamknięte Rozwiązni mj 2017r. Zdni zmknięte Zd 1. 5 16 5 2 5 2 Zd 2. 5 2 27 2 23 2 2 2 2 Zd 3. 2log 3 2log 5log 3 log 5 log 9 log 25log Zd. 120% 8910 1,2 8910 2,2 8910 $%, 050 Zd 5. Njłtwiej jest zuwżyć że dl 1

Bardziej szczegółowo

Równania i nierówności kwadratowe z jedną niewiadomą

Równania i nierówności kwadratowe z jedną niewiadomą 50 REPETYTORIUM 31 Równni i nierówności kwdrtowe z jedną niewidomą Równnie wielominowe to równość dwóch wyrżeń lgebricznych Kżd liczb, któr po podstwieniu w miejscu niewidomej w równniu o jednej niewidomej

Bardziej szczegółowo

Wyk lad 1 Podstawowe wiadomości o macierzach

Wyk lad 1 Podstawowe wiadomości o macierzach Wyk ld 1 Podstwowe widomości o mcierzch Oznczeni: N {1 2 3 } - zbiór liczb nturlnych N 0 {0 1 2 } R - ci lo liczb rzeczywistych n i 1 + 2 + + n i1 1 Określenie mcierzy Niech m i n bed dowolnymi liczbmi

Bardziej szczegółowo

WEKTORY skalary wektory W ogólnym przypadku, aby określić wektor, należy znać:

WEKTORY skalary wektory W ogólnym przypadku, aby określić wektor, należy znać: WEKTORY Wśród wielkości fizycznych występujących w fizyce możn wyróżnić sklry i wektory. Aby określić wielkość sklrną, wystrczy podć tylko jedną liczbę. Wielkościmi tkimi są ms, czs, tempertur, objętość

Bardziej szczegółowo

Wykład 2. Granice, ciągłość, pochodna funkcji i jej interpretacja geometryczna

Wykład 2. Granice, ciągłość, pochodna funkcji i jej interpretacja geometryczna 1 Wykłd Grnice, ciągłość, pocodn unkcji i jej interpretcj geometryczn.1 Grnic unkcji. Grnic lewostronn i grnic prwostronn unkcji Deinicj.1 Mówimy, że liczb g jest grnicą lewostronną unkcji w punkcie =,

Bardziej szczegółowo

WEKTORY skalary wektory W ogólnym przypadku, aby określić wektor, należy znać:

WEKTORY skalary wektory W ogólnym przypadku, aby określić wektor, należy znać: WEKTORY Wśród wielkości fizycznych występujących w fizyce możn wyróżnić sklry i wektory. Aby określić wielkość sklrną, wystrczy podć tylko jedną liczbę. Wielkościmi tkimi są ms, czs, tempertur, objętość

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE IIc ZAKRES PODSTAWOWY I ROZSZERZONY

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE IIc ZAKRES PODSTAWOWY I ROZSZERZONY WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE IIc ZAKRES PODSTAWOWY I ROZSZERZONY. JĘZYK MATEMATYKI oblicz wrtość bezwzględną liczby rzeczywistej stosuje interpretcję geometryczną wrtości bezwzględnej liczby

Bardziej szczegółowo

O RELACJACH MIĘDZY GRUPĄ OBROTÓW, A GRUPĄ PERMUTACJI

O RELACJACH MIĘDZY GRUPĄ OBROTÓW, A GRUPĄ PERMUTACJI ZESZYTY NAUKOWE 7-45 Zenon GNIAZDOWSKI O RELACJACH MIĘDZY GRUPĄ OBROTÓW, A GRUPĄ PERMUTACJI Streszczenie W prcy omówiono grupę permutcji osi krtezjńskiego ukłdu odniesieni reprezentowną przez mcierze permutcji,

Bardziej szczegółowo

Zadania. I. Podzielność liczb całkowitych

Zadania. I. Podzielność liczb całkowitych Zdni I. Podzielność liczb cłkowitych. Pewn liczb sześciocyfrow kończy się cyfrą 5. Jeśli tę cyfrę przestwimy n miejsce pierwsze ze strony lewej to otrzymmy nową liczbę cztery rzy większą od poprzedniej.

Bardziej szczegółowo

WYZNACZANIE OGNISKOWEJ SOCZEWEK CIENKICH ZA POMOCĄ ŁAWY OPTYCZNEJ

WYZNACZANIE OGNISKOWEJ SOCZEWEK CIENKICH ZA POMOCĄ ŁAWY OPTYCZNEJ Ćwiczenie 9 WYZNACZANIE OGNISKOWEJ SOCZEWEK CIENKICH ZA POMOCĄ ŁAWY OPTYCZNEJ 9.. Opis teoretyczny Soczewką seryczną nzywmy przezroczystą bryłę ogrniczoną dwom powierzchnimi serycznymi o promienich R i

Bardziej szczegółowo

Konkurs dla gimnazjalistów Etap szkolny 9 grudnia 2016 roku

Konkurs dla gimnazjalistów Etap szkolny 9 grudnia 2016 roku Konkurs dl gimnzjlistów Etp szkolny 9 grudni 016 roku Instrukcj dl uczni 1. W zdnich o numerch od 1. do 1. są podne cztery wrinty odpowiedzi: A, B, C, D. Dokłdnie jedn z nich jest poprwn. Poprwne odpowiedzi

Bardziej szczegółowo

Programy współbieżne

Programy współbieżne Specyfikownie i weryfikownie Progrmy współieżne Mrek A. Bednrczyk, www.ipipn.gd.pl Litertur wiele prc dostępnych w Sieci np.: http://www.wikipedi.org/ Specyfikownie i weryfikcj progrmy współieżne PJP Prosty

Bardziej szczegółowo

Badanie regularności w słowach

Badanie regularności w słowach Przypdek sekwencyjny Mrcin Piątkowski Wydził Mtemtyki i Informtyki Uniwersytet Mikołj Kopernik Edsger Wybe Dijkstr (1930 2002) Computer science is no more bout computers thn stronomy is bout telescopes,

Bardziej szczegółowo

Wymagania edukacyjne z matematyki

Wymagania edukacyjne z matematyki Wymgni edukcyjne z mtemtyki LICEUM OGÓLNOKSZTAŁCĄCE Kls II Poniżej przedstwiony zostł podził wymgń edukcyjnych n poszczególne oceny. Wiedz i umiejętności konieczne do opnowni (K) to zgdnieni, które są

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego 1/3 Podstwy progrmowni oiektowego emil: m.tedzki@p.edu.pl stron: http://rgorn.p.ilystok.pl/~tedzki/ Mrek Tędzki Wymgni wstępne: Wskzn yły znjomość podstw progrmowni strukturlnego (w dowolnym języku). Temty

Bardziej szczegółowo

4. RACHUNEK WEKTOROWY

4. RACHUNEK WEKTOROWY 4. RACHUNEK WEKTOROWY 4.1. Wektor zczepiony i wektor swoodny Uporządkowną prę punktów (A B) wyznczjącą skierowny odcinek o początku w punkcie A i końcu w punkcie B nzywmy wektorem zczepionym w punkcie

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY VIII w roku szkolnym 2015/2016

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY VIII w roku szkolnym 2015/2016 WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY VIII w roku szkolnym 015/016 oprcowł: Dnut Wojcieszek n ocenę dopuszczjącą rysuje wykres funkcji f ( ) i podje jej włsności sprwdz lgebricznie, czy dny punkt

Bardziej szczegółowo

Szczegółowe wymagania edukacyjne z matematyki, klasa 2C, poziom podstawowy

Szczegółowe wymagania edukacyjne z matematyki, klasa 2C, poziom podstawowy Szczegółowe wymgni edukcyjne z mtemtyki, kls 2C, poziom podstwowy Wymgni konieczne () dotyczą zgdnieo elementrnych, stnowiących swego rodzju podstwę, ztem powinny byd opnowne przez kżdego uczni. Wymgni

Bardziej szczegółowo

Nauki ścisłe priorytetem społeczeństwa opartego na wiedzy Zbiór scenariuszy Mój przedmiot matematyka

Nauki ścisłe priorytetem społeczeństwa opartego na wiedzy Zbiór scenariuszy Mój przedmiot matematyka Stron Wstęp Zbiór Mój przedmiot mtemtyk jest zestwem scenriuszy przeznczonych dl uczniów szczególnie zinteresownych mtemtyką. Scenriusze mogą być wykorzystywne przez nuczycieli zrówno n typowych zjęcich

Bardziej szczegółowo

Prosta metoda sprawdzania fundamentów ze względu na przebicie

Prosta metoda sprawdzania fundamentów ze względu na przebicie Konstrkcje Elementy Mteriły Prost metod sprwdzni fndmentów ze względ n przebicie Prof dr b inż Micł Knff, Szkoł Główn Gospodrstw Wiejskiego w Wrszwie, dr inż Piotr Knyzik, Politecnik Wrszwsk 1 Wprowdzenie

Bardziej szczegółowo

y - saxpy (scalar α X plus Y)

y - saxpy (scalar α X plus Y) Wydjność obliczeń sekwencyjnych. Osobliwości prcy z cche - linimi. Typowe lgorytmy lgebry liniowej i oszcownie możliwości ich przyspieszeni y x y - sxpy (sclr α X plus Y) y y Ax C C AB Przypomnieć reguły

Bardziej szczegółowo

Komisja Egzaminacyjna dla Aktuariuszy LII Egzamin dla Aktuariuszy z 15 marca 2010 r. Część I Matematyka finansowa

Komisja Egzaminacyjna dla Aktuariuszy LII Egzamin dla Aktuariuszy z 15 marca 2010 r. Część I Matematyka finansowa Mtemtyk finnsow 15.0.010 r. Komisj Egzmincyjn dl Akturiuszy LII Egzmin dl Akturiuszy z 15 mrc 010 r. Część I Mtemtyk finnsow WERSJA TESTU A Imię i nzwisko osoy egzminownej:... Czs egzminu: 100 minut 1

Bardziej szczegółowo

Katalog wymagań programowych na poszczególne stopnie szkolne. Matematyka. Poznać, zrozumieć

Katalog wymagań programowych na poszczególne stopnie szkolne. Matematyka. Poznać, zrozumieć Ktlog wymgń progrmowych n poszczególne stopnie szkolne Mtemtyk. Poznć, zrozumieć Ksztłcenie w zkresie podstwowym. Kls 2 Poniżej podjemy umiejętności, jkie powinien zdobyć uczeń z kżdego dziłu, by uzyskć

Bardziej szczegółowo

PRZEDMIOTOWY SYSTEM OCENIANIA Z JĘZYKÓW OBCYCH w Gimnazjum nr 2 im. ks. Stanisława Konarskiego nr 2 w Łukowie

PRZEDMIOTOWY SYSTEM OCENIANIA Z JĘZYKÓW OBCYCH w Gimnazjum nr 2 im. ks. Stanisława Konarskiego nr 2 w Łukowie I. ZASADY OGÓLNE PRZEDMIOTOWY SYSTEM OCENIANIA Z JĘZYKÓW OBCYCH w Gimnzjum nr 2 im. ks. Stnisłw Konrskiego nr 2 w Łukowie 1. W Gimnzjum nr 2 w Łukowie nuczne są: język ngielski - etp educyjny III.1 język

Bardziej szczegółowo

Metoda sił jest sposobem rozwiązywania układów statycznie niewyznaczalnych, czyli układów o nadliczbowych więzach (zewnętrznych i wewnętrznych).

Metoda sił jest sposobem rozwiązywania układów statycznie niewyznaczalnych, czyli układów o nadliczbowych więzach (zewnętrznych i wewnętrznych). Metod sił jest sposoem rozwiązywni ukłdów sttycznie niewyznczlnych, czyli ukłdów o ndliczowych więzch (zewnętrznych i wewnętrznych). Sprowdz się on do rozwiązni ukłdu sttycznie wyznczlnego (ukłd potwowy

Bardziej szczegółowo

Przedmiotowy system oceniania z matematyki wraz z określeniem wymagań edukacyjnych (zakres podstawowy) Klasa II LO

Przedmiotowy system oceniania z matematyki wraz z określeniem wymagań edukacyjnych (zakres podstawowy) Klasa II LO I Postnowieni ogólne Przedmiotowy system ocenini z mtemtyki wrz z określeniem wymgń edukcyjnych (zkres podstwowy) Kls II LO 1. Wrunkiem uzyskni pozytywnej oceny semestrlnej z mtemtyki jest: ) zliczenie

Bardziej szczegółowo

Przedmiotowy system oceniania z matematyki wraz z określeniem wymagań edukacyjnych (zakres podstawowy) Klasa II TAK

Przedmiotowy system oceniania z matematyki wraz z określeniem wymagań edukacyjnych (zakres podstawowy) Klasa II TAK I Postnowieni ogólne Przedmiotowy system ocenini z mtemtyki wrz z określeniem wymgń edukcyjnych (zkres podstwowy) Kls II TAK 1. Wrunkiem uzyskni pozytywnej oceny semestrlnej z mtemtyki jest: ) zliczenie

Bardziej szczegółowo

2. PODSTAWY STATYKI NA PŁASZCZYŹNIE

2. PODSTAWY STATYKI NA PŁASZCZYŹNIE M. DSTY STTYKI N ŁSZZYŹNIE. DSTY STTYKI N ŁSZZYŹNIE.. Zsdy dynmiki Newton Siłą nzywmy wektorową wielkość, któr jest mirą mechnicznego oddziływni n ciło ze strony innych cił. dlszej części ędziemy rozptrywć

Bardziej szczegółowo

Układy równań liniowych Macierze rzadkie

Układy równań liniowych Macierze rzadkie wr zesie ń SciLb w obliczenich numerycznych - część Sljd Ukłdy równń liniowych Mcierze rzdkie wr zesie ń SciLb w obliczenich numerycznych - część Sljd Pln zjęć. Zdnie rozwiązni ukłdu równń liniowych..

Bardziej szczegółowo

Zastosowanie multimetrów cyfrowych do pomiaru podstawowych wielkości elektrycznych

Zastosowanie multimetrów cyfrowych do pomiaru podstawowych wielkości elektrycznych Zstosownie multimetrów cyfrowych do pomiru podstwowych wielkości elektrycznych Cel ćwiczeni Celem ćwiczeni jest zpoznnie się z możliwościmi pomirowymi współczesnych multimetrów cyfrowych orz sposobmi wykorzystni

Bardziej szczegółowo

2. Tensometria mechaniczna

2. Tensometria mechaniczna . Tensometri mechniczn Wstęp Tensometr jk wskzywłby jego nzw to urządzenie służące do pomiru nprężeń. Jk jednk widomo, nprężeni nie są wielkościmi mierzlnymi i stnowią jedynie brdzo wygodne pojęcie mechniki

Bardziej szczegółowo

f(x)dx (1.7) b f(x)dx = F (x) = F (b) F (a) (1.2)

f(x)dx (1.7) b f(x)dx = F (x) = F (b) F (a) (1.2) Cłk oznczon Cłkę oznczoną będziemy zpisywli jko f(x)dx (.) z fnkcji f(x), któr jest ogrniczon w przedzile domkniętym [, b]. Jk obliczyć cłkę oznczoną? Obliczmy njpierw cłkę nieoznczoną z fnkcji f(x), co

Bardziej szczegółowo

Klucz odpowiedzi do zadań zamkniętych i schemat oceniania zadań otwartych

Klucz odpowiedzi do zadań zamkniętych i schemat oceniania zadań otwartych Klucz odpowiedzi do zdń zmkniętc i scemt ocenini zdń otwrtc Klucz odpowiedzi do zdń zmkniętc 4 7 9 0 4 7 9 0 D D D Scemt ocenini zdń otwrtc Zdnie (pkt) Rozwiąż nierówność x x 0 Oliczm wróżnik i miejsc

Bardziej szczegółowo

CAŁKOWANIE NUMERYCZNE

CAŁKOWANIE NUMERYCZNE Wprowdzenie Kwdrtury węzły równoodległe Kwdrtury Guss Wzory sumcyjne Trnsport, studi niestcjonrne I stopni, semestr I rok kdemicki 01/013 Instytut L-5, Wydził Inżynierii Lądowej, Politechnik Krkowsk Ew

Bardziej szczegółowo

PODSTAWY BAZ DANYCH Wykład 3 2. Pojęcie Relacyjnej Bazy Danych

PODSTAWY BAZ DANYCH Wykład 3 2. Pojęcie Relacyjnej Bazy Danych PODSTAWY BAZ DANYCH Wykłd 3 2. Pojęcie Relcyjnej Bzy Dnych 2005/2006 Wykłd "Podstwy z dnych" 1 Rozkłdlno dlność schemtów w relcyjnych Przykłd. Relcj EGZ(U), U := { I, N, P, O }, gdzie I 10 10 11 N f f

Bardziej szczegółowo

Algebra Boola i podstawy systemów liczbowych. Ćwiczenia z Teorii Układów Logicznych, dr inż. Ernest Jamro. 1. System dwójkowy reprezentacja binarna

Algebra Boola i podstawy systemów liczbowych. Ćwiczenia z Teorii Układów Logicznych, dr inż. Ernest Jamro. 1. System dwójkowy reprezentacja binarna lger Bool i podstwy systemów liczowych. Ćwiczeni z Teorii Ukłdów Logicznych, dr inż. Ernest Jmro. System dwójkowy reprezentcj inrn Ukłdy logiczne operują tylko n dwóch stnch ozncznymi jko zero (stn npięci

Bardziej szczegółowo

załącznik nr 3 do uchwały nr V-38-11 Rady Miejskiej w Andrychowie z dnia 24 lutego 2011 r.

załącznik nr 3 do uchwały nr V-38-11 Rady Miejskiej w Andrychowie z dnia 24 lutego 2011 r. złącznik nr 3 do uchwły nr V-38-11 Rdy Miejskiej w Andrychowie z dni 24 lutego 2011 r. ROZSTRZYGNIĘCIE O SPOSOBIE ROZPATRZENIA UWAG WNIESIONYCH DO WYŁOŻONEGO DO PUBLICZNEGO WGLĄDU PROJEKTU ZMIANY MIEJSCOWEGO

Bardziej szczegółowo

Bardzo krótki wstęp do elektroniki cyfrowej

Bardzo krótki wstęp do elektroniki cyfrowej Brdzo krótki wstęp do elektroniki cyfrowej Słwomir Mmic http://min5.mu.edu.pl/~zfp/sm/home.html Pln ) Ukłdy logiczne b) Algebr Boole i jej relizcj sprzętow c) Brmki są dwie? d) Prosty przykłd sumtor e)

Bardziej szczegółowo

Matematyka II. Bezpieczeństwo jądrowe i ochrona radiologiczna Semestr letni 2018/2019 Wykład 1

Matematyka II. Bezpieczeństwo jądrowe i ochrona radiologiczna Semestr letni 2018/2019 Wykład 1 Mtemtyk II Bezpieczeństwo jądrowe i ochron rdiologiczn Semestr letni 2018/2019 Wykłd 1 Zsdy współprcy przypomnienie Wykłdy są nieobowiązkowe, le Egzmin: pytni teoretyczne z łtwymi ćwiczenimi (będzie list)

Bardziej szczegółowo

Maciej Grzesiak. Iloczyn skalarny. 1. Iloczyn skalarny wektorów na płaszczyźnie i w przestrzeni. a b = a b cos ϕ. j) (b x. i + b y

Maciej Grzesiak. Iloczyn skalarny. 1. Iloczyn skalarny wektorów na płaszczyźnie i w przestrzeni. a b = a b cos ϕ. j) (b x. i + b y Mciej Grzesik Iloczyn sklrny. Iloczyn sklrny wektorów n płszczyźnie i w przestrzeni Iloczyn sklrny wektorów i b określmy jko b = b cos ϕ. Bezpośrednio z definicji iloczynu sklrnego mmy, że i i = j j =

Bardziej szczegółowo

WYMAGANIA I KRYTERIA OCENIANIA Z MATEMATYKI W 3 LETNIM LICEUM OGÓLNOKSZTAŁCĄCYM

WYMAGANIA I KRYTERIA OCENIANIA Z MATEMATYKI W 3 LETNIM LICEUM OGÓLNOKSZTAŁCĄCYM WYMAGANIA I KRYTERIA OCENIANIA Z MATEMATYKI W 3 LETNIM LICEUM OGÓLNOKSZTAŁCĄCYM Kls drug A, B, C, D, E, G, H zkres podstwowy 1. FUNKCJA LINIOWA rozpoznje funkcję liniową n podstwie wzoru lub wykresu rysuje

Bardziej szczegółowo

Karta oceny merytorycznej wniosku o dofinansowanie projektu konkursowego PO KL 1

Karta oceny merytorycznej wniosku o dofinansowanie projektu konkursowego PO KL 1 Złącznik 3 Krt oceny merytorycznej wniosku o dofinnsownie konkursowego PO KL 1 NR WNIOSKU KSI: WND-POKL. INSTYTUCJA PRZYJMUJĄCA WNIOSEK:. NUMER KONKURSU 2/POKL/8.1.1/2010 TYTUŁ PROJEKTU:... SUMA KONTROLNA

Bardziej szczegółowo

Pochodne i całki, macierze i wyznaczniki

Pochodne i całki, macierze i wyznaczniki Cłk oznczon Cłk niewłściw Wzór Tylor Mcierze Pochodne i cłki, mcierze i wyznczniki Stnisłw Jworski Ktedr Ekonometrii i Sttystyki Zkłd Sttystyki Stnisłw Jworski Pochodne i cłki, mcierze i wyznczniki Cłk

Bardziej szczegółowo

Scenariusz lekcji matematyki w kl. VI.

Scenariusz lekcji matematyki w kl. VI. Alin Grodzk Scenriusz lekcji mtemtyki w kl. VI. Temt lekcji: Pol figur płskich - powtórzenie. Celem lekcji jest rozwijnie umiejętności rozpoznwni i klsyfikowni wielokątów, obliczni pól figur orz utrwlnie

Bardziej szczegółowo

WENTYLACJA PRZESTRZENI POTENCJALNIE ZAGROŻONYCH WYBUCHEM MIESZANIN GAZOWYCH

WENTYLACJA PRZESTRZENI POTENCJALNIE ZAGROŻONYCH WYBUCHEM MIESZANIN GAZOWYCH Ochron przeciwwybuchow Michł Świerżewski WENTYLACJA PRZESTRZENI POTENCJALNIE ZAGROŻONYCH WYBUCHEM MIESZANIN GAZOWYCH 1. Widomości ogólne Zgodnie z postnowienimi rozporządzeni Ministr Sprw Wewnętrznych

Bardziej szczegółowo

Karta oceny merytorycznej wniosku o dofinansowanie projektu konkursowego PO KL 1

Karta oceny merytorycznej wniosku o dofinansowanie projektu konkursowego PO KL 1 Złącznik nr 3 Krt oceny merytorycznej wniosku o dofinnsownie projektu konkursowego PO KL Krt oceny merytorycznej wniosku o dofinnsownie projektu konkursowego PO KL 1 NR WNIOSKU KSI: POKL.05.02.01 00../..

Bardziej szczegółowo

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Akdemi órniczo-hutnicz im. Stnisłw Stszic w Krkowie Wydził Elektrotechniki, Automtyki, Informtyki i Inżynierii Biomedycznej Ktedr Elektrotechniki i Elektroenergetyki Rozprw Doktorsk Numeryczne lgorytmy

Bardziej szczegółowo

Materiały pomocnicze do ćwiczeń z przedmiotu: Ogrzewnictwo, wentylacja i klimatyzacja II. Klimatyzacja

Materiały pomocnicze do ćwiczeń z przedmiotu: Ogrzewnictwo, wentylacja i klimatyzacja II. Klimatyzacja Mteriły pomocnicze do ćwiczeń z przedmiotu: Orzewnictwo, wentylcj i klimtyzcj II. Klimtyzcj Rozdził 1 Podstwowe włsności powietrz jko nośnik ciepł mr inż. Anieszk Sdłowsk-Słę Mteriły pomocnicze do klimtyzcji.

Bardziej szczegółowo

CAŁKOWANIE NUMERYCZNE

CAŁKOWANIE NUMERYCZNE Wprowdzenie Kwdrtury węzły równoodległe Kwdrtury Guss Wzory sumcyjne Trnsport, studi niestcjonrne I stopni, semestr I Instytut L-5, Wydził Inżynierii Lądowej, Politechnik Krkowsk Ew Pbisek Adm Wostko Wprowdzenie

Bardziej szczegółowo

Od lewej: piramida Chefrena, Wielki Sfinks, piramida Cheopsa.

Od lewej: piramida Chefrena, Wielki Sfinks, piramida Cheopsa. 1. Pirmidiotologi. W obfitej literturze przedmiotu podje się, że pirmid Ceops, lub też z ngielsk Wielk Pirmid (te Gret Pyrmid), zwier w swej konstrukcji pełną i szczegółową istorię rodzju ludzkiego od

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA POSZCZEGÓLNYCH ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI POZIOM PODSTAWOWY KLASA 2

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA POSZCZEGÓLNYCH ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI POZIOM PODSTAWOWY KLASA 2 WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA POSZCZEGÓLNYCH ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI POZIOM PODSTAWOWY KLASA 2 1. SUMY ALGEBRAICZNE rozpoznje jednominy i sumy lgebriczne

Bardziej szczegółowo

Modelowanie i obliczenia techniczne. Metody numeryczne w modelowaniu: Różniczkowanie i całkowanie numeryczne

Modelowanie i obliczenia techniczne. Metody numeryczne w modelowaniu: Różniczkowanie i całkowanie numeryczne Modelownie i obliczeni techniczne Metody numeryczne w modelowniu: Różniczkownie i cłkownie numeryczne Pochodn unkcji Pochodn unkcji w punkcie jest deiniown jko grnic ilorzu różnicowego (jeżeli istnieje):

Bardziej szczegółowo

PEWNIK DEDEKINDA i jego najprostsze konsekwencje

PEWNIK DEDEKINDA i jego najprostsze konsekwencje PEWNIK DEDEKINDA i jego njprostsze konsekwencje W rozdzile ósmym stwierdziliśmy, że z podnych tm pewników nie wynik istnienie pierwistków z liczb rzeczywistych. Uzupe lnimy terz liste pewników jeszcze

Bardziej szczegółowo

Równania nieliniowe. x i 1

Równania nieliniowe. x i 1 MN 08 Równni nieliniowe Wprowdzenie Podstwowe pytni 1. Pytnie: Czy komputer umie rozwiązywć równni nieliniowe f(x) = 0? Odpowiedź (uczciw): nie. 2. P: To jk on to robi? O: Dokłdnie tk, jk przy cłkowniu

Bardziej szczegółowo

Podstawy Techniki Cyfrowej Układy komutacyjne

Podstawy Techniki Cyfrowej Układy komutacyjne Podstwy Techniki Cyfrowej Ukłdy komutcyjne Ukłdy kombincyjne, umożliwijące przełącznie (komutcję) sygnłów cyfrowych, nzyw się ukłdmi ukłdmi komutcyjnymi. Do podstwowych ukłdów komutcyjnych zlicz się multipleksery

Bardziej szczegółowo

Wymagania na poszczególne oceny z matematyki w Zespole Szkół im. St. Staszica w Pile. Kl. II poziom podstawowy

Wymagania na poszczególne oceny z matematyki w Zespole Szkół im. St. Staszica w Pile. Kl. II poziom podstawowy Wymgni n poszczególne oceny z mtemtyki w Zespole Szkół im. St. Stszic w Pile 1. SUMY ALGEBRAICZNE Kl. II poziom podstwowy Uczeń otrzymuje ocenę dopuszczjącą, jeśli: rozpoznje jednominy i sumy lgebriczne

Bardziej szczegółowo

Fizyka. Kurs przygotowawczy. na studia inżynierskie. mgr Kamila Haule

Fizyka. Kurs przygotowawczy. na studia inżynierskie. mgr Kamila Haule Fizyk Kurs przygotowwczy n studi inżynierskie mgr Kmil Hule Dzień 3 Lbortorium Pomir dlczego mierzymy? Pomir jest nieodłączną częścią nuki. Stopień znjomości rzeczy często wiąże się ze sposobem ich pomiru.

Bardziej szczegółowo

MATURA 2014 z WSiP. Zasady oceniania zadań

MATURA 2014 z WSiP. Zasady oceniania zadań MATURA z WSiP Mtemtyk Poziom podstwowy Zsdy ocenini zdń Copyright by Wydwnictw Szkolne i Pedgogiczne sp. z o.o., Wrszw Krtotek testu Numer zdni 6 7 8 9 6 7 8 9 Uczeń: Sprwdzn umiejętność (z numerem stndrdu)

Bardziej szczegółowo

ZADANIA OTWARTE. Są więc takie same. Trzeba jeszcze pokazać, że wynoszą one 2b, gdyż taka jest długość krawędzi dwudziestościanu.

ZADANIA OTWARTE. Są więc takie same. Trzeba jeszcze pokazać, że wynoszą one 2b, gdyż taka jest długość krawędzi dwudziestościanu. ZADANIA OTWARTE ZADANIE 1 DWUDZIESTOŚCIAN FOREMNY Wiemy, że z trzech złotych prostokątów możn skonstruowć dwudziestościn foremny. Wystrczy wykzć, że długości boków trójkąt ABC n rysunku obok są równe.

Bardziej szczegółowo

Załącznik nr 3 do PSO z matematyki

Załącznik nr 3 do PSO z matematyki Złącznik nr 3 do PSO z mtemtyki Wymgni n poszczególne oceny szkolne z mtemtyki n poziomie podstwowym Chrkterystyk wymgń n poszczególne oceny: Wymgni n ocenę dopuszczjącą dotyczą zgdnień elementrnych, stnowiących

Bardziej szczegółowo

ZADANIA ZAMKNIĘTE. Zadanie 1 (1p). Ile wynosi 0,5% kwoty 120 mln zł? A. 6 mln zł B. 6 tys. zł C. 600 tys. zł D. 60 tys. zł

ZADANIA ZAMKNIĘTE. Zadanie 1 (1p). Ile wynosi 0,5% kwoty 120 mln zł? A. 6 mln zł B. 6 tys. zł C. 600 tys. zł D. 60 tys. zł TRZECI SEMESTR LICEUM OGÓLNOKSZTAŁCĄCEGO DLA DOROSŁYCH PRACA KONTROLNA Z MATEMATYKI ROZSZERZONEJ O TEMACIE: Liczby rzeczywiste i wyrżeni lgebriczne Niniejsz prc kontroln skłd się z zdń zmkniętych ( zdń)

Bardziej szczegółowo

NOWE NIŻSZE CENY. Ceny spiral introligatorskich DOUBLE-LOOP WIRE. www.radpor.pl

NOWE NIŻSZE CENY. Ceny spiral introligatorskich DOUBLE-LOOP WIRE. www.radpor.pl Rok złożeni 1994 Nowodworsk 32, 21-100 Lubrtów tel./fks 81-855-6154, RADPOR 81-854-2860 Nowodworsk 32, 21-100 Lubrtów tel./fks 81-855-6154, 81-854-2860 www.rdpor.pl Ceny spirl introligtorskic DOUBLE-LOOP

Bardziej szczegółowo