Ak Ultimate

January 22, 2023 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Ak Ultimate...

Description

 

Politechnika Śląska w Gliwicach Architektura komputerów 17 września 2015

ULTIMATE Autorzy: Son Mati Doxus

Informatyka, semestr VI Rok akademicki 2014/2015 Grupy GKiO3 oraz PSI Rybnik oraz Mikołów Rocznik 2012

”Gry są życiem. Gry są światem.” — Doxus

 

Spis treści I

Teoria

 

8

1 Histor Historia ia rozwoju rozwoju kompu komputer terów ów

 

2 Archit Architekt ektura ura CISC CISC

8

 

8

2.1 Zna Znacze czenie nie   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Przyc Przyczyn zynyy ro rozwoju zwoju arc architekt hitektury ury CISC   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Cec Cechy hy arc architekt hitektury ury CISC   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Archit Architekt ektura ura RISC

 

3.1 3.2 3.3 3.4 3.5 3.6

Zna Znacze czenie nie   . . . . . . . . . . . . . . . . . . . . . . . Prz Przycz yczyn ynyy roz rozwoju woju   . . . . . . . . . . . . . . . . . . Pie Pierws rwszy zy proc proceso esorr R RISC ISC   . . . . . . . . . . . . . . . Cec Cechy hy arc architekt hitektury ury RISC   . . . . . . . . . . . . . . Format rozk rozkazu azu pproceso rocesora ra RI RISC SC II   . . . . . . . . . . Reali Realizacj zacjaa wyb wybran ranych ych rozk rozkazó azów w . . . . . . . . . . . 3.6.1 Rozk Rozkazy azy arytme arytmetycz tyczne ne   . . . . . . . . . . . . 3.6.2 Rozk Rozkazy azy kom komunikuj unikujące ące się z pam pamięcią ięcią  . . . . 3.6.3 3.6 .3 Adr Adres es efe efekt ktywn ywnyy   . . . . . . . . . . . . . . . 3.7 Logic Logiczna zna org organiza anizacja cja rej rejestró estrów w proces procesora ora RIS RISC CI . 3.8 Okn Oknoo rejest rejestró rów w . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

4 Mechanizm Mechanizmy y potokowe potokowe

9

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

 

Reali Realizacj zacjaa rozk rozkazó azów w w procesorze procesorze nie niepotoko potokowym wym   . . . . . . . . . . . . . . Potoko Potokowe we wyk wykonanie onanie rozk rozkazów azów dla prostej organizacji cykl cykluu rozk rozkazow azowego ego   . Podzi Podział ał cyklu rrozk ozkazo azoweg wegoo na więk większą szą lic liczbę zbę faz faz  . . . . . . . . . . . . . . . Anali Analiza za czaso czasowa wa potok potokow owej ej realiz realizacji acji ciągu rozk rozkazó azów w . . . . . . . . . . . . Przyspieszenie dla potokow potokowego ego wykonania rozk rozkazów azów  . . . . . . . . . . . . . Probl Problemy emy z poto potoko kową wą re realiza alizacją cją roz rozka kazów zów   . . . . . . . . . . . . . . . . . . Rozw Rozwiązan iązanie ie pro problem blemuu haza hazardu rdu ste sterow rowania ania   . . . . . . . . . . . . . . . . . . Skoki Skoki opóź opóźnio nione ne  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.8.1 4.8 .1 Zało Założen żenia ia   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.8.2 4.8 .2 Dzi Działa ałanie nie   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.9 Przew Przewidyw idywanie anie rozg rozgałęzie ałęzieńń   . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. 4.9. 9.11 Str Strat ateg egie ie   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.9.2 Tablic ablicaa histo historii rii rozga rozgałęzie łęzieńń   . . . . . . . . . . . . . . . . . . . . . . 4.10 Metody rozwiązywania hazardu danych   . . . . . . . . . . . . . . . . . . . 4.10.1 4.1 0.1 Co to jjest est??   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.2 Metody usuw usuwania ania hazardu danych   . . . . . . . . . . . . . . . . . . 4.10.33 Proble 4.10. Problem m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 Architek Architektura tura superskalarna superskalarna

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

 

2

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

9 9 9 10 10 10 10 10 10 11 11 12

4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8

5.1 5.1 Co to jest jest??   . . . . . . . . . . . . . . . . . . 5.2 Cec Cechy hy aarch rchitektu itektury ry su supersk perskalarn alarnej ej   . . . . . 5.3 Zależ Zależności ności międz międzyy rozk rozkazami azami   . . . . . . . . 5.3.1 Praw Prawdziw dziwaa zależ zależność ność dan danych ych   . . . . 5.3.2 Zależ Zależność ność wyjśc wyjściow iowaa   . . . . . . . . . 5.3.3 5.3 .3 An Anty tyzal zależn eżność ość  . . . . . . . . . . . . . 5. 5.3. 3.44 Wn Wnio iosk skii   . . . . . . . . . . . . . . . . 5.4 Metody elimi eliminacji nacji zależ zależności ności  . . . . . . . . . 5.4.1 Metoda przem przemiano ianowan wania ia rejes rejestrów trów   .

8 8 9

. . . . . . . . .

12 12 12 13 13 13 13 13 13 14 14 14 14 15 15 15 15 16

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

16 16 16 16 16 16 17 17 17

 

6 Archit Architekt ektura ura VLIW VLIW

6.1 6.1 6.2 6.2 6.3 6.4 6.5

 

Co to jest jest??   . . . . . . . . . . . . . . . . . . Cec Cechy   . . . . . . . . . . . . . . . . . . . . . Szer Szerego egowan wanie ie rozk rozkazó azów w przez kompila kompilator tor   . . Redukcja skokó skoków w war warunkowyc unkowychh - predyk predykacja acja Spekula Spekulatyw tywne ne wyk wykonani onaniee rozk rozkazó azów w LOAD LOAD   .

7 Wielowąt Wielowątko kowoś wość ć

7.1 7.1 7.2 7.3 7.4 7.5 7.6 7.7

18

. .. . . . . . . . . . . . . . . . . . . rozk rozkazów azów   . . . . . . . .

Co to jest jest??   . . . . . . . . . . . . . . . . . . . . Sprzętow Sprzętowaa realizacja wielow wielowątkow ątkowości ości   . . . . . . Wielo Wielowątk wątkow owość ość grubozi gruboziarnis arnista ta   . . . . . . . . . Wielo Wielowątk wątkow owość ość drobn drobnoziar oziarnista nista   . . . . . . . . Warunki sprzętow sprzętowej ej rrealizacji ealizacji wielow wielowątkow ątkowości ości   . Wielo Wielowątk wątkow owość ość w proce procesorze sorze ddwupotok wupotokowy owym m . Mankamen Mankamenty ty współbieżnej wielow wielowątkow ątkowości ości   . .

. . . . . . .

 

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

8.1 Formy równoległości w aarchitekturze rchitekturze komputerów komputerów   . 8.1.1 Rów Równoleg noległość łość na poziomi poziomiee ro rozk zkazó azów w . . . . 8.1.2 Rów Równoleg noległość łość na poziomi poziomiee pproceso rocesorów rów   . . . 8.2 Rodzaje rrówn ównoległ oległości ości w ap aplik likacjac acjachh   . . . . . . . . 8.2.1 Rów Równoleg noległość łość poziom poziomuu dany danych ch   . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

18 18 18 18 18 19

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

21 21 21 21 21

8.2.2 Rów Rówoległ oległość ość poziom poziomuu zada zadań ń   . .w. arc . .hitekturze . . . . . .komputerów . . . . . . .   .. 8.3 Wykorzystanie równoległości aplikacji architekturze komputerów  8.4 Klasy Klasyfik fikacja acja Flynna   . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4.1 Kryte Kryterium rium klasy klasyfik fikacji acji   . . . . . . . . . . . . . . . . . . . . . . 8.4.2 Klasy Klasyfik fikacja acja opiso opisowa wa   . . . . . . . . . . . . . . . . . . . . . . .

.. . . .

.. . . .

.. . . .

.. . . .

.. . . .

.. . . .

.. . . .

.. . . .

.. . . .

.. . . .

.. . . .

.. . . .

2211 22 22 23

8 Klasyfikacja Klasyfikacja kompute komputerów rów równoległ równoległych ych

 

9 Archit Architekt ektura ura SIMD SIMD

21

 

9.1 9.1 Co to jest jest??   . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 Kompu Komputery tery wek wektoro torowe we   . . . . . . . . . . . . . . . . . . . . . 9.2.1 Lok Lokaliza alizacja cja wek wektoró torów w dany danych ch   . . . . . . . . . . . . . 9.2.2 9.2 .2 Prz Przykł ykład ad rozk rozkazu azu   . . . . . . . . . . . . . . . . . . . . 9.2.3 9.2 .3 Prz Przysp yspies ieszen zenie ie   . . . . . . . . . . . . . . . . . . . . . 9.2.4 9.2 .4 Prz Przepu epusto stowo wość ść   . . . . . . . . . . . . . . . . . . . . . 9.2.5 Zależ Zależność ność m mocy ocy obli obliczeni czeniow owej ej od dług długości ości w wektor ektoraa   . 9.2.6 9.2 .6 Pod Podsum sumow owani aniee   . . . . . . . . . . . . . . . . . . . . . 9.2.7 9.2 .7 Zas Zastos tosow owani aniee   . . . . . . . . . . . . . . . . . . . . . . 9.3 Kompu Komputery tery macie macierzo rzowe we   . . . . . . . . . . . . . . . . . . . . 9. 9.3. 3.11 Co to jest jest??   . . . . . . . . . . . . . . . . . . . . . . . 9.3.2 Elemen Elementy ty kom komputer puteraa m macier acierzow zowego ego   . . . . . . . . . . 9.3.3 9.3 .3 Pod Podsum sumow owani aniee   . . . . . . . . . . . . . . . . . . . . . 9.4 Model SIM SIMD D w proc procesora esorach ch ssupersk uperskalarn alarnych ych   . . . . . . . . . 9.4.1 Tech echnologi nologiaa MMX   . . . . . . . . . . . . . . . . . . . 9.5 Tech echnolog nologia ia SSE   . . . . . . . . . . . . . . . . . . . . . . . .

24

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

10 Karty graficzne i architektura CUDA

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

 

10.1 Charakterystyka   . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Architektura CUDA   . . . . . . . . . . . . . . . . . . . . . . 10.3 Multiprocesor strumieniowy   . . . . . . . . . . . . . . . . . . 10.4 Model programistyczny CUDA   . . . . . . . . . . . . . . . . 10.5 Wykonanie obliczeń z użyciem architektury CUDA (5 faz)   . 10.6 CUD CUDA A procesor (rdzeń (rdzeń))   . . . . . . . . . . . . . . . . . . . .

19 19 19 19 20 20 20

. . . . . .

. . . . . .

. . . . . .

24 24 24 24 24 25 25 25 25 26 26 26 26 26 26 26 27

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

27 27 27 27 28 28

10.7 Wątki . . to . .jjest . .? .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 10.7.1 10. 7.1  Co est? 10.7.22 Grupow 10.7. Grupowanie anie wątk wątków ów w bloki i siatk siatkęę   . . . . . . . . . . . . . . . . . . . . . . . . . . 28 10.7.3 Sprzętow Sprzętowaa organizacja wykon wykonywania ywania wątk wątków ów   . . . . . . . . . . . . . . . . . . . . . 28 3

 

10.8 Rodzaje pamięci multi multiproces procesora ora   . . . . . 10.8.11 Pami 10.8. Pamięć ęć glo globalna balna   . . . . . . . . . 10.8.22 Pami 10.8. Pamięć ęć współdz współdzielona ielona   . . . . . . 10.8.33 Pami 10.8. Pamięć ęć stały stałych ch   . . . . . . . . . . 10.8.44 Rejes 10.8. Rejestry try   . . . . . . . . . . . . . . 10.8.55 Pami 10.8. Pamięć ęć lok lokalna alna i pamięć tekst tekstur ur  .

. . . . . .

. . . . . .

. . . . . .

11 Systemy wieloprocesorowe (UMA)

11.1 Rodzaje   . . . . . . . . . . . . . . . . . . . . . 11.2 Systemy z pamięcią wspólną  wspólną   . . . . . . . . . . 11.2.11 Klasy 11.2. Klasyfik fikacja acja   . . . . . . . . . . . . . . . 11.3 Skalowalność   . . . . . . . . . . . . . . . . . . 11.4 Syste Systemy my ze wspólną magistr magistralą alą   . . . . . . . . 11.4.11 Protok 11.4. Protokół ół MES MESII   . . . . . . . . . . . . . 11.5 Systemy wielomagistralowe   . . . . . . . . . . 11.6 Systemy z przełącznicą krzyżową   . . . . . . . 11.7 Systemy z wielostopniową siecią połączeń   . . 11.8 Systemy z pamięcią wieloportową  wieloportową   . . . . . . . 11.9 Syste Systemy my z sieci sieciami ami typu punkt-pu punkt-punkt nkt  . . . . . 11.9.11 HyperT 11.9. HyperTranspor ransportt (HT)   . . . . . . . . . 11.9.2 Intel Quic QuickPath kPath In Interconnect terconnect (QPI)   . 11.10Podsumowanie   . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

12 Systemy NUMA

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . .  

. . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

 

12.1 Rodzaje   . . . . . . . . . . . . . . . . . . . . . . . . 12.2 Węzeł   . . . . . . . . . . . . . . . . . . . . . . . . . 12.3 Katalog   . . . . . . . . . . . . . . . . . . . . . . . . 12.3.11 Najprosts 12.3. Najprostsza za postać kkatalo atalogu gu   . . . . . . . . . 12.3.22 Rozmi 12.3. Rozmiar ar ka katalog taloguu  . . . . . . . . . . . . . . . 12.3.3 Różne waria warianty nty org organizacji anizacji kkatalogu atalogu   . . . . 12.4 Działanie katalogu na przykładzie systemu DASH  DASH . 12.4.11 Co to jest sys 12.4. system tem DA DASH? SH?   . . . . . . . . . . 12.4.22 Inte 12.4. Interpret rpretacja acja stan stanuu linii   . . . . . . . . . . . 12.4.33 Operac 12.4. Operacja ja odcz odczytu ytu  . . . . . . . . . . . . . . . 12.4.44 Operac 12.4. Operacja ja zap zapisu isu   . . . . . . . . . . . . . . . 12.5 Katalog czy snooping  snooping  . . . . . . . . . . . . . . . . . 12.6 Podsumowanie   . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

 

14 Systemy MMP

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

15 Klastry

. . . . . . .

. . . . . . .  

. . . . . . .

. . . . . . .

. . . . . . .

30

30 30 30 30 30 30 31 31 31 32 32 32 32 33

33 33 34 34 34 34 34 34 35 35 35 35 35 36

 

. . . . . . .

29 29 29 29 29 29

33

13 Systemy SMP - podsumowanie

14.1 Uproszczona organizacja   . . . . . 14.2 Hierarchiczna organizacja   . . . . 14.2.11 Rodzaje w 14.2. węzłó ęzłów w . . . . . 14.3 Topologia   . . . . . . . . . . . . . 14.4 Obsługa przesyłu komunikatów   . 14.5 Narzędzia programowe   . . . . . . 14.6 Podsumowanie   . . . . . . . . . .

. . . . . .

36

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

36 36 36 37 37 37 37 38

15.1 Definicja  Definicja   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 15.2 Ogólna struktura systemów typu klaster   . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 15.3 Ogólna charakterystyka klastrów   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 15.3. 15.3.1 ęzły   .ooperacy . . . . jny . .   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 15.3.212 W System peracyjny 15.3.33 Infras 15.3. Infrastruktu truktura ra scalając scalającaa   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 15.3.4 Komunik Komunikacja acja między węzłami węzłami   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4

 

15.3.5 Sieci łączą 15.3.5 łączące ce   . . . . . . . . . . . . . . . . . . . . . 15.3.66 Cele budo 15.3. budowy wy klastr klastrów ów   . . . . . . . . . . . . . . . . 15.3.7 15. 3.7 Inn Innee   . . . . . . . . . . . . . . . . . . . . . . . . . . 15.4 Sieci łącz łączące ące klastr klastrów ów   . . . . . . . . . . . . . . . . . . . . 15.4.1 Sieci specjalizow specjalizowane ane - starsz starszee rozwiązania   . . . . . 15.4.22 Sieci LAN 15.4. LAN   . . . . . . . . . . . . . . . . . . . . . . . 15.4.3 Sieci specjalizow specjalizowane ane - no nowsze wsze rozwiąz rozwiązania ania   . . . . . 15.5 Fibre Channel  Channel  . . . . . . . . . . . . . . . . . . . . . . . . . 15.6 Sieci łączące - różnice   . . . . . . . . . . . . . . . . . . . . 15.7 Sieci specjalizowane (SAN)   . . . . . . . . . . . . . . . . . 15.7.11 Opis el 15.7. elemen ementów tów   . . . . . . . . . . . . . . . . . . . . 15.7.22 Cec 15.7. Cechy hy tra transmisj nsmisjii   . . . . . . . . . . . . . . . . . . . 15.7.3 Rodzaje kom komunikató unikatów w . . . . . . . . . . . . . . . . 15.7.4 Przepustow Przepustowość ość łączy   . . . . . . . . . . . . . . . . . 15.7.55 Para 15.7. Parametry metry  . . . . . . . . . . . . . . . . . . . . . . . 15.8 Klastry o wysokiej niezawodności   . . . . . . . . . . . . . . 15.8.1 Czynniki two tworzące rzące wysok wysokąą niezaw niezawodność odność klastrów klastrów   . 15.8.2 Redundancja wę węzłów złów / mocy oblicz obliczeniowej eniowej   . . . . 15.8.3 Warianty modelu mieszanego   . . . . . . . . . . . . 15.9 Warianty dostępu do wspólnych zasobów  zasobów  . . . . . . . . . . 15.9.1 Zasada „„współdziel współdziel wszy wszystko” stko”   . . . . . . . . . . . . 15.9.22 Zasada „„nie 15.9. nie współd współdziel ziel nic nic””   . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

39 39 39 39 39 39 39 39 40 40 40 40 40 40 40 41 41 41 41 42 42 42

15.9.33 Mirro 15.9. Mirroring ring   . . . . .funkcjono . . . . . wanie . . . .węzłów . . . .   .. 15.10Mechanizmy kontrolujące funkcjonowanie węzłów  15.10.1Heartbeat   . . . . . . . . . . . . . . . . . . . 15.10.1Heartbeat 15.10.2Fail-over   . . . . . . . . . . . . . . . . . . . . 15.10.2Fail-over 15.11Problem rywalizacji o zasoby po awarii  awarii   . . . . . . . 15.11.1Mechanizm  quorum    . . . . . . . . . . . . . 15.12Podsumowanie   . . . . . . . . . . . . . . . . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

4432 43 43 43 43 43

II

Py Pyta tani nia a za zamk mkni nięt ęte e

III

Py Pyta tani nia a ot otw war arte te

.. . . . . .

.. . . . . .

.. . . . . .

.. . . . . .

 

44

 

77

1 2010, 2010, Term Termin in I (odpowied (odpowiedzi zi z forum) forum)

 

77

2 2013, 2013, Term Termin in I (odpowied (odpowiedzi zi z forum) forum) 3 2014, 2014, tter ermi min n I, N NSI SI

 

79 80

 

4 2015, 2015, T Ter ermi min n 0

IV

 

81

Zad Zadani ania a egz egzami aminac nacyjn yjne e

 

1 Spar parc

83

 

83

1.1 Labo Labork rka: a: mi min, n, ma maxx ora orazz max - m min in   . 1.1.1 1.1 .1 Funk unkcja cja w jjęzy ęzyku ku C   . . . . . 1.1.2 Odpow Odpowiednik iednik w SPARC SPARCuu   . . 1.2 Labork Laborka, a, sszuk zukanie anie min i ma maxx   . . . . 1.3 2008, I te termin, rmin, Jerz Jerzyy R Responde espondekk   . . 1. 1.3. 3.11 Treść reść  . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

83 83 84 85 86 86

1.3.2 Propozycja cja rozw rozwiązan iązania ia 12   . 1.3.3 Propozy 1.4 2010, I te termin, rmin, Jerz Jerzyy R Responde espondekk   . 1. 1.4. 4.11 Treść reść  . . . . . . . . . . . . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

86 87 87

. . .

5

 

1.4.2 Propozy Propozycja cja rozw rozwiązan iązania ia   . . . . 1.5 2012, I te termin, rmin, Jerz Jerzyy R Responde espondekk   . . . 1. 1.5. 5.11 Treść reść  . . . . . . . . . . . . . . . 1.5.2 Propozy Propozycja cja rozw rozwiązan iązania ia 1   . . . 1.5.3 Propozy Propozycja cja rozw rozwiązan iązania ia 2   . . . 1.6 2013, I te termin, rmin, Jerz Jerzyy R Responde espondekk   . . . 1. 1.6. 6.11 Treść reść  . . . . . . . . . . . . . . . 1.6.2 1.6 .2 Roz Rozwią wiązan zanie ie nnrr 1 bbyy Do Doxus xus   . . 1.6.3 Rozwi Rozwiązani ązaniee nnrr 2 by Trimac rimackk   . 1.6.4 1.6 .4 Roz Rozwią wiązan zanie ie nr 3   . . . . . . . . 1.7 2015, 0 termin termin,, JJerzy erzy Respon Respondek dek   . . . 1. 1.7. 7.11 Treść reść  . . . . . . . . . . . . . . . 1.7.2 1.7 .2 Roz Rozwią wiązan zanie ie 1 bbyy Do Doxus xus   . . . . 1.7.3 Rozwi Rozwiązani ązaniee 2 by Trimac rimackk   . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

2 PVM

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

 

2.1 Wstęp z labo laborek, rek, szuk szukanie anie min i max max   . 2. 2.1. 1.11 Treść reść  . . . . . . . . . . . . . . . 2.1.2 2.1 .2 Roz Rozwią wiązan zanie ie  . . . . . . . . . . . 2.2 Laborki Laborki,, odejmo odejmowan wanie ie macie macierzy rzy   . . . . 2. 2.2. 2.11 Treść reść  . . . . . . . . . . . . . . . 2.2.2 2.2 .2 Roz Rozwią wiązan zanie ie  . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

87 88 88 88 89 90 90 90 91 92 93 93 93 94 95

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

95 95 95 98 98 98

2.3 Labo Laborki SSzyf zyfr Ceza ezara 2. 2.3. 3.11 rki,T, reść re ść  .r .C . . ra . .  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 110 1100011 2.3.2 2.3 .2 Roz Rozwią wiązan zanie ie  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11001 3 Egzami Egzamin n 2012, 2012, T1, Hafed Hafed Zghid Zghidii

 

103

3.1 3.1 Treść reść   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0033 3.2 Propozy Propozycja cja rozw rozwiązan iązania ia   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11003 4 Egzami Egzamin n 2013, 2013, T1, Hafed Hafed Zghid Zghidii

 

106

4.1 4.1 Treść reść   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0066 4.2 Roz Rozwią wiązan zanie ie   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11006 4.3 Propozy Propozycja cja rozw rozwiązan iązania ia z forum - dlacz dlaczego ego jest źle i możesz ujeba ujebaćć bezmyśl bezmyślnie nie przepi przepisując sując   108 5 Egzami Egzamin n 2014, 2014, T1, Hafed Hafed Zghid Zghidii

5.1 5.1 Treść reść   . . . . . . . . . . . . . . . 5.2 Roz Rozwią wiązan zanie ie   . . . . . . . . . . . 5.3 201 2015, 5, 0 tterm ermin, in, H Hafe afedd Zig Zighdi hdi   . 5. 5.3. 3.11 Treść reść  . . . . . . . . . . . 5.3.2 5.3 .2 Roz Rozwią wiązan zanie ie  . . . . . . .

 

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

6 Ja Jav va Spac Spaces es

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

110

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

 

1 1100 11110 11 112 11112 11112 114

6.1 Wst Wstęp ęp z labo laborek rek   . . . . . . . . . . 6. 6.1. 1.11 Treść reść  . . . . . . . . . . . . . 6.1.2 6.1 .2 Roz Rozwią wiązan zanie ie  . . . . . . . . . 6.2 6.2 Za Zada dani niee 1   . . . . . . . . . . . . . . 6. 6.2. 2.11 Treść reść  . . . . . . . . . . . . . 6.3 2010, I te termin, rmin, Adam Dusze Duszeńko ńko   . . 6. 6.3. 3.11 Treść reść  . . . . . . . . . . . . . 6.3.2 Propozy Propozycja cja rozw rozwiązan iązania ia 1   . 6.4 2011, I te termin, rmin, Adam Dusze Duszeńko ńko   . . 6. 6.4. 4.11 Treść reść  . . . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

1 1144 11114 11114 11117 11117 11118 11118 1 1188 11220 11220

6.5 2012, termin, rmin, Duszeńko 6. 6.5. 5.11 I Tte reść re ść  . .Adam . . . .Dusze . . . ńko  . .  . 6.6 6.6 2013 2013,, I term termin in   . . . . . . . . . . . 6. 6.6. 6.11 Treść reść  . . . . . . . . . . . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

11220 11221 11221

. . .

6

 

6.6.2 6.6 .2 Roz Rozwią wiązan zanie ie  . . . . . . . . . 6.7 2014, I te termin, rmin, Adam Dusze Duszeńko ńko   . . 6. 6.7. 7.11 Treść reść  . . . . . . . . . . . . . 6.7.2 Propozy Propozycja cja rozw rozwiązan iązania ia 1   . 6.8 2015, 0 te termin, rmin, Adam Dusz Duszeńko eńko  . . 6. 6.8. 8.11 Treść reść  . . . . . . . . . . . . . 6.8.2 6.8 .2 Roz Rozwią wiązan zanie ie  . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

7 CUDA

7.1 201 2013, 3, 1 tterm ermin, in, H Hafe afedd Zig Zighdi hdi   . 7. 7.1. 1.11 Treść reść  . . . . . . . . . . . 7.1.2 7.1 .2 Roz Rozwią wiązan zanie ie  . . . . . . . 7.2 201 2015, 5, 0 tterm ermin, in, H Hafe afedd Zig Zighdi hdi   . 7. 7.2. 2.11 Treść reść  . . . . . . . . . . . 7.2.2 7.2 .2 Roz Rozwią wiązan zanie ie  . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

 

. . . . . .

. . . . . .

131

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

8.1 2013, 1 te termin, rmin, Danie Daniell Ko Kostrze strzewa wa   . . 8. 8.1. 1.11 Treść reść  . . . . . . . . . . . . . . 8.1.2 8.1 .2 Roz Rozwią wiązan zanie ie  . . . . . . . . . . 8.2 2014, 1 te termin, rmin, Danie Daniell Ko Kostrze strzewa wa   . . 8. 8.2. 2.11 Treść reść  . . . . . . . . . . . . . . 8.2.2 8.2 .2 Roz Rozwią wiązan zanie ie  . . . . . . . . . . 8.3 2015, 0 te termin, rmin, Danie Daniell Ko Kostrze strzewa wa   . . 8. 8.3. 3.11 Treść reść  . . . . . . . . . . . . . . 8.3.2 8.3 .2 Roz Rozwią wiązan zanie ie  . . . . . . . . . . 8.4 Termin nniezna ieznany ny,, Danie Daniell Kostr Kostrzew zewaa   . 8. 8.4. 4.11 Treść reść  . . . . . . . . . . . . . . 8.4.2 8.4 .2 Roz Rozwią wiązan zanie ie  . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

8 MOSIX

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

 

7

11221 11225 11225 1 2255 11227 11227 11227 13 131 11331 11331 13 133 11333 11333 135

11335 11335 11335 11336 11336 11336 11338 11338 11338 11440 11440 11440

 

Teoria 1

Histor Historia ia rozw rozwoju kompute omputeró rów w 1. Liczydło 2. Pascalina - maszyna licząca Pascala (dodawanie i odejmowanie) 3. Maszyna mnożąca Leibniza (dodawanie, odejmow odejmowanie, anie, mnożenie, dzielenie, pierwiastek kwadratowy kwadratowy 4. Maszyna różnicowa - Charles Babbage, obliczanie wartości matematycznych do tablic 5. Maszyna analityczna - Charles Babvage, programowalna za pomocą kart perforowanych 6. Elektryczna maszyna sortująca i tabelaryzująca Holleritha 1890 7. Kalkulator elektromechaniczny Mark I, tablicowanie funkcji, całkowanie numeryczne, rozwiązywanie równań różniczkowych, rozwiązywanie układów równań liniowych, analiza harmoniczna, obliczenia statystyczne 8. Maszyny liczące Z1: pamięć mechaniczna, zmiennoprzecinkowa reprezentacja liczb, binarna jednostka zmiennoprzecinkowa 9. Z3: Pierwsza maszyna w pełni automatyczna, kompletna w sensie Turinga, pamięć przekaźnikowa

10. Colossus i Colossus 2 11. ENIAC 12. EDVAC - J. von Neumann (wtedy utworzył swoją architekturę) 13. UNIVAC I (pierwszy udany komputer komercyjny) 14. IBM 701, potem 709 15. po 1955 zaczyna się zastosowanie tranzystorów w komputerach (komputery II generacji) 16. po 1965 komputer komputeryy IIII II gene generacji racji z układami scalo scalonymi nymi 17. od 1971 komp komputery utery IV generacj generacjii - z układami scalon scalonymi ymi wielkie wielkiejj skali inegra inegracji cji VLSI

2

Arc Archite hitekt ktur ura a CISC CISC

2. 2.1 1

Zn Znac acze zeni nie e

Complex Instruction Set Computers 

2.2

Prz Przycz yczyn yny y roz rozwoju woju ar arch chite itektu ktury ry CI CISC SC

•  Drogie, małe i wolne pamięci komputerów •  Rozwój wielu rodzin komputerów •  Duża popularność mikroprogramowalnych układów sterujących (prostych w rozbudowie) •  Dążenie do uproszczenia kompilatorów: im więcej będzie rozkazów maszynowych odpowiadających

instrukcjom języków wyższego poziomu tym lepiej; model obliczeń pamięć – pamięć. 8

 

2.3

Cec Cech hy a arc rchit hitekt ektury ury CIS CISC C

•  Duża liczba rozkazów (z czego te najbardziej zaawansowane i tak nie były używane) •  Duża ilość trybów adresowania (związane z modelem obliczeń) •  Duży rozrzut cech rozkazów w zakresie: –  złożoności –  długości (szczególnie to - nawet kilkanaście bajtów) –  czasów wykonania

•  Model obliczeń pamięć - pamięć •  Mikroprogramowane układy sterujące •  Niewiele rejestrów - były droższe niż komórki pamięci i przy przełączaniu kontekstu obawiano się

wzrostu czasu przełączania kontekstu (chowanie rejestrów na stos i odwrotnie) •  Przerost struktury sprzętowej przy mało efektywnym wykorzystaniu list rozkazów

CIEKAWOSTKA: Przeanalizowano jakieś tam programy i w procesorze VAX 20% najbardziej złożonych rozkazów odpowiadało za 60% kodu, stanowiąc przy tym ok 0.2% wywołań. W procesorze MC68020 71% rozkazów nie zostało nawet użytych w badanych programach

3

Arc Archite hitekt ktur ura a RISC RISC

3. 3.1 1

Zn Znac acze zeni nie e

Reduced Instruction Set Computers .

3. 3.2 2

Pr Przy zyczy czyn ny ro rozw zwoju oju

•  Poszukiwanie optymalnej listy rozkazów •  Chęć wykonania mikroprocesora o funkcjach pełnego ówczesnego procesora

3. 3.3 3 Pi Pier erws wszy zy pr proce oceso sorr R RIS ISC C Procesor RISC I (1980), D. Patterson (Berkeley University) Założenia projektowe: •  Wykonanie jednego rozkazu w jednym cyklu maszynowym •  Stały rozmiar rozkazów – uproszczenie metod adresacji •  Model obliczeń rejestr – rejestr: komunikacja z pamięcią operacyjną tylko za pomocą rozkazów

LOAD i STORE. •  Wsparcie poprzez architekturę języków wysokiego poziomu.

Efekty realizacji fizycznej: •  44 420 tranzystorów (ówczesne procesory CISC zawierały ok. 100 000 tranzystorów) •  lista rozkazów = 32 rozkazy •  dwustopniowy potok – strata tylko 6% cykli zegara, zamiast 20% (w związku z realizacją skoków)

9

 

3.4

Cec Cech hy a arc rchit hitekt ektury ury RIS RISC C

1. Stała długoś długośćć i prost prostyy format rozk rozkazu azu 2. Nieduża liczba trybów adresowania 3. Niezbyt obszerna lista rozkazów 4. Model obliczeń rejestr-rejestr - dostęp do pamięci operacyjnej tylko w rozkazach LOAD i STORE 5. Duży zbiór rejestrów uniwersalnych 6. Układ stero sterowan wania ia – logik logikaa szyta 7. Intensywne wykorzystanie przetwarzania potokowego 8. Kompilatory o dużych możliwościach optymalizacji potoku rozkazów

3.5

Form ormat at ro rozk zkazu azu p proce rocesor sora a RIS RISC CI

7 OPCODE

1 SCC

5 DEST

5 SRC1

1 IMM

13 SRC2

•  OPCODE–kod rozkazu •  SCC – ustawianie (lub nie) kodów warunków •  DEST – nr rejestru wynikowego •  SRC1 – nr rejestru zawierającego pierwszy argument •  IMM – wskaźnik natychmiastowego trybu adresowania •  SRC2 – drugi argument lub nr rejestru (na 5 bitach)

3.6 3.6.1

Realiz Realizacja acja wybra wybrany nych ch rozk rozkazó azów w Rozkazy Rozkazy arytmety arytmetyczne czne

•   Tryb rejestrowy:

(IMM=0)

•  Tryb natychmiastowy:   (IMM (IMM=1 =1)) 3.6.2 3.6. 2

R R[[DEST]  ←  R[SRC1] op R[SRC2] R[DE R[DEST ST]]  ←  R[SRC1] op SRC2

Rozk Rozkazy kom komuni unikują kujące ce się z pamięci pamięcią  ą 

•   LOAD

  R[DEST]  ←  M[AE]P

•   STORE   M[AE]  ←  R[DEST] 3.6.3 3.6. 3

Adres Adres efekt efektywn ywny y

 

•   Tryb z przesunięciem

 

•  Inny zapis powyższego •   Tryb absolutny

AE = R[SR R[SRC1] C1] + SRC SRC22 = RX + S2 AE = RX + S2

 

•   Tryb rejestrowy pośredni

AE = R0 + S2 = S2 (R0 ≡  0)  

AE = RX + 0 = RX

Tryb absolutny oraz tryb rejestrowy pośredni są przypadkami szczególnymi.

10

 

3.7

Log Logiczn iczna a orga organiz nizacj acja a reje rejestr strów ów pr proceso ocesora ra RIS RISC CI Tabela 1: Rejestry R31

6

Wysokie

10

Lok Lokal alne ne

6

N is k ie R9

10

Glob Global alne ne R0

3. 3.8 8

Ok Okno no reje rejest stró rów w Tabela 2: Rejestry fizyczne - okno rejestrów 137 ↑  Okno

rejestrów R31

Wysokie

Lokalne

Niskie

Globalne R0 ↓

0

11

 

4

Mechan Mechanizm izmy y potok potokowe

4.1

Realiz Realizacja acja rozk rozkazó azów w w procesor procesorze ze n niepotok iepotokowy owym m

Rozkazy wykonywane są liniowo w czasie - jeden po drugim, w takiej kolejności w jakiej przyjdą do procesora.

4.2

Potok Potokow owe e wyk wykonanie onanie rozk rozkazów azów dla prostej organizacji cyklu rozk rozkazow azowego ego

Prostyy podział procesora na moduły: Prost •  S1 - pobranie rozkazu •  S2 - wykonanie rozkazu

Zakładając, że czas pracy obu modułów jest równy, wówczas 3 rozkazy mogą zostać wykonane w 2 okresach. 1 T - pobranie i wykonanie rozkazu. W momencie gdy pierwszy rozkaz zostanie pobrany, w chwili 0.5 T S1 może pobrać kolejny.

4.3

Pod Podzia ziałł cyklu ro rozk zkazo azowe wego go na większ większą ą liczbę fa fazz

Na przykładzie cyklu rozkazowego komputera Amdahl 470:

Rozkazy

1. Pobranie rozkazu 2. Dekodowanie rozkazu

S1 S2 S3 S4 S5 S6

3. Obliczenie adresu efektywnego 4. Pobranie argumentów 5. Wyk Wykonani onaniee operacji 6. Zapis wyniku

1 r1

2 Fa3zy ze4garo5we rr22 rr33 rr44 rr55 r1 r2 r3 r4 r1 r2 r3 r1 r2 r1

6 rr66 r5 r4 r3 r2 r1

7 rr77 r6 r5 r4 r3 r2

Zasada działania jest dokładnie taka sama jak w Tabela 3: Realizacja ciągu rozkazów w wielostopnioprzypadku podziału na dwie fazy. Załóżmy, że jewym procesorze potokowym. den rozkaz wykonuje się w 7iu taktach zegarowych. 1 T = 7 F. Wówczas w momencie gdy rozkaz numer 1 znajduje się w 5tym takcie wykonania rozkaz numer 5 może zostać pobrany.

12

 

4.4

Analiz Analiza a czaso czasowa wa pot potoko okowej wej rrealiza ealizacji cji ciągu ro rozk zkazó azów w

Założenia: •   P  - liczba faz •   T  - okres T    =  τ   - czas wyk wykonani onaniaa ppojedyncze ojedynczejj fazy •   P 

(n − 1) × τ  - czas rozpoczęcia wykonywania   n -tego -tego rozkazu.

4.5

Przysp Przyspieszen ieszenie ie dla poto potoko kowe wego go wykonani wykonania a rozkazó rozkazów w

•  Czas wykonywania rozkazu w procesorze niepotokowym (dla  n  rozkazów) t =  n × T  T  •  Czas wykonywania rozkazu w procesorze potokowym dla idealnego przypadku, gdy  τ  =   P 

t = ( n − 1) × τ   + +  T   = (n − 1 + P ) ×

  T  P 

rozkazów dla procesora niepotokow niep otokowego ego do czasu •   Przyspieszenie jest stosunkiem czasu wykonywania rozkazów dla procesora potokowego. lim

n→∞

n × T  T  (n − 1 + P ) ×   P 

=  P 

Maksymalne przyspieszenie (dla modelu idealnego) jest równe ilości faz.

4.6

Probl Problemy emy z potok potokow ową ą re realizac alizacją ją roz rozk kazó azów w

Problemem związanym z realizacją potokową jest  zjawisko hazardu. •   Hazard sterowania  – problemy z potokową realizacją skoków i rozgałęzień. •   Hazard danych  – zależności między argumentami kolejnych rozkazów •  Hazard zasobów  – konflikt w dostępie do rejestrów lub do pamięci

4.7

Rozwią Rozwiązanie zanie probl problemu emu hazar hazardu du stero sterowa wania nia

•  Skoki opóźnione •  Przewidywanie rozgałęzień

4. 4.8 8 4.8.1 4.8 .1

Sk Skok okii opó opóźn źnio ione ne Założ Założen enia ia

•  Rozkaz następny po skoku jest zawsze całkowicie wykonywany •  To znaczy, że efekt skoku jest opóźniony o jeden rozkaz

13

 

4.8.2 4.8 .2

Dział Działan anie ie

Zmienia kod programu w trakcie kompilacji, jeśli widzi taka potrzebę. Sprowadza się to do dwóch możliwości: •  Modyfikacja programu - dodanie rozkazu NOP po instrukcji skoku JMP •  Optymalizacja programu - zmiany kolejności wykonywania rozkazów

4.9

4.9.1 4.9 .1

Prz Przewi ewidyw dywani anie e roz rozgał gałęzi ęzień eń

St Stra rate tegi gie e

1.   Statyczne •  przewidywanie, że rozgałęzienie (skok warunkowy) zawsze nastąpi •  przewidywanie, że rozgałęzienie nigdy nie nastąpi

rozkazu azu rozgałęzienia (specjalny bit ustawiany przez •   podejmowanie decyzji na podstawie kodu rozk kompilator) 2.   Inne •  przewidywanie, że skok wstecz względem licznika rozkazów zawsze nastąpi •  przewidywanie, że skok do przodu względem licznika rozkazów nigdy nie nastąpi

3.   Dynamiczne •  Tablica historii rozgałęzień. 4.9.2 4.9. 2

Tablica ablica histor historii ii rozgałę rozgałęzie zień ń

Składa się z: •  Bit ważności •  Adres rozkazu rozgałęzienia •  Bity historii •  Adres docelowy rozgałęzienia (opcja)

Operacje wykonywane na tablicy historii rozgałęzień •  Sprawdzenie, czy adres rozkazu rozgałęzienia jest w tablicy – Nie – wtedy:

∗  przewidywanie rozgałęzienia jest wykonywane według jednej ze strategii statycznych ∗  do tablicy jest wpisywany adres rozkazu rozgałęzienia, informacja o wykonaniu/niewyko-

naniu rozgałęzienia (bit historii) i (opcjonalnie) adres docelowy rozgałęzienia 14

 

– Tak  - wtedy:

∗  przewidywanie rozgałęzienia jest wykonywane według bitów historii ∗  do tablicy jest wpisywana informacja o wykonaniu/niewykonaniu rozgałęzienia (uaktual-

nienie bitów historii) •  1 bit historii - algorytm przewidywania rozgałęzień dla jednego bitu historii - kolejne wykonanie

rozkazu rozgałęzienia będzie przebiegało tak samo jak poprzednie.

•  2 bity historii

–  algorytm przewidywania rozgałęzień dla dwóch bitów historii bazuje na 2-bitowym automacie

skończonym. –  Interpretacja dwóch bitów historii (x y): ostatniego niego wyk wykonania onania sk skoku oku (0 – nie, 1 – tak) ∗   y: historia ostat ∗  x: przewidywanie następnego wykonania skoku (0 – nie, 1 – tak) ∗  Ogólna zasada przewidywania - zmiana strategii następuje dopiero po drugim błędzie przewidywania.

4.10 4.1 0

Met Metody ody roz rozwią wiązyw zywani ania a haz hazard ardu u dan danyc ych h

4.10 4.10.1 .1

Co to jest jest? ?

Hazard danych   - zależności między argumentami kolejnych rozkazów wykonywanych potokowo. 4.10.2 4.10 .2

Metody Metody usuwa usuwania nia hazar hazardu du danyc danych h

Jest kilka sposobów: •  Sprzętowe wykrywanie zależności i wstrzymanie napełniania potoku •  Wykrywanie zależności na etapie kompilacji i modyfikacja programu (np. dodanie rozkazu NOP) •  Wykrywanie zależności na etapie kompilacji, modyfikacja i optymalizacja programu (np. zamiana

kolejności wykony wykonywania wania rozkaz rozkazów) ów) •  Wyprzedzające pobieranie argumentów (zastosowanie szyny zwrotnej) 4.10. 4.1 0.3 3

Prob Proble lem m

Jeśli faza wykonania rozkazu nie będzie mogła być wykonana w jednym takcie (np. dla rozkazów zmiennoprzecinkowych), to zachodzi konieczność wstrzymania napełniania potoku. 15

 

5

Archit Architekt ektura ura supersk superskala alarna rna

5. 5.1 1

Co to jest jest? ?

Architektura umożliwiająca wykonanie w jednym takcie większej od 1 liczby instrukcji.

5.2 Cec Cechy hy arc architek hitektury tury supersk superskalarn alarnej ej Możliwość wykonania kilku rozkazów w jednym takcie, co powoduje konieczność: •  Kilku jednostek potokowych •  Załadowania kilku rozkazów z pamięci operacyjnej w jednym takcie procesora

5.3 5.3.1

Zal Zależn eżnośc ościi m międ iędzy zy roz rozk kaza azami mi Prawdziw Prawdziwa a zależność zależność danych danych

Read After Write (RAW)

Występuje w momencie kiedy jeden rozkaz wymaga argumentu obliczanego przez poprzedni rozkaz. Opóźnienie eliminowane za pomocą ”wyprzedzającego pobierania argumentu” - dana nie jest zapisywana do rejestru, pobierana bezpośrednio z poprzedniego (jeżeli (jeże li dobrzetylko rozumiem rysune rysunek k ze slajdu 21, wykład 4). rozkazu, który znajduje się w akumulatorze 5.3.2 5.3. 2

Zależnoś Zależność ć wyjści wyjściow owa a

Write After Write (WAW)

Gdy rozkazy zapisująca dane do tego samego rejestru wykonują się równolegle to drugi z nich musi czekać czekać aż pierwszy się zakończy. Układ sterujący musi kontrolować tego typu zależność. 5.3.3 5.3. 3

Anty Antyzal zależn eżność ość

Write After Read (WAR)

W przypadku gdy pierwszy rozkaz czyta wartość rejestru, a drugi zapisuje coś do tego rejestru i oba wykonują się równolegle, to drugi musi czekać aż pierwszy odczyta swoje. Ten rodzaj zależności może zostać wyeliminowany przez sprzętowe wykrywanie zależności i wstrzymanie napełniania potoku na co najmniej takt. Jeśli faza wykonania rozkazu nie będzie mogła być wykonana w jednym takcie (np. dla rozkazów zmiennoprzecinkowych), to zachodzi konieczność wstrzymania napełniania potoku. 16

 

5.3.4 5.3 .4

Wnios Wnioski ki

•  Dopuszczenie do zmiany kolejności rozpoczynania wykonania (wydawania) rozkazów i / lub zmia-

ny kolejności kończenia rozkazów prowadzi do możliwości wystąpienia zależności wyjściowej lub antyzależności. •  Zawartości rejestrów nie odpowiadają wtedy sekwencji wartości, która winna wynikać z realizacji

programu

5.4 5.4.1

Met Metody ody eli elimin minacj acjii zal zależn eżnośc ościi Metoda przemiano przemianowani wania a rejestrów rejestrów

•  Stosowana w przypadku zwielokrotnienia zestawu rejestrów. •  Rejestry są przypisywane dynamicznie przez procesor do rozkazów. •  Gdy wynik rozkazu ma być zapisany do rejestru Rn, procesor angażuje do tego nową kopię tego

rejestru. •  Gdy kolejny rozkaz odwołuje się do takiego wyniku (jako argumentu źródłowego), rozkaz ten musi

przejść przez proces przemianowania. •  Przemianowanie rejestrów eliminuje antyzależność i zależność wyjściową. Przykład  procesu przemianowania rejestrów:

•  I1: R3b  ←  R3a op R5a •  I2: R4b  ←  R3b + 1 •  I3: R3c  ←  R5a + 1 •  I4: R7b  ←  R3c op R4b

W powyższym przykładzie rozkaz I3 może być wykonany jako drugi (co zapobiegnie zależnościom RAW między I1 i I2 oraz I3 i I4), lub nawet jako pierwszy.

17

 

6

Arc Archite hitekt ktur ura a VLIW VLIW

6. 6.1 1

Co to jest jest? ?

VLIW -  Very Long Instruction Word .

6. 6.2 2

Ce Cecchy

•  Wspólna pamięć operacyjna •   Szeregowanie rozkazów

6.3

Szere Szeregow gowanie anie rozk rozkazó azów w pr przez zez k kompila ompilator tor

•  Podział rozkazów programu na grupy •  Sekwencyjne wykonywanie grup

•  Możliwość równoległej realizacji rozkazów w ramach grupy •  Podział grupy na paczki •  Paczka = 3 rozkazy + szablon (3 x 41 + 5 = 128 bitów)

jednostkach funkcjonalnyc funkcjonalnych, h, do których kierowane mają być rozkazy i ewen•   Szablon - informacja o jednostkach tualna informacja o granicach grup w ramach paczki

6.4

Reduk Redukcja cja skok skoków ów w warunk arunkow owych ych - predy predyk kacja rozk rozkazó azów w

Rozkazy uwarunkowane - uwzględnianie warunku w trakcie realizacji rozkazu.

6.5

Spekula Spekulaty tywne wne wyk wykonani onanie e roz rozk kazó azów w LO LOAD AD

•  Problem: chybione odwołania do PaP (cache) i konieczność czekania na sprowadzenie do PaP linii

danych •  Rozwiązanie: przesunięcie rozkazów LOAD jak najwyżej, aby zminimalizować czas ewentualnego

oczekiwania. •  Rozkaz CHECK sprawdza wykonanie LOAD (załadowanie rejestru)

18

 

7

Wielo Wielow wątko ątkowość ość

7. 7.1 1

Co to jest jest? ?

•  Cecha systemu operacyjnego umożliwiająca wykonywanie kilku wątków w ramach jednego procesu •  Cecha procesora oznaczająca możliwość jednoczesnego wykonywanie kilku wątków w ramach jed-

nego procesora (rdzenia)

7.2

Sprzę Sprzęto towa wa reali realizacja zacja wielo wielową wątk tkow owości ości

Celem współbieżnej realizacji dwóch (lub więcej) wątków w jednym procesorze (rdzeniu) jest minimalizacja strat cykli powstałych w trakcie realizacji pojedynczego wątku w wyniku: •  chybionych odwołań do pamięci podręcznej, •  błędów w przewidywaniu rozgałęzień, •  zależności między argumentami kolejnych rozkazów

7.3

Wielo Wielową wątk tkow owość ość grubozia gruboziarnista rnista

Coarse-grained multithreading .

wątków ów następuje przy dłuższym opóźnieniu wątku w potoku (np. chybione odwołanie •   Przełączanie wątk do pamięci podręcznej (nawet L2))

•  W niektórych rozwiązaniach rozpoczęcie nowego wątku następuje dopiero po opróżnieniu potoku •  Zaletą jest prostota procesu przełączania wątków •  Wadą takiego rozwiązania są straty czasu przy krótszych opóźnieniach potoku

7.4

Wielo Wielową wątk tkow owość ość drobn drobnoziarn oziarnista ista

Fine-grained multithreading . •  Przełączanie wątków następuje po każdym rozkazie •  Wątek oczekujący (np. na dostęp do pamięci) jest pomijany •  Zaletą jest unikanie strat nawet przy krótkich opóźnieniach wątków •  Istotnym wymaganiem dla procesora jest szybkie (w każdym takcie) przełączanie wątków •  Pewną wadą jest opóźnienie realizacji wątków w pełni gotowych do wykonania

19

 

7.5

Warun arunki ki sprzęt sprzętow owej ej realiz realizacji acji wielo wielową wątko tkowoś wości ci

•  powielenie zestawów rejestrów uniwersalnych (lub powielenie tabel mapowania rejestrów) •  powielenie liczników rozkazów •  powielenie układów dostępu do pamięci podręcznej (tabel stron) •  powielenie sterowników przerwań

7.6

Wielo Wielową wątk tkow owość ość w procesor procesorze ze d dwupotok wupotokowy owym m

Reguły realizacji i przełączania wątków: 1.   Wielowątkowość gruboziarnista •  wątek realizowany w kolejnych taktach do momentu wstrzymania rozkazu •  do obu potoków wprowadzane są rozkazy tylko jednego wątku (w jednym takcie!)

2.  Wielowątkowość drobnoziarnista •   w kolejnych taktach realizowane są naprzemiennie rozkazy kolejnych wątków (przełączanie

wątków co takt) •  do obu potoków wprowadzane są rozkazy tylko jednego wątku (w jednym takcie!) 3.   Wielowątkowość współbieżna (SMT -Simultaneous multithreading) •  wątek realizowany do momentu wstrzymania rozkazu •  do obu potoków w jednym takcie mogą być wprowadzane rozkazy różnych wątków

7.7

Mank Mankamen amenty ty współbie współbieżnej żnej w wielo ielowąt wątko kowoś wości ci

•  Rywalizacja wątków w dostępie do pamięci podręcznej - mniejsza wielkość PaP przypadająca na

wątek •  Większe zużycie energii (w porównaniu z procesorami dwurdzeniowymi) •  Możliwość monitorowanie wykonania jednego wątku przez inny wątek (złośliwy), poprzez wpływ

na współdzielone dane pamięci podręcznej - kradzież kluczy kryptograficznych

20

 

8

Klasyfik Klasyfikacja acja komput komputeró erów w rów równole noległyc głych h

8.1 8.1.1 8.1. 1

Form ormy y rów równoległ noległości ości w arc architek hitekturze turze k komput omputeró erów w Równol Równoległ egłość ość na poziomi poziomie e rozkazó rozkazów w

Wykonywanie w danej chwili wielu rozkazów w jednym procesorze. •  Mechanizmy potokowe - w procesorach CISC i RISC •  Architektura superskalarna i VLIW 8.1.2 8.1. 2

Równol Równoległ egłość ość na poziom poziomie ie proc procesor esorów ów

Wykonywanie w danej chwili wielu rozkazów w wielu procesorach. •  Komputery wektorowe •  Komputery macierzowe •  Systemy wieloprocesorowe •  Klastry (systemy wielokomputerowe)

8.2

8.2.1 8.2. 1

Rodzaje rrów ównol noległ egłości ości w a aplik plikacj acjac ach h Równol Równoległ egłość ość poziom poziomu u danyc danych h

DLP - Data Level Parallelism. Pojawia się kiedy istnieje wiele danych, które mogą być przetwarzane w tym samym czasie. 8.2.2 8.2. 2

Rówo Rówoleg ległość łość pozi poziom omu u zadań zadań

TLP - Task Level Parallelism. Pojawia się kiedy są tworzone zadania, które mogą być wykonyw wykonywane ane niezależnie i w większości równolegle.

8.3

Wyk Wykorzyst orzystanie anie ró równole wnoległości głości aplik aplikacji acji w archi architektu tekturze rze komp komputeró uterów w

•   Równoległość poziomu p oziomu rozkazów (ILP - Instruction Level Parallelism) - odnosi się do prze-

twarzania potokowego i superskalarnego, w których w pewnym (niewielkim) stopniu wykorzystuje się równoległość danych. •  Architektury wektorowe i procesory graficzne - wykorzystują równoległość danych poprzez

równoległe wykonanie pojedynczego rozkazu na zestawie danych.

Równoległość poziomu poziomu wątkó wątków w (TLP - Thread Level Parallelism) - odnosi się do wykorzy•   Równoległość

stania równoległości danych albo równoległości zadań w ściśle połączonych systemach (ze wspólną pamięcią), które dopuszczają interakcje między wątkami. •   Równoległość poziomu zleceń (RLP - Request Level Parallelism) - odnosi się do równoległości

zadań określonych przez programistę lub system operacyjny. Ta forma równoległości jest wykorzystywana w systemach luźno połączonych (z pamięcią rozproszoną) i klastrach.

21

 

8.4

Kla Klasyfi syfik kacj acja a Fly Flynna nna

M. Flynn, 1966 8.4.1 8.4. 1

Kryter Kryterium ium klasyfi klasyfik kacji acji

Liczba strumieni rozkazów i liczba strumieni danych w systemie komputerowym. •   SISD: Single Instruction, Single Data Stream

•   SIMD: Single Instruction, Multiple Data Stream

•   MISD: Multiple Instruction, Single Data Stream

•   MIMD: Multiple Instruction, Multiple Data Stream

Gdzie: •   JS  – Jednostka sterująca •   JP  – Jednostka przetwarzająca •   PaO – Pamięć operacyjna

22

 

8.4.2 8.4. 2

Klasyfik Klasyfikacj acja a opisow opisowa a

23

 

9

Arc Archite hitekt ktur ura a SIMD SIMD

9. 9.1 1

Co to jest jest? ?

•  Tłumaczenie  Single Instruction Multiple Device  •  Cecha wyróżniająca dla programisty - rozkazy wektorowe (rozkazy z argumentami wektorowymi). •  Dwa różne podejścia do sprzętowej realizacji rozkazów wektorowych: –  Komputery (procesory) macierzowe –  Komputery wektorowe

Idee realizacji obu (macierzowy i wektorowy):

9.2 9.2.1

Kom Komput putery ery we wekto ktoro rowe we Lokalizac Lokalizacja ja wektoró wektorów w danych danych

•  Pamięć operacyjna (STAR 100) •  Rejestry wektorowe (Cray -1) 9.2.2 9.2. 2

Przykł Przykład ad rozk rozkazu

Rozkaz dodawania wektorów: VADDF A,B,C,n Czas wykonania: tw  =  t start + (n − 1) × τ  W komputerze macierzowym czas wykonywania tego rozkazu jest równy  const . 9.2.3 9.2. 3

Przysp Przyspies ieszen zenie ie

Przyspieszenie jest stosunkiem czasu wykonywania w komputerze klasycznym (szeregowo) do czasu wykonywania w komputerze wektorowym. a =  lim n→∞

15 × τ  ×  × n   = 15 tstart + (n − 1) × τ  24

 

9.2.4 9.2. 4

Przepu Przepusto stowo wość ść

Przepustowość (moc obliczeniowa) jest stosunkiem ilości operacji zmiennoprzecinkowych do czasu ich wykonania. n  1 Przep =  lim n  = τ  tstart + (n − 1) × τ  →∞

Wymiarem przepustowości jest FLOPS. 9.2.5

Zależność Zależność mocy obliczenio obliczeniowej wej od długości wektora wektora

9.2.6 9.2. 6

Podsumo Podsumowa wanie nie

1. Hardware •  rozkazy wektorowe •  duża liczba potokowych jednostek arytmetycznych (specjalizowanych) •  duża liczba rejestrów (nawet kilkaset tysięcy)

2. Software •  klasyczne języki: Fortran, C •  klasyczne algorytmy •  kompilatory wektoryzujące 9.2.7 9.2. 7

Zastoso Zastosowa wanie nie

•  Numeryczna symulacja ośrodków ciągłych

różniczkowe, we, równania różnicowe, układy równań algebraicznyc algebraicznychh (rachunek macierzowy) •   Równania różniczko •  Dziedziny zastosowań: –  prognozowanie pogody –  symulacja aerodynamiczna –  sejsmiczne poszukiwania ropy naftowej i innych surowców –  symulacja reakcji jądrowych –  medycyna i farmacja –  obliczenia inżynierskie dużej skali

25

 

9.3 9.3. 9.3.1 1

Kom Komput putery ery mac macier ierzo zowe we Co to jest jest? ?

Architektura komputerów macierzowych - model SIMD w dwóch wariantach: rozprosz roszoną) oną) •   SIMD - DM (z pamięcią rozp •  SIMD - SM (z pamięcią wspólną) 9.3.2

Element Elementy y kompute komputera ra macierz macierzow owego ego

1.  Jednostka sterująca - procesor wykonujący rozkazy rozkazy sterujące i skala skalarne rne oraz inicjujący wykonanie rozkazów wektorowych w sieci elementów przetwarzających. 2.  Elementy przetwarzające (procesorowe) - jednostki arytmetyczno-logicz arytmetyczno-logiczne ne wykonujące operacje elementarne rozkaz rozkazów ów wektorow wektorowych. ych. 3.   Sieć łącząca  - łączy elementy przetwarzające między sobą lub z modułami pamięci operacyjnej; warianty: •  sieć statyczna: pierścień, gwiazda, krata, drzewo, hipersześcian •  sieć dynamiczna: jednostopniowa; wielostopniowa (wyróżnia połączenia blokujące i niebloku-

 jące) 9.3.3 9.3. 3

Podsumo Podsumowa wanie nie

•  Architektura SIMD •  Jednostka sterująca + jednostka macierzowa •  Rozkazy wektorowe - wykonywane synchronicznie w sieci (macierzy) EP •  Skomplikowana wymiana danych między EP •  Trudne programowanie - konieczność tworzenia nowych wersji algorytmów

9.4 9.4.1 9.4. 1

Mode Modell SIMD w pr proceso ocesorac rach h super supersk skala alarn rnyc ych h Tec echnol hnologia ogia MMX

•  8 rejestrów 64-bitowych MMX •  Nowe typy danych •  Rozszerzony zestaw instrukcji (57 instrukcji) •  Realizacja operacji na krótkich wektorach wg modelu SIMD

9.5

Tec echno hnolog logia ia SSE

•  8 rejestrów 128-bitowych •  Osiem 16-bitowych argumentów (elementów wektora) typu integer •  Cztery 32-bitowe argumenty integer/fplub dwa 64-bitowe •  Operacje zmp na 4-elementowych wektorach liczb 32-bit (pojed. prec.)

26

 

10 10.1 10. 1

Kart Karty grafic graficzne zne i arc architekt hitektura ura CUDA CUDA Cha Charak rakter teryst ystyk yka a

Graphics cs Processin Processingg Unit •   GPU - Graphi •  Wcześniejsze GPU - specjalizowane języki (HLSL, GLSL czy NVIDIA Cg), tylko rendering

wielordzeniowych procesorów graficz•  CUDA (Compute Unified Device Architecture ) - architektura wielordzeniowych nych (GPU) •  Uniwersalna architektura obliczeniowa połączona z równoległym modelem programistycznym •  wsparcie dla języków C/C++ •  GPGPU = GPU + CUDA

CUDA A - obsług obsługiwa iwana na przez kar karty ty graficzne GeF GeForce orce i GeF GeForce orce Mobile oodd serii 8 (GeF (GeForce orce 8800), •   CUD nowsze układy z rodzin Tesla i Quadro, Fermi, obecnie Kepler

10.2 10. 2

Arc Archit hitekt ektura ura CUD CUDA A

ddzielnychh ppotoków otoków przet przetwarzających warzających wierzchołki i piksele wprowadzenie uniwersalnego •   W miejsce ooddzielnyc procesora przetwarzającego wierzchołki, piksele i ogólnie geometrię, a także uniwersalne programy obliczeniowe •  Wprowadzenie procesora wątków eliminującego „ręczne” zarządzanie rejestrami wektorowymi Wprowadzenie adzenie modelu SIMT (single-instruction multiple-thread  multiple-thread ), ), w którym wiele niezależnyc niezależnychh wąt•   Wprow ków wykonuje równocześnie tę samą instrukcję Wprowadzenie adzenie współdzielonej pamięci oraz mechanizmów synchronizac synchronizacjiji wątków (barrier synchr synchroo•   Wprow nization ) dla komunikacji między wątkami

10.3 10. 3

Mul Multip tiproce rocesor sor str strumi umieni eniow owy y

Architektura GT 200. •  8 rdzeni C1 -C8 (SP) •  podręczna pamięć instrukcji (ang.  instruction cache )),, •  podręczna pamięć danych (ang.  constant cache ) - pamięć tylko do odczytu, •  pamięć współdzielona (ang.  shared memory ) •  16 384 rejestry, •  jednostka arytmetyczna wykonująca obliczenia zmiennoprzecinkowe podwójnej precyzji (fp64), •  dwie jednostki arytmetyczne przeznaczone do obliczania funkcji specjalnych (ang.  special function  unit )),, •  pamięć globalna

10.4 10. 4

Mode Modell p prog rogram ramist istyczn yczny y C CUD UDA A

•  Specjalny kompilator NVCC •  Podział programu na kod wykonywany przez procesor (ang.  Host code ) i przez urządzenie (kartę graficzną) (ang.  Device code ) - kernel •  Realizacja operacji równoległych według modelu SIMT ( Single Instruction Multiple Threading )

27

 

10.5 10. 5

Wyk Wykona onanie nie obl oblicze iczeń ń z uży użycie ciem m arch archite itektu ktury ry CUD CUDA A (5 faz faz))

1. Przydzielenie w pamięci globalnej obszaru pamięci dla danych, na których będą wykonywane obliczenia przez kernel. 2. Przekopiowanie danych do przydzielonego obszaru pamięci. 3. Zainicjowanie przez CPU obliczeń wykonywanych przez GPU, tj. wywołanie kernela. 4. Wykonanie przez wątki (z użyciem GPU) obliczeń zdefiniowanych w kernelu. 5. Przekopiowanie danych z pamięci globalnej do pamięci operacyjnej.

10.6 10. 6

CUD CUDA A proc proceso esorr (rd (rdzeń zeń))

•  Potokowa jednostka arytmetyczna zmp •  Potokowa jednostka arytmetyczna stp •  Ulepszona realizacja operacji zmp FMA ( fused multiply-add ) dla pojedynczej i podwójnej precyzji

10.7 10 .7

Wąt ątki ki

10 10.7 .7.1 .1

Co to jest jest? ?

•  Wątek reprezentuje pojedynczą operację (a single work unit or operation ) •  Wątki są automatycznie grupowane w bloki, maksymalny rozmiar bloku = 512 wątków (w archi-

tekturze Fermi i wyższych - 1024 wątki).   - kratę) •  Bloki grupowane są w siatkę (grid  •  Grupowanie wątków - bloki o geometrii 1, 2 lub 3-wymiarowej •  Grupowanie bloków - siatka ( grid ) o geometrii 1, 2-wymiarowej •   Wymaga się, aby bloki wątków tworzących siatkę mogły się wykonywać niezależnie: musi być

możliwe ich wykonanie w dowolnym porządku, równolegle lub szeregowo. 10.7.2 10.7 .2

Grupow Grupowani anie e wątkó wątków w w bloki i siatk siatkę ę

•  Siatka o geometrii jednowymiarowej (trzy bloki wątków) •  Każdy blok - geometria dwuwymiarowa (wymiary 2 x 3) 10.7.3

Sprzętow Sprzętowa a organizacja organizacja wykonyw wykonywania ania wątk wątków ów

•  Przy uruchomieniu kernela wszystkie bloki tworzące jego siatkę obliczeń są rozdzielane pomiędzy

multiprocesory danego GPU •  Wszystkie wątki danego bloku są przetwarzane w tym samym multiprocesorze •  W danej chwili (cyklu) pojedynczy rdzeń multiprocesora wykonuje jeden wątek programu

tworzy,, zarządza, szereguje i wykonuje wątki w grupach po 32, nazywan nazywanych ych wiązk wiązkami ami •   Multiprocesor tworzy (warp ). •  Wiązki są szeregowane do wykonania przez  warp scheduler . Wiązka wątków jest wykonywana jako  jeden wspólny rozk rozkaz az (analogia do rozk rozkazu azu SIMD, tzn. rozkazu rozkazu wektorow wektorowego) ego) 28

 

•  Sposób wykonania wiązki wątków (rozkazu SIMD) zależy od budowy multiprocesora: –  Dla architektury Fermi (32 procesory w jednym multiprocesorze / 2  warp-schedulery   = 16

procesorów na 1 wiązkę) wiązka jest wykonywana wykonywana jako 2 rozk rozkazy azy - wiązka jest dzielona na dwie połówki (half–warp ) wykonywane jako 2 rozkazy (te same, ale na dwóch zestawach danych). –  Dla architektury Tesla (8 procesorów w jednym multiprocesorze, 1   warp-scheduler ) wiązka  jest dzielona nazestawach cztery ćwiartki (quarter-warp) wykonywane jako 4 kolejne rozkazy (te same, ale na czterech danych). •  Konstrukcja  warp schedulera  umożliwia uruchomienie wielu wiązek wątków współbieżnie -  warp scheduler  pamięta wtedy adresy wiązek, przypisane im rozkazy SIMD oraz ich stan (gotowość do

wykonania lub stan oczekiwania na pobranie danych z pamięci). •  Współbieżne uruchomienie wielu wiązek pozwala zmniejszyć straty związane z oczekiwaniem na

dane (zwykle długi czas dostępu do pamięci).

10.8 10. 8 10.8.1 10.8 .1

Rodzaje pam pamięc ięcii m mult ultipr iproceso ocesora ra Pamię Pamięć ć globaln globalna a

Duża pamięć, o czasie życia aplikacji (dane umieszczone w tej pamięci są usuwane po zakończeniu aplikacji), dostępna dla każdego wątku w dowolnym bloku, ale o dość długim czasie dostępu wynoszącym ok. 400-600 taktów zegara. 10.8.2 10.8 .2

Pamię Pamięć ć współdz współdziel ielona ona

Niewielka pamięć o czasie życia bloku (zakończenie działania bloku powoduje usunięcie danych w niej przechowywanych), dostępna dla każdego wątku w bloku dla którego jest dedykowana, o bardzo krótkim czasie dostępu. 10.8.3 10.8 .3

Pamię Pamięć ć stałyc stałych h

Niewielki fragment pamięci globalnej, który jest cache-ow cache-owany any,, przez co dostęp do niego jest bardzo szybki. Jest ona tylko do odczytu. Czas życia pamięci stałych oraz jej dostępność jest taka sama jak pamięci globalnej. 10.8. 10. 8.4 4

Reje Rejest stry ry

Niewielka, bardzo szybka pamięć o czasie życia wątku (po zakończeniu wątku dane z rejestrów są usuwane). Tylko jeden wątek może w danym momencie korzystać z danego rejestru. 10.8.5 10.8 .5

Pamię Pamięć ć lokalna lokalna i pamię pamięć ć tekstu teksturr

Podobnie jak w przypadku pamięci stałych, są to dedykow dedykowane ane fragmenty pamięci globalnej. Pamięć lokalna jest wykorzyst wykorzystywana ywana do przechowywania danych lok lokalnych alnych wątku, które nie mieszczą się w rejestrach, a pamięć tekstur posiada specyficzne metody adresowania i  cache -owania -owania dla zastosowań graficznych.

29

 

11 11.1 11 .1

System Systemy y wielo wieloproc proceso esoro row we (UMA) (UMA) Ro Rod dzaj zaje e

•  Systemy z pamięcią wspólną •  Systemy z pamięcią rozproszoną

11.2 11. 2

Sys System temy y z pam pamięc ięcią ią wspó wspólną lną

•  Systemy z jednorodnym dostępem do pamięci (UMA –  Uniform Memory Access )

Systemy my z nieje niejednorodn dnorodnym ym dostępem do pamię pamięci ci (NUMA – Non -  Uniform Memory Access ) •   Syste 11.2.1 11.2 .1

Klasyfi Klasyfik kacja acja

•  Systemy ze wspólną magistralą •  Systemy wielomagistralowe •  Systemy z przełącznicą krzyżową •  Systemy z wielostopniową siecią połączeń •  Systemy z pamięcią wieloportową

Systemy my z sieciami typu punkt - punkt •   Syste

11.3 11. 3

Sk Skalo alowa walno lność ść

System skalowalny  - System, w którym dodanie pewnej liczby procesorów prowadzi do proporcjonal-

nego przyrostu mocy obliczeniowej.

11.4 11. 4

Sys System temy y ze wspól wspólną ną magist magistral ralą ą

•  Prostota konstrukcji – niska złożoność układowa całości •  Niski koszt •  Łatwość rozbudowy – dołączenia kolejnego procesora, ale tylko w ograniczonym zakresie •  Ograniczona złożoność magistrali (jej szybkość jest barierą) •  Niska skalowalność 11.4. 11. 4.1 1

Prot Protok okół ół ME MESI SI

Ten rodzaj systemu posiada problem zapewnienia spójności pamięci podręcznych ( snooping ). W celu rozwiązania go wykorzystuje w tym celu protokół MESI: •  I - invalid •  S - shared •  E - exclusive •  M - modified

30

 

11.5

Syste Systemy my wielo wielomagist magistralo ralowe we

•  Wielokrotnie zwiększona przepustowość •  Konieczność stosowania układu arbitra do sterowania dostępem do magistral •  Rozwiązania kosztowne

11.6 11. 6

Sys System temy y z prz przełą ełączn cznicą icą k krzy rzyżo żową wą

•  Zadania każdego przełącznika –  Rozwiązywanie konfliktów dostępu do tego samego modułu pamięci –  Zapewnienie obsługi równoległych transmisji, krzyżujących się w przełączniku

•  Duża przepustowość •  Duża złożoność układowa   O(n2 ) •  Wysoki koszt •  Problem: realizacja techniczna przełącznicy krzyżowej dla dużych  n  – wykorzystanie wielostopnio-

wych sieci połączeń

11.7 11. 7

Sys System temy y z wielo wielosto stopni pniow ową ą siec siecią ią połą połączeń czeń

Przykłady: •  Nieblokująca sieć Closa •  Sieć wielostopniowa Benesa •  Sieć wielostopniowa typu Omega

31

 

11.8 11. 8

Sys System temy y z pa pamię mięcią cią w wielo ieloport portow ową ą

•  Każdy procesor ma niezależny dostęp do modułów pamięci – poprawa wydajności •  Układ sterowania modułu pamięci rozstrzyga konflikty dostępu – większa złożoność •  Możliwość skonfigurowania części pamięci jako prywatnej dla jednego lub kilku procesorów

 – poprzez własną magistralę i port w •  Stosowana technika zapisu do pamięci cache –  write through  – module •  Ograniczona liczba portów w module

11.9 11. 9

Sys System temy y z siec sieciam iamii ty typu pu pu punkt nkt-pu -punkt nkt

11.9.1 11.9 .1

HyperT HyperTran ransport sport (HT) (HT)

•  Technologia wprowadzona w 2001 przez HyperTransport Consortium(AMD, Apple, Cisco, Nvidia,

Sun i in.). procesorów,, pamięci i układów we/wy - technologia technologia HT zastąpiła wspólną •   Przeznaczona do łączenia procesorów magistralę. •  Dla łączenia wielu procesorów stosowana razem z techniką NUMA. •  Topologia punkt - punkt. •  Sieć dwukierunkowa, szeregowo / równoległa, o wysokiej przepustowości, małych opóźnieniach. •   Łącza o szerokości 2, 4, 8, 16, or 32 bity. Teoretyczna przepustowość: 25.6 GB/s (3.2GHz x 2 transfers per clock cycle   x 32  bits per link ) dla jednego kierunku lub 51.2 GB/s łącznie dla obu

kierunków transmisji. •  Transmisja pakietów składających się z 32-bitowych słów. 11.9.2

Intel Intel Quick QuickPath Path Interconne Interconnect ct (QPI)

•   Następca  Front-SideBus  (FSB) - magistrali łączącej procesor z kontrolerem pamięci. •  Tworzy bardzo szybkie połączenia między procesorami i pamięcią oraz procesorami i hubami we-

/wy. •  Tworzy mechanizm „scalable shared memory ” (NUMA) – zamiast wspólnej pamięci dostępnej przez FSB, każdy Procesor ma własną dedykowaną pamięć dostępną przez  Integrated Memory Controler 

oraz możliwość dostępu do dedykowanej pamięci innych procesorów poprzez QPI. •  Podstawową zaletą QPI jest realizacja połączeń punkt-punkt (zamiast dostępu przez wspólną magistralę). 32

 

11.10 11. 10

Pod Podsum sumow owani anie e

•  Symetryczna architektura – jednakowy dostęp procesorów do pamięci operacyjnej oraz we/wy •  Utrzymanie spójności pamięci podręcznych (cache): –   snooping   -- metoda starsza i mało skalowalna (głównie w systemach ze wspólną magistralą) –  katalog - metoda lepiej skalowalna, stosowana razem z sieciami typu punkt - punkt

•  Łatwe programowanie (realizacja algorytmów równoległych) •  Niska skalowalność:

zapewniający iający spójność pamię pamięci ci podręczn podręcznych ych węzłó węzłów w syste systemów mów UMA –  Mechanizm   snoopingu , zapewn nie jest skalowalny dla bardzo dużej liczby węzłów. –  W systemach z dużą liczbą węzłów, posiadających lokalną pamięć, dla zapewnienia spójności pamięci podręcznych jest stosowane rozwiązanie oparte na katalogu.

12

Syst System emy y NUMA NUMA

Systemy wieloprocesorowe z niejednorodnym dostępem do pamięci. NUMA (Non-Uniform Memory Access ). ).

12.1 12 .1

Ro Rod dzaj zaje e

•  NC-NUMA (Non-cached NUMA) –  Odwołania do nielokalnej PaO przekierowywane do odległych węzłów –  Odwołania do nielokalnej PaO wolniejsze ok. 10 razy

•  CC-NUMA (Cache Coherent NUMA) –  Wykorzystuje węzły i katalogi

12.2 12 .2

Węzeł ęzeł

33

 

12.3 12 .3

Ka Kata talo log g

12.3.1 12.3 .1

Najprostsz Najprostsza a post postać ać kata katalogu logu

12.3.2 12.3 .2

Rozmia Rozmiarr katalogu atalogu

•  dla PaO węzła = 1 GB i linii = 128 B katalog musiałby mieć 223 pozycji •  dla PaO węzła = 8 GB i linii = 128 B katalog musiałby mieć 226 pozycji •  dlatego katalog praktycznie jest zazwyczaj realizowany jako pamięć asocjacyjna, o znacznie mniej-

szych rozmiarach 12.3.3

Różne wariant warianty y organizac organizacji ji katalogu katalogu

Zawartość pozycji katalogu: 1. num numer er węzła aktualn aktualnie ie posiadającego daną linię 2.   k  numerów   numerów węzłów aktualnie posiadających daną linię 3.   n  bitów   bitów (1 bit na węzeł) wskazujących posiadanie linii przez węzeł 4. element listy pól z numerami węzłów aktualnie posiadających daną linię

12.4 12.4. 12. 4.1 1

Działa Działanie nie k katalo atalogu gu na przyk przykładzie ładzie syste systemu mu DAS DASH H Co to to jest jest sys syste tem m DAS DASH? H?

•  Pierwszy system CC-NUMA wykorzystujący katalog •  Katalog = 1 M wierszy 18-bitowych –  Wiersz katalogu= 16 bitów obecności linii w węzłach + stan linii – Stan linii: uncached, shared, modified

34

 

12.4.2 12.4 .2

Inter Interpre pretac tacja ja stan stanu u lin linii ii

•   uncached  – linia pamięci jest tylko w pamięci lokalnej (domowej) •   shared  – linia PaP została przesłana do odczytu do kilku węzłów (ich pamięci lokalnych) •   modified – linia PaP jest w pamięci domowej nieaktualna (została zmodyfikowana w innym węźle) 12.4.3 12.4 .3

Operacj Operacja a odczytu odczytu

•  Stan żądanej linii =  uncached   lub  shared   →  linia jest przesyłana do węzła żądającego; stan linii :=  shared . •  Stan żądanej linii =  modified   →  sterownik katalogu domowego żądanej linii przekazuje żądanie do

węzła x posiadającego linię. Sterownik katalogu węzła x przesyła linię do węzła żądającego oraz węzła domowego tej linii; stan linii :=  shared . 12.4. 12. 4.4 4

Opera Operacj cja a za zapi pisu su

•  Przed zapisem węzeł żądający linii musi być jedynym jej posiadaczem. •  Węzeł żądający posiada linię –  stan linii =  modified   →  zapis jest wykonywany –  stan linii =  shared   →  węzeł przesyła do domowego katalogu tej linii żądanie unieważnienia innych kopii linii; stan linii :=  modified 

•  Węzeł żądający nie posiada linii  →  wysyła żądanie dostarczenia linii do zapisu –  stan linii =   uncached   →  linia jest przes przesyłana yłana do węz węzła ła żądające żądającego; go; stan linii :=  modified  –  stan linii =  shared   →  wszystkie kopie linii są unieważniane, potem jak dla  uncached  –  stan linii =  modified   → przekierowanie żądania do węzła x posiadającego linię. Węzeł x unie-

ważnia waż nia ją u siebi siebiee i przes przesyła yła żądającemu żądającemu..

12.5 12 .5

Ka Kata talo log g cczy zy sn snoop oopin ing g

Mechanizm spójności oparty o katalog jest bardziej skalowalny od mechanizmu „snooping”, ponieważ wysyła się w nim bezpośrednią prośbę i komunikaty unieważniające do tych węzłów, które mają kopie linii, podczas gdy mechanizm „snooping” rozgłasza (broadcast ) wszystkie prośby i unieważnienia do wszystkich węzłów węzłów..

12.6 12. 6

Pod Podsum sumow owani anie e

•  PaO fizycznie rozproszona, ale logicznie wspólna •  Niejednorodny dostęp do pamięci - PaO lokalna, PaO zdalna •  Utrzymanie spójności pamięci podręcznych (cache) - katalog •  Hierarchiczna organizacja: procesor – węzeł (system UMA) – system NUMA •  Zalety modelu wspólnej pamięci dla programowania •  Dobra efektywność dla aplikacji o dominujących odczytach z nielokalnej pamięci •  Gorsza efektywność dla aplikacji o dominujących zapisach do nielokalnej pamięci •  Skalowalność: 1024 – 2560 rdzeni

35

 

13

Syst System emy y SM SMP P - podsu podsumo mow wanie anie

•  Symetryczna architektura – jednakowy dostęp procesorów do pamięci operacyjnej oraz we/wy (na

poziomie fizycznych przesyłów – tylko w systemach wieloprocesorowe z pamięcią wspólną fizycznie - UMA) •  Utrzymanie spójności pamięci podręcznych (cache): –  systemy UMA - snooping lub katalog –  systemy NUMA - katalog

•  Łatwe programowanie (realizacja algorytmów równoległych) •  Niska (UMA) i średnia (NUMA) skalowalność

14

Syst System emy y MMP MMP

Systemy wieloprocesorowe z pamięcią rozproszoną. MPP –  Massively Parallel Processors .

14.1 14. 1

Upr Uprosz oszczon czona a org organi anizac zacja ja

14.2 14. 2

Hie Hierar rarch chiczn iczna a org organi anizac zacja ja

14.2. 14. 2.1 1

Rodzaje Rodzaje węz ęzłó łów w

•  Procesor + PaO •  System wieloprocesorowy z pamięcią wspólną UMA •  System wieloprocesorowy NUMA (z niejednorodnym dostępem do pamięci)

36

 

14.3 14 .3

Topo opolo logi gia a

Sieci łączące węzły MPP. •  Hipersześcian •  Krata 2D, 3D •  Torus 2D, 3D •  Przełącznica krzyżowa (hierarchiczne przełącznice krzyżowe) •  Sieci wielostopniowe (Omega, Butterfly, grube drzewo, Dragonfly i inne) •  Sieci specjalizowane ( proprietary   /  custom network )

14.4

Obsłu Obsługa ga przes przesyłu yłu ko komun munik ikató atów w

Obsługa przesyłu komunikatów w węzłach systemu wieloprocesorowego. •  Programowa obsługa przesyłu przez procesory węzłów pośredniczących (systemy I generacji) •   Sprzętowa obsługa przesyłu przez routery węzłów pośredniczących, bez angażowania procesorów

(systemy II generacji)

14.5 Nar 14.5 Narzęd zędzia zia pro progra gramo mow we Narzędzia programowe wspierające budowę programów z przesyłem komunikatów: •  PVM (Parallel Virtual Machine) •  MPI (Message Passing Interface) •  Inne (Cray SHMEM, PGAS )

14.6 14. 6

Pod Podsum sumow owani anie e

•  Hierarchiczna architektura •  Węzeł: procesor, system UMA, (system NUMA) •  Bardzo duża skalowalność •  Wolniejsza (na ogół) komunikacja – przesył komunikatów •  Dedykowane, bardzo szybkie, sieci łączące

37

 

15

Klastry

Klaster (komputerowy) (ang.  cluster ).

15.1 15 .1

De Defin finic icja ja

•  Klaster to zestaw pełnych komputerów (węzłów) połączonych razem, pracujących jako jeden sys-

tem.

•   Wikipedia:

Klaster komputerowy -grupa połączonych jednostek komputerowych, które współpracują ze sobą w celu udostępnienia zintegrowanego środowiska pracy clusterr consists of a set of loosely connected compu computers ters that work togeth together er so that in •   A computer cluste many respects they can be viewed as a single system.

15.2 15. 2

Ogó Ogólna lna st struk ruktur tura a syst systemó emów w typ typu u klas klaster ter

15.3

Ogóln Ogólna a cha charakt rakteryst erystyk yka a klastrów klastrów

15.3. 15. 3.1 1

Węzły ęzły

•  Serwery SMP •  Pełne komputery: PC, stacje robocze 15.3.2 15.3 .2

System System operacy operacyjn jny y

•  Linux •   Unix •   Windows 15.3.3 15.3 .3

Infras Infrastru truktu ktura ra sca scalająca lająca

•  MPI (Message Passing Interface ) •  PVM (Parallel Virtual Machine ) •  SSI (Single System Image ) 15.3.4

Komunik Komunikacja acja między między węzłami węzłami

•   Przesył komunikatów

38

 

15.3. 15. 3.5 5

Siec Siecii łączą łączące ce

•  Sieci specjalizowane – starsze rozwiązania •  Sieci LAN ( Local Area Network ) •  Sieci specjalizowane -nowsze rozwiązania 15.3.6 15.3 .6

Cele Cele budo budowy wy klastr klastrów ów

High-performace mace clusters ) •  Wysoka wydajność (klastry wydajnościowe, klastry obliczeniowe) ( High-perfor •  Wysoka niezawodność (klastry niezawodnościowe) (High-availability clusters ) •  Równoważenie obciążenia (Load balancing clusters ) 15 15.3 .3.7 .7

In Inne ne

•  Zależność moc obliczeniowa –niezawodność •  Korzystny wskaźnik wydajność -cena

15.4 15. 4

Sie Sieci ci łąc łącząc zące e kla klastr strów ów

15.4.1 Sieci specjalizow specjalizowane ane - starsze starsze rozwiąza rozwiązania nia •  HiPPI (High Performance Parallel Interface ) – pierwszy standard sieci “near-gigabit” (0.8 Gbit/s)

- kabel 50-par (tylko superkomputery) •  Memory Channel 15.4. 15. 4.2 2

Siec Siecii LAN LAN

•   Ethernet •  Fast Ethernet •  Gigabit Ethernet 15.4.3

Sieci specjalizow specjalizowane ane - nowsze nowsze rozwiąza rozwiązania nia

Systemowe SAN. •   Myrinet •  Quadrics (QsNet) •  SCI (Scalable Coherent Interface) •   InfiniBand

15.5 15 .5

Fi Fibr bre e Ch Chan anne nell

•  Technologia sieciowa o dużej przepustowości (16 Gb/s) stosowana zwykle do łączenia komputera z

pamięcią zewnętrzną •  Standard magistrali szeregowej definiujący wielowarstwową architekturę •  Powstał w 1988 jako uproszczona wersja HIPPI •  Łącza światłowodowe i miedziane •  Głównym stosowanym protokołem jest SCSI, ponadto ATM, TCP/IP

39

 

15.6 15 .6

Siec Siecii łą łącz cząc ące e - rróż óżni nice ce

•  Parametry – przepustowość, czas opóźnienia •   Topologia –  Ethernet – magistrala, gwiazda, struktury hierarchiczne –  Sieci specjalizowane – sieć przełączników ( switched fabric ) – popularna topologia „grubego

drzewa”

15.7 15. 7

Sie Sieci ci sspecja pecjalizo lizowa wane ne (SA (SAN) N)

Na przykładzie sieci InfiniBand: 15.7.1 15.7 .1

Opis Opis elemen elementó tów w

•  Adaptery węzłów posiadają sterowniki DMA dla szybkiego odczytu pamięci oraz mikroprocesory

sterujące •  Przełącznikami są przełącznice krzyżowe •  Posiadają adapter kanałowy urządzenia zewnętrznego 15.7.2 15.7 .2

Cechy Cechy transm transmisji isji

•  Każda transmisja w oddzielnym kanale przy realizacji połączenia punkt – punkt •  Komunikat dzielony na pakiety (4 KB) •  Pakiet rozpoczyna 128-bitowy nagłówek adresowy, dekodowany w każdym przełączniku •   Przesył pakietu przez przełącznik do kolejnego przełącznika (punktu) bez kompletowania całego pakietu w przełączniku (cut through routing ,  wormhole routing ) 15.7.3 15.7 .3

Rodzaje Rodzaje kom komunik unikató atów w

•  Operacja odczytu lub zapisu bloku danych w trybie RDMA (Remote DMA) pomiędzy pamięciami operacyjnymi dwóch węzłów •  Kanałowa operacja  send   lub  receive  •  Transmisja komunikatu w trybie rozgłaszania (multicast ) •  Operacja oparta na modelu transakcji (z możliwością wycofania) 15.7.4 15.7 .4

Przepus Przepusto towo wość ść łączy łączy

Obok tej pojedynczej (SDR –  single data rate ) prędkości prędkości InfiniBan InfiniBandd umożl umożliwia iwia też przes przesył ył z podwójną (double    - DDR), poczwórną (quad    - QDR) i wyższymi prędkościami. 15.7.5 15.7 .5

Param Parametr etry y

•  Opóźnienie przesyłu między punktami rzędu 1 mikrosekundy tree ””)) •  Struktura sieci często jest oparta o topologię grubego drzewa (” fat tree 

40

 

15.8 15. 8 15.8.1

Kla Klastr stry y o wy wysok sokiej iej n niez ieza awod wodnoś ności ci Czynniki Czynniki tworz tworzące ące wysok wysoką niezawodność niezawodność klastrów klastrów

1. Redundancja węzłów (mocy obliczeniowej) 2. Dostęp do wspólnych zasobów (pamięci zewnętrznych) 3. Mirroring dysków 4. Mechanizmy kontrolujące funkcjonowanie węzłów 5. Redundancja sieci łączących (dla 3 rodzajów sieci) 6. Redundancja zasilania 15.8.2

Redundancja Redundancja węzłów węzłów / mocy obliczenio obliczeniowej wej

Tryby pracy węzłów: •  Model klastra „aktywny - pasywny” •  Model klastra „aktywny - aktywny”

•  Modele mieszane

15.8.3

Warianty arianty modelu mieszanego mieszanego

dodatkowy,, o uniwersalnych uniwersalnych możliwościac możliwościachh zastąpienia każ każdego dego z pozostałych. •   N + 1   – jeden węzeł dodatkowy dodatkowychh węzłów do M w celu zwiększenia redundancji w przypadku •   N + M   – zwiększenie liczby dodatkowyc dużej różnorodności usług świadczonych przez węzły. •  N – to – N  – kombinacja modeli „aktywny -aktywny” oraz „N + M” –redystrybucja zadań węzła uszkodzonego na kilka innych węzłów aktywnych 41

 

15.9 15.9.1 15.9 .1

Warian arianty ty dostę dostępu pu do wspóln wspólnych ych zasobó zasobów w Zasada Zasada „współ „współdzi dziel el wszys wszystk tko” o”

Wszystkie węzły mają dostęp do wspólnej pamięci zewnętrznej (kontrola dostępu przez mechanizmy blokad). 15.9.2 15.9 .2

Zasada Zasada „nie „nie współdz współdziel iel nic” nic”

Węzły nie współdzielą tego samego obszaru dysku –każdy ma dostęp do własnej części; po awarii czynny węzeł otrzymuje prawo dostępu do całego dysku. 15.9. 15. 9.3 3

Mirr Mirror orin ing g

Każdy węzeł zapisuje dane na własny dysk i automatycznie (pod kontrolą odpowiedniego oprogramowania) jest tworzona kopia tego zapisu na dyskach innych węzłów.

42

 

15.10

Mec Mechaniz hanizmy my k kon ontroluj trolujące ące funk funkcjono cjonowan wanie ie węzł węzłów ów

•  Programy agentów + mechanizm ”heartbeat ” •  Procedura redefiniowania klastra po awarii (” fail-over ””)) 15.10 15.10.1 .1

Hear Heartbe tbeat at

–  Regularne sygnały wysyłane przez każdy węzeł w sieci łączącej węzły klastry, świadczące o

poprawnej pracy węzła –  Mechanizm ”heartbeat ” jest wykorzystywany w procedurze ” fail-over ” –   Heartbeat – również system (program) zarządzania klastrami o wysokiej niezaw niezawodności, odności, oparty na Linux-HA (High-Availability Linux ) 15.10.2 15.1 0.2

Fail-ov ail-over er

–  Zdolność do automatycznego przełączenia systemu, który uległ awarii (również aplikacji, ser-

wera lub sieci) na system rezerwowy –  Operacja przełączania jest podejmowana na podstawie śledzenia sygnału ” heartbeat ” rozwiązaniach iązaniach operacja ” fail-over ” wymaga częściowego nadzoru administratora –   W niektórych rozw ”automated with manual approval ” –   ”Fail-back ” – powrót do stanu początkowego po usunięciu awarii

15.11 15. 11

Pro Proble blem m ryw rywali alizac zacji ji o zaso zasoby by po a awa warii rii

Tzw. problem  split-brain . 15.11.1 15.1 1.1

Mechani Mechanizm zm quorum 

danychh (plik) z opisem konfiguracji klastra i informacjami o wszystkich •  Quorum disk   –– zawiera bazę danyc obiektach zarządzanych przez klaster. •  W danej chwili quorum disk może być w posiadaniu tylko jednego węzła.

15.12 15. 12

Pod Podsum sumow owani anie e

•  Węzły – typowe serwery SMP „z półki” + pełna instancja Systemu Operacyjnego •  Sieci łączące – standardy: Gigabit Ethernet, Infiniband •  Komunikacja między węzłami (procesami) – przesył komunikatów •  Bardzo wysoka skalowalność •  Cele budowy: wysoka wydajność lub/i wysoka niezawodność, równoważenie obciążenia •  Korzystny wskaźnik: cena/wydajność

43

 

Pytania zamknięte 1.   Cechy architektury CISC •  Czy może być wykonana w VLIW Nie, architektura VLIW dotyczy mikroprocesorów i miała na celu jak największe zmniejszenie jednostki centralnej i jej rozkazów (RISC). •  Czy występuje model wymiany danych typu pamięć - pamięć Tak, posiada również niewielką ilość rejestrów.

•  Jest rozkazów Nie, mała w tej liczba architekturze jest PEŁNA (complex) lista rozkazów. Niektóre z zaawansowanych pleceń  nawet nie były wykorzystywane, i bum! tak powstał RISC.

2.   Cechy architektury RISC •  Czy występuje model wymiany danych typu rej-rej Tak, a komu komunikac nikacja ja z pa pamię mięcią cią op oper eracyjn acyjną ą od odbywa bywa się wyłąc wyłącznie znie za pomo omoccą ro rozkazó zkazów w LOAD i  STORE. •  Jest mała liczba trybów adresowania Tak, raptem 4 w procesorze RISC I podczas gdy CISCi mogą mieć ich kilkanaście, w tym takie  bardzo złożone. •  Jest wykonywanych kilka rozkazów w jednym takcie Fałsz. Prawdziwe wykonywanie wielu rozkazów w jednym takcie wymaga superskalarnosci - wielu   jednostek potokowy potokowych. ch. Cechą arch architektury itektury RISC jest potok potokowość, owość, ale poje pojedyncza. dyncza. •  Jest wykonywanych kilka rozkazów w jednym takcie (w danej chwili czasu) Chodzi o przetwarzanie potokowe. Tu jest haczyk - pierwszy procesor RISC I (1980) stawiał sobie  za cel wykonanie  jednego   jednego rozkazu w jednym takcie   i dokładnie tak brzmiało jego założenie projektowe. Jednak jego fizyczna realizacja (1982) posiadała dwustopniowy potok. Również w wykładach   jako ce cecha cha tej architektu architektury ry jest napisane ”Intensywne wykorzystanie przetwarzania potok potokowego”, owego”, co odnosi się do faktu, że obecnie nie ma procesora typu RISC, który go nie ma. Wg mnie prawda. •  Jest wykonywanych kilka instrukcji procesora w jednym rozkazie asemblerowym Nic mi na ten temat nie wiadomo. Brzmi jednak zbyt hardo i odlegle od tematu zmniejszania ilości  rozkazów. •  Układ sterowania w postaci logiki szytej Tak.

44

 

3.   Architektura RISC charakteryzuje się: •  Niedużą liczbą trybów adresowania Cechą architektury RISC jest prostota. Wszystkie rozkazy posiadają jednakowy rozmiar i wystarcza  minimalna liczba trybów adresowania.

•  Modelem obliczeń pamięć - pamięć Nie, ten model był stosowany w CISCach, które posiadały niewielką liczbę rejestrów ponieważ były  droższe oraz obawiano się wzrostu czasu przełączania kontekstu.

mikroprogramowalnych układów sterujących •   Wykorzystaniem mikroprogramowalnych Takie układy były stosowane w CISCach. Jest to też rozwiązanie bardzo stare (początki w latach  50-tych). •   Niezbyt obszerną listą rozkazów RISC dążył do uproszenie listy rozkazów, które w CISCach były ogromne i z większości się nie  korzystało. •   Intensywnym wykorzystaniem przetwarzania potokowego Był to jeden z kluczowych elementów sukcesu procesorów RISC.

45

 

4.   Okna rejestrów •  Chronią przez hazardem danych Lolnope, od tego są mechanizmy skoków opóźnionych i przewidywania rozgałęzień. Okno rejestrów  zapewnia ciągłe i optymalne wykonywanie procedur.

•  Minimalizują liczbę odwołań do pamięci operacyjnej przy operacjach wywołania procedur Tak, dokładnie do tego one służą. Rejestr niski procedury A staje się rejestrem wysokim procedury  B itd. Innymi słowy, procedura A wywołuje procedurę B, i tak dalej. I po coś w tym wszystkim są  rejestry globalne. •  Są charakterystyczne dla architektury CISC Nie, zostały zaprojektowane specjalnie dla architektury RISC. Jako pierwszy posiadał je procesor  RISC I. •  Są zamykane po błędnym przewidywaniu wykonania skoków warunkowych. W mechanizmie prognozowania rozgałęzień jest możliwość błędnego przewidywania. Jednak błędna  prognoza powoduje tylko zmianę strategii (przewidywanie wykonania lub niewykonania), a nie zamykanie okna. •  Są przesuwane przy operacjach wywołania procedur Tak, z każdą nową wywołaną procedurą okno rejestrów przesuwane jest w dół (ze 137 do 0) •  Są przesuwane przy wystąpieniu rozkazów rozgałęzień. W architekturze SPARC okno jest przesuwane rozkazami SAVE i RESTORE, na życzenie programisty, a nie na wskutek rozkazów warunkowych. •  Są otwierane przy występowaniu rozkazów rozgałęzień. Są otwierane przy wywołaniu funkcji.

46

 

5.  Przetwarzanie potokowe: •  Nie jest realizowane dla operacji zmiennoprzecinkowych Nie ma takie takiego go og ogra ranicze niczenia. nia. Przet Przetwarza warzanie nie po potokow tokowee dotyc dotyczy zy optym optymalizac alizacji ji czasu wykon wykonywani ywania  a  rozkazó ro zkazów w - po podział działu u re realizac alizacji ji ro rozkazu zkazu na fazy. Owszem Owszem,, dla ar argumen gumentów tów zmien zmiennopr noprze zecinko cinkowych  wych  mogą wystąpić problemy związane z czasem obliczeń (uniemożliwienie wykonania rozkazu w jednym  takcie), co może zablokować napełnianie potoku, jednak nie uniemożliwia to zastosowania potoku. •  Nie jest realizowane w procesorach CISC Przetwarzanie potokowe znalazło zastosowanie głównie w architekturze RISC, jednak CISC też z  niej korzysta. Przykłady: VAX 11/780 (CISC), Ultra SPARC III (RISC) •  Daje przyspieszenie nie większe od liczby segmentów (stopni) jednostki potokowej Tak, przyspieszenie jest stosunkiem czasu wykonywania   n  rozkazów dla pro procesor cesora a niepo niepotokowego tokowego oraz czasu dla procesora potokowego. W idealnym przypadku, gdy każdy stopień dzieli okres rozkazu  po równo, a liczba rozkazów dąży do nieskończoności, stosunek ten jest równy P - ilości stopni. •  W przypadku wystąpienia zależności między danymi wywołuje błąd i przerwanie wewnętrzne. Hm, dobre pytanie. Tak, zależności danych mogą wystąpić (zjawisko hazardu) i rozdupić program, ale po to właśnie istnieją mechanizmy by temu zapobiegać. Każda szanująca się architektura to potrafi: albo sprzętowo, albo nanie etapie kompilacji, która modyfikuje i optymalizuje A jeżeli  po modyfikacji pewien rozkaz wykona się w jednym takcie, napełnianie potokuprogram. jest przerywane  (ale błędu chyba nie wywala), patrz wyżej. •  Jest realizowane tylko dla operacji zmiennoprzecinkowych Pfff, no chyba nie XD Jest realizowane dla każdego rodzaju rozkazu.

6.  Mechanizmy potokowe stosowane są w celu: Uszeregowania ania ciągu wykon wykonywanyc ywanychh rozkaz rozkazów ów •   Uszeregow Nie, zupełnie nie o to chodzi. Ciąg może zostać uszeregowany przez kompilator w celu optymalizacji. Jednak celem tego mechanizmu jest zrównoleglenie wykonywania rozkazów  →  zmiana kolejności ich  realizacji nie jest założeniem. •   Uzyskania równoległej realizacji rozkazów No tyć. Potoki umożliwiają realizację wielu rozkazów jednocześnie dzieląc jednostkę centralną na wg  stopni, jak np. pobranie rozkazu i wykonania rozkazu. Dzięki temu dwa rozkazy mogą wykonywać  się jednocześnie, oba w innych fazach (jednostkach czasu). •   Przyspieszenia realizacji rozkazów Tak, to główn głównyy ce cel. l. Umożli Umożliwieni wieniee wykon wykonania ania ro rozkazó zkazów w umożl umożliwia iwia przys przyspiesz pieszenie, enie, któr któree oblic oblicza  za  się jako stosunek czasu wykonywania rozkazów w procesorze niepotokowym do czasu realizacji w  procesorze potokowym. W idealnym przypadku jest ono równe   P  - ilości podziałów / stopni / faz /  zwał jak zwał.

47

 

7.   Hazard danych: •  Czasami może być usunięty przez zmianę kolejności wykonania rozkazów Tak, służy do tego mechanizm skoków opóźnionych, który odbywa się na poziomie kompilacji programu.

•  Nie występuje w architekturze superskalarnej Występuje wszędzie tam gdzie jest potokowe przetwarzania rozkazów. •  Jest eliminowany przez zastosowanie specjalnego bitu w kodzie program Nic mi o tym nie wiadomo. Pewne dodatkowe bity są wykorzystywane w mechanizmie przewidywania  rozgałęzień, który służy do eliminacji hazardu, jednak on to odbywa się PRZED realizacją programu  i sprowadza się do zmiany kolejnosci wykonywania rozkazów przez kompilator. Nic nie dodaje do treści programu. •  Może wymagać wyczyszczenia potoku i rozpoczęcia nowej (...) Nie wie wiem m jak haz hazar ard d dan danych ych moż możee cze czegok gokolw olwiek iek wym wymaga agaćć sko skorro jes jestt zja zjawisk wiskiem iem ub ubo oczn cznym ym i je  eliminujemy. Sprzętowa i programowa eliminacja hazardu jedynie może doprowadzić do   wstrzymania  napełniania  napełniania potoku.

8.  Jak można ominąć hazard danych: •  Poprzez rozgałęzienia Nie, rozgałęzienie to po prostu instrukcje typu IF, które tworzą takie rozgałęzienia. Mechanizm  przewidywania rozgałęzień jest stosowany do usuwania hazardu sterowania związanego ze skokami  i rozgałęzieniami. •  Poprzez uproszczenie adresowania - adresowanie bezpośrednie. Bullshit. Nie wiem w czym miało by po pomó mócc upr uproszcz oszczenia enia adresowan adresowania, ia, po poza za pó pójściem jściem w str stronę  onę  RISCu, ale na hazard to nie pomoże. Tym można tylko skrócić czas odwołania się do danych. •   Przez zamianę rozkazów Tak, i na tym polega mechanizm skoków opóźnionych, które mogą program zmodyfikować (dodać  rozkaz NOP) albo zoptymalizować, właśnie zamieniają rozkazy kolejnością.

48

 

9.  Dla uniknięcia hazardu danych można: •  Zastosować uproszczone metody adresacji. RISC nie eliminuje hazardu XD Skracają tylko czas dostępu do pamięci. •   Wykorzystać szynę zwrotną. Szyna zwrotna jest stosowana by zastosować ”wyprzedzające pobieranie argumentów”, które eliminuje prawdziwą zależność danych (RAW). •  Zastosować specjalny bit w kodzie rozkazu. Jeden dodatkowy bicik nie sprawi, że argument będzie odczytany poprawnie. •  Zastosować tablicę historii rozgałęzień. Ona eliminuje hazard sterowania. •   Wstrzymać na 1 takt napełnianie potoku. Tak, to może wyeliminować antyzależność (WAR).

10.   Mechanizm skoków opóźnionych: •  Polega na opóźnianiu wykonywania skoku do czasu wykonania rozkazu następnego za skokiem Tak, cały ten mechanizm sprowadza się do opóźnienia efektu skoku o jeden rozkaz. Zapewnia to, że  rozkaz następny po skoku zawsze będzie wykonywany w całości.

Wymagaa wstrzymania wstrzymania potoku na jeden takt. •   Wymag Nie, mechanizm potoków nie musi być wstrzymywany. Mechanizm ten zmienia postać programu w  trakcie kompilacji, ale na samą realizację potoku nie ma wpływu (afaik, not sure). •  Powoduje błąd na końcu pętli Pfff, jak programista ssie pałę to tak, jednak w założeniu tak się nie dzieje. •  Wymaga umieszczenia rozkazu NOP za rozkazem skoku lub reorganizacje programu Tak, mechanizm sprowadza się do tego, i tylko do tego, patrz pierwsza odpowiedź.

49

 

11.   Tablica historii rozgałęzień: •   Zawiera m.in. adresy rozkazów rozgałęzień Tak, tablica ta zawiera bit ważności,  adres rozkazu rozgałęzienia, bity historii oraz  adres docelowy rozgałęzienia.

Pozwala zminim zminimalizo alizować wać liczbę błędn błędnych ych przew przewidyw idywań ań rozgał rozgałęzień ęzień w zagnie zagnieżdżone żdżonejj •   Pozwala pętli Tak, z tego co wiem jest strategią dynamiczną i najbardziej optymalną ze wszystkich - skończony  automat przewidywania rozgałęzień oparty na tej tablicy (z dwoma bitami historii) może być zrealizowany na dwóch bitach.

•  Nie może być stosowana w procesorach CISC Ten mechanizm służy zabezpieczeniu przed hazardem, który występuje w przetwarzaniu potokowym, a z tego korzystają zarówno CISC jak i RISC. •  Jest obsługiwana przez jądro systemu operacyjnego Chyba nie, ten mechanizm znajduje się w sprzęcie procesora. •  Jest stosowana do statycznego przewidywania rozgałęzień. Ona służy do dynamicznego przewidywania rozgałęzień. Początkowe strategie są statyczne, ale później zmieniają się w dynamiczne. •  Pozwala zapamiętać całą historię wykonań każdego rozkazu rozgałęzienia. Tablica poświęca dla każdego rozkazu pewną skończoną liczbę bitów w celu przewidzenia rozgałęzienia.

50

 

12.   W tablicy historii rozgałęzień z 1 bitem historii można zastosować następujący algorytm przewidywania (najbardziej złożony):

•  Skok opóźniony Nie, skoki opóźnione opóźnione nie służą do przew przewidywa idywania nia ro rozgałę zgałęzień, zień, są zup zupełnie ełnie innym me mechani chanizmem  zmem  eliminacji hazardu. •  Przewidywanie, że rozgałęzienie (skok warunkowy) zawsze nastąpi Nie, to strategia statyczna, która może być wykonywana gdy adres rozkazu rozgałęzienia NIE jest  w tablicy. Nie wykorzystuje bitu historii. •  Przewidywanie, że rozgałęzienie nigdy nie nastąpi Nie, to strategia statyczna, która może być wykonywana gdy adres rozkazu rozgałęzienia NIE jest  w tablicy. Nie wykorzystuje bitu historii. Przewidywanie, anie, że kol kolejne ejne wyk wykonanie onanie rozk rozkazu azu rozgał rozgałęzieni ęzienia a będzie przeb przebiegało iegało tak •   Przewidyw samo jak poprzednie Tak, i to jest wszystko na co stać historię 1-bitową. Historia 2-bitowa umożliwia interpretację: - historii ostatniego wykonania skoku - tak lub nie; - przewidywania następnego wykonania skoku - tak lub nie 

A zamiana strategii następuje dopiero po drugim błędzie przewidywania. •  Wstrzymanie napełniania potoku Nie, wstrzymywanie potoku mogą spowodować algorytmy zajmujące się eliminacją hazardu danych  - zależności między argumentami.

51

 

13.   Problemy z potokowym wykonywaniem rozkazów skoków (rozgałęzień) mogą być wyeliminowane lub ograniczone przy pomocy:

•   Zapewnienia spójności pamięci podręcznej Nie, to problem komputerów wieloprocesorowych.

•   Tablicy historii rozgałęzień Tak, to najprawdopodobniej najlepszy służący ku temu mechanizm. Stara się przewidywać czy skok  będzie wykonany bądź nie, wykorzystuje do tego kilka strategii. •  Techniki wyprzedzającego pobrania argumentu Nie, ten mechanizm służy do eliminacji hazardu danych - zależności między argumentami. •  Wystawienia do programu rozkazów typu „nic nie rób” Tak, tym rozkazem jest   NOP  i jest wstawiany przez mechanizm skoków opóźnionych, który służy  do zabezpieczania potoku. •  Protokołu MESI Nie, on jest od zapewnienia spójności pamięci wspólnej czy jakoś tak. •   Wykorzystania techniki skoków opóźniających Tak, umożliwiają ona modyfikację programu (wstawienie rozkazu NOP), albo jego optymalizację  (zamiana kolejności wykonywania rozkazów.) Mechanizm ten opóźnia efekt skoku o jeden rozkaz, co zapewnia, że rozkaz po skoku będzie w całości wykonany. •   Technologii MMX Polega zupełnie na czym innym.

52

 

14.  Konsekwencją błędu przy przewidywaniu rozgałęzień może być: •  Wstrzymanie realizowanego wątku i przejście do realizacji innego wątku Przewidywanie rozgałęzień odbywa się lokalnie, osobno dla każdego wątku. •  Konieczność wyczyszczenia kolejki rozkazów do potoku W przypadku jeżeli mechanizm przewidywania rozgałęzienia się pomyli i zacznie pobierać rozkazy z  błędnego rozgałęzienia, potok rozkazów musi zostać wyczyszczony. Czyli np. w IFie miało być  true, a okazało się, że  false   false, to należy zbędne pobrane rozkazy wyczyścić. •  Konieczność wyczyszczenia tablicy historii rozgałęzień. W przypadku błędu należy tablicę aktualizować, aby w przyszłości to rozgałęzienie było przewidywane  z większą dokładnością. •  Przerwanie realizowanego procesu / wątku i sygnalizacja wyjątku Nie, należy jedynie zmienić strategię / przejść do innej gałęzi, a nie usuwać proces. Błąd przewidywania rozgałęzień nie jest czymś na tyle złym, by przerywać program. To naturalna konsekwencja  potokowości, z którą należy się uporać. •  Konieczność przemianowania rejestrów w procesorach Przemianowanie rejestrów występuje by procesorach skalarnych w celu równoległej realizacji zadań  na potokach.

53

 

15.   W procesorach superskalarnych: •  Liczba rozkazów, które procesor może wykonać w 1 takcie zależy od liczby jednostek potokowych w procesorze Procesory superskalarne posiadają wiele jednostek potokowych, które są konieczne by móc wykonywać wiele rozkazów w jednym takcie. Od ich liczby zależy owa liczba rozkazów. •  Liczba rozkazów, które procesor może wykonać w jednym takcie, zależy od liczby stopni potoku. Nie,, lic Nie liczb zba a sto stopni pni poto otoku ku mów mówi, i, na ile czę części ści dzi dzieli eli się dan danyy rozk ozkaz az w tej je jedno dnostc stcee poto otokow kowej. ej. One umożliwiają wykonanie wielu rozkazów w jednej jednostce czasu, jednak nie przekłada się to bezpośrednio na liczbę rozkazów, ze względu na zawikłania czasowe, oraz nie jest to idea procesora  superskalarnego. •  Liczba rozkazów pobieranych z pamięci, w każdym takcie musi przekraczać liczbę jednostek poto-

kowych Liczba pobranych rozkazów powinna być co najmniej równa ilości jednostek potokowych. •   Liczba rozkazów, które procesor może wykonać w taktach zależy od liczby jednostek potokowych w procesorze Tak, patrz pierwsza odpowiedź. •  Jest możliwe równoległe wykonywanie kilku rozkazów w jednym procesorze (rdzeniu) Tak, właśnie taka jest idea stworzenia procesorów superskalarnych, by móc w jednym takcie wykonać  >  1  liczby instrukcji. Zapewnia to niepojedyncza liczba jednostek potokowych. •   Rozszerzenia architektury wykorzystujące model SIMD umożliwiają wykonanie rozkazów wektorowych Tak, ”pojedyncza instrukcja - wiele urządzeń”. To rozszerzenie korzysta z możliwości architektury  superskalarnej - możliwości wykonywania wielu rozkazów w 1 takcie - i realizuje pojedynczy rozkaz  na wielu rejestrach jednocześnie. •  Nie występuje prawdziwa zależność danych Niestety występuje, i prawdę mówiąc, występuje tutaj każdy rodzaj zależności między rozkazami: prawdziwa zależność danych, zależność wyjściowa oraz antyzależność. •  Mogą wystąpić nowe formy hazardu danych: zależności wyjściowe między rozkazami oraz antyzależności Tak, patrz wyżej. •  Nie występuje hazard danych (problemy z potokowym wykonaniem rozkazów o zależnych argu-

mentach). Nie, patrz wyżej. •   Hazard sterowania jest całkowicie eliminowany przez statyczne strategie przewidywania rozgałę-

zień. Superskalarna architektura ma mechanizm dynamicznego przewidywania, a poza tym, ani statyczne, ani dynamiczne strategie nie eliminują całkowicie hazardu sterowania.

54

 

16.   Architektura superskalarna: •  Dotyczy systemów SMP Zdecydowanie nie tylko. Architektura superskalarna wymaga mechanizmu potokowego, czyli dotyczy  głównie architektury RISC.

•  Wymaga zastosowania protokołu MESI Nie, architektura superskalarna wymaga jedynie zastosowania co najmniej dwóch jednostek potokowych. •  Umożliwia równoległe wykonywanie kilku rozkazów w jednym procesorze Tak, i taki jest cel jej istnienia. Umożliwia to mechanizm potokowy. •  Wywodzi się z architektury VLIW Wręcz odwrotnie, to VLIW wykorzystuje architekturę superskalarną na której opiera swój podział  rozkazów na paczki. •   Wykorzystuje wiele potokowych jednostek funkcjonalnych Tak, wymag wymagane ane są co najmniej dwie je jednos dnostki tki po potokowe tokowe,, poniew onieważ aż ar archite chitektur ktura a sup superska erskalarna larna w  założeniu może wykonywać wiele rozkazów w jednym takcie. •  Nie dopuszcza do wystąpienia hazardu sterowania Hazard sterowania jest problemem jednostek potokowych i muszę one być rozwiązane przez skoki  opóźnione lub tablicę historii rozgałęzień. Sama architektura superskalarna nie gwarantuje rozwiązania tego problemu. •  Umożliwia wykonanie wielu rozkazów w jednym takcie Jest to idea architektury superskalarnej. •  Wykorzystuje model obliczeń pamięć - pamięć Ta architektura nie jest ograniczona do jednego modelu obliczeń. •  Jest stosowana tylko w procesorach wielordzeniowych Archite Ar chitektur ktura a sup superska erskalarna larna to nie wielor wielordzeni dzeniowość owość!! Je Jednos dnostka tka sup superska erskalarna larna wykon wykonuje uje wiele  instrukcji jednocześnie, ale w pojedynczym wątku. Z kolei procesor wielordzeniowy potrafi wykonywać wiele wątków, czyli wiele ciągów instrukcji jednocześnie. Jednostka superskalarna może być  rdzeniem, ale ofc nie tylko w tym typie procków jest stosowana.

55

 

17.  Przetwarzanie wielowątkowe: •  Zapewnia lepsze wykorzystanie potoków Tak, ma na celu minimalizację strat cykli w trakcie realizacji wątku, jakie mogą powstać na wskutek: - chybionych odwołań do pamięci podręcznej; - błędów w przewidywaniu rozgałęzień; - zależności między argumentami  •  Minimalizuje straty wynikające z chybionych odwołań do pamięci podręcznej Tak, patrz wyżej. •  Wymaga zwielokrotnienia zasobów procesora (rejestry, liczniki rozkazów, itp.) Niestety tak, jest to warunek sprzętowej realizacji wielowątkowości. •  Nie może być stosowane w przypadku hazardu danych Nie, hazard danych wynika z zależności między argumentami, które są naturalnym ryzykiem przy  stosowaniu mechanizmu potokowego. Nie powinny być blokowane z tego powodu, tym bardziej, że  wielowątkowość ma dodatkowo chronić liczbę cykli przed zgubnym wpływem hazardu.

18.  Pojęcie równoległości na poziomie rozkazów: •  Dotyczy architektury MIMD Nie, ten rodzaj równoległości dotyczy mechanizmów potokowych (CISC i RISC), architektury superskalarnej oraz VLIW. •  Odnosi się m.in. do przetwarzania potokowego Tak, ideą mechanizmu potoków jest zrównoleglenie rozkazów i możliwość wykonywania wielu z nich  w tej samej chwili czasu. •  Dotyczy architektury MPP Nie, patrz wyżej. •   Dotyczy m.in. architektury superskalarnej Tak, patrz wyżej.

56

 

19.  Efektywne wykorzystanie równoległości na poziomie danych umożliwiają: •   Komputery wektorowe •   Komputery macierzowe •   Klastry •  Procesory graficzne •   Rozszerzenia SIMD procesorów superskalarnych Ogółem zastosowanie tej równoległości jest możliwe gdy mamy do czynienia z wieloma danymi, które mogą być przetwarzane w tym samym czasie. A grafika, wektory, macierze itp. do takich  należą.

20.   Wielowątkowość współbieżna w procesorze wielopotokowym zapewnia: •   Możliwość wprowadzenia rozkazów różnych wątków do wielu potoków Tak, jest to charakterystyczna cecha tego typu wielowątkowości. Z kolei wielowątkowości grubo- i  drobnoziarniste umożliwiają wprowadzenie do wielu potoków   wyłącznie   jednego wątku (w jednym  takcie!) Realizację ję każd ażdego ego z wą wątk tków ów do mom momen entu tu wst wstrzy rzyman mania ia któ któreg regoś oś roz rozk kazu z dane danego go •   Realizac wątku Tak, wątek jest realizowany do momentu wstrzymania rozkazu. Tę samą cechę posiada wielowątkowość gruboziarnista. Z kolei wielowątkowość drobnoziarnista w kolejnych taktach realizuje naprzemiennie rozkazy kolejnych wątków.

•  Przełączanie wątków co takt Nie, to umożliwia tylko wielowątkowość drobnoziarnista. •  Automatyczne przemianowanie rejestrów Głowy nie dam, ale chyba żadna wielowątkowość nie zapewnia automatycznego przemianowania.

57

 

21.  Metoda przemianowania rejestrów jest stosowana w celu eliminacji: •  Błędnego przewidywania rozgałęzień Nie, do tego służy m.in. tablica historii rozgałęzień. •  Chybionego odwołania do pamięci podręcznej Nie, to jest problem architektury VLIW i eliminuje się do przez przesunięcie rozkazów LOAD jak  najwyżej, tak aby zminimalizować czas ewentualnego oczekiwania  •  Prawdziwej zależności danych Nie, od tego jest metoda wyprzedzającego pobierania argumentu. •   Zależności wyjściowej między rozkazami. Tak, ta meto metoda da elimin eliminuje uje powyżs owyższy zy i po poniższ niższyy pr problem oblem.. Pole Polega ga na dyna dynamiczn micznym ym przyp przypisywan isywaniu  iu  rejestrów do rozkazów. •   Antyzależności między rozkazami Patrz wyżej.

22.  Wyprzedzające pobranie argumentu pozwala rozwiązać konflikt wynikający z: •  Zależności wyjściowej miedzy rozkazami Tę zależność musi kontrolować układ sterujący. •   Prawdziwej zależności danych Tak, do tego służy, patrz: prawdziwa zależność danych  5.3.1   5.3.1 •  Błędnego przewidywania rozgałęzień Nie powoduje konfliktów, należy je tylko obsłużyć i ograniczyć liczbę występowań. •   Antyzależności miedzy rozkazami Rozkazowi, który odczytuje jakąś zmienną, od razu jest podrzucana jej zmieniona wartość. zamiast  przechodzić przez rejestr pośredni (zapis i ponowny odczyt).

23.  Przepustowość (moc obliczeniowa) dużych komputerów jest podawana w: •   GFLOPS •  Liczbie instrukcji wykonywanych na sekundę •  Liczbie operacji zmiennoprzecinkowych na sekundę •   Mb/sek To jest do zapamiętania na prostu - takie są standardy 

58

 

24.   Podstawą klasyfikacji Flynna jest: •  Liczba jednostek przetwarzających i sterujących w systemach komputerowych •  Protokół dostępu do pamięci operacyjnej •  Liczba modułów pamięci operacyjnej w systemach komputerowych •  Sposób połączenia jednostek przetwarzających z modułami pamięci operacyjnej. •   Liczba strumieni rozkazów i danych w systemach komputerowych To po pr prostu ostu należ należyy zap zapamięt amiętać. ać.   Kryte strumieni Kryteriu rium m kla klasyfi syfikac kacji ji Fly Flynna nna jes jest  t    liczba strumieni rozkazów   oraz    liczba strumi strumieni eni dany danych ch   w syste systemie mie komput komputer erowym. owym. NIC WIĘCE WIĘCEJ, J, NIC MNIEJ. Albo inaczej:   Liczba strumieni × (rozkazow  +  danych)

25.   Model SIMD: •  Był wykorzystywany tylko w procesorach macierzowych Nie, o niego oparte są również m.in. procesory wektorowe, GPU, technologie MMX oraz SSE. Nie, był również wykorzystywany w komputerach wektorowych, rozszerzeniach SIMD oraz GPU. •   Jest wykorzystywany w multimedialnych rozszerzeniach współczesnych procesorów Tak, multimedialne rozszerzenie służą do działania na wielu rejestrach jednocześnie, co umożliwiają  m.in. technologie MMX i SSE. •   Jest wykorzystywany w heterogenicznej architekturze PowerXCell Tak jest   htt https: ps: // en. wik wikipe ipedia dia.. org org// wik wiki/ i/ Cel Cell_ l_ ( mic microp roproc rocess essor) or) •  Zapewnia wykonanie tej samej operacji na wektorach argumentów Znaczenie:  Single Instruction Multiple Device. Wykonuje jedną instrukcję na wielu urządzeniach. •   Jest podstawą rozkazów wektorowych Pod ten model są zaprojektowane rozkazy wektorowe - jedno instrukcja, wiele urządzeń. •  Jest podstawą architektury procesorów superskalarnych Nie, jest wykorzystywany w rozszerzeniach wektorowych, ale nie jest podstawą.

59

 

26.   Komputery wektorowe: •  Posiadają jednostki potokowe o budowie wektorowej Nie, posiadają potokowe jednostki arytmetyczne, które nie są wektorowe. •  Posiadają w liście rozkazów m.in. rozkazy operujące na wektorach danych Jak najbardziej, nie mogłyby się bez tego obejść. •  Wykorzystują od kilku do kilkunastu potokowych jednostek arytmetycznych Tak, tych jednostek może być wiele, można to zauważyć na przykładzie komputera Cray-1 (wykład  7-8, slajd 31) •  Posiadają listę rozkazów operujących wyłącznie na wektorach Zdecydow Zde cydowanie anie nie. Owsze Owszem, m, te kompu komputery tery po posiada siadają ją re rejestr jestryy wekto wektoro rowe we i wektor wektorowe owe je jednost dnostki  ki  zmiennoprzecinkowe, ale nie jest to wszystko. Mają również normalne rejestry, adresację, jednostki  skalarne i możliwość wykonywania na nich operacji.

27.   Moc obliczeniowa komputerów wektorowych: Zależyy od liczb liczbyy stopni potoku. •   Zależ Moc obliczeniowa nie jestwzależna od liczby stopni Ta jedynie wpływa na ilosć rozkazów   jakie mogą być wykonane chwili czasu w jedno jednostce stcepotoku. potokowej. potoko wej. •  Jest odwrotnie proporcjonalna do długości taktu zegarowego n  1 Tak, obliczamy ją wzorem  Przep =  lim n t +(n 1) τ   = τ  →∞

start



×

•  Jest wprost proporcjonalna do długości taktu zegarowego Nie, patrz wyżej. •  Zależy odwrotnie proporcjonalnie od liczby jednostek potokowych połączonych łańcuchowo. Nie, idea operacji wektorowej na komputerze wektorowym zakłada jedną jednostkę potokową. Ich  zwiększenie nie powinno wpłynąć bezpośrednio na moc.

•  Zmierza asymptotycznie do wartości maksymalnej wraz ze wzrostem długości wektora Tak, istnieje pewna wartość maksymalna do której moc dąży logarytmicznie wraz ze wzrostem długości wektora. •  Nie zależy od długości wektora Bzdura, patrz wyżej. •  Zależy liniowo od długości wektora Bzdura, patrz wyżej.

60

 

28.   Procesory wektorowe: •  Mogą być stosowane w systemach wieloprocesorowych Domyślnie procesory wektorowe mogą pracować pojedynczo, ale mogą być częścią takiego systemu. Poza tym nie znalazłem nic, co by temu przeczyło. Jest też np. CUDA - architektura wielordzeniowych procesorów graficznych. Sama architektura SIMD działa na wielu procesorach. •  Mają listę rozkazów operującą jedynie na wektorach Nie, posiadają też m.in. potokowe jednostki arytmetyczne oraz jednostki skalarne, do operowania  na zwykłych liczbach. •  Mają moc kilka razy większą od procesorów skalarnych Tak, przys przyspiesz pieszenie enie jest ilor ilorazem azem czasu wykon wykonywani ywania a na pr proc ocesorz esorzee niewe niewektor ktorowym owym do czasu  wykonywania na procesorze wektorowym. Np. dla rozkazu dodawania   n   wektorów przyspieszenie  τn wyliczane jest wg wzoru  a  a  = t   15  n  dążącym do nieskończoności  a  a  jest równe 15. +(n 1)τ  , gdzie przy  n start



29.   Komputery macierzowe: •  Mają w liście rozkazów m.in. rozkazy operujące na wektorach danych Tak, te kompu komputery tery są ro rozwinię zwinięciem ciem kompu komputer terów ów wekto wektoro rowych wych i muszą mie miećć ro rozkazy zkazy wekto wektoro rowe. we. Komputery macierzowe posiadają po   n  jednostek przetwarzających, które potrafią razem obliczyć   n składowych wektora. •  Mają macierzowe potokowe układy arytmetyczne Nie, posiadają natomiast jednostki przetwarzające. Z kolei potokową jednostkę arytmetyczną posiadają komputery wektorowe. •  Mają w typowych rozwiązaniach zestaw pełnych procesów połączonych siecią połączeń Nie, w typowym rozwiązaniu jest jeden pełny procesor z wieloma jednostkami potokowymi, które  są połączone siecią łączącą (statyczną lub dynamiczną). Sieć połączeń pełnych procków posiadają  superkomputery z top500 (Nie jestem pewien tej odpowiedzi). •   Wykonują synchroniczną operację wektorową w sieci elementów przetwarzających Tak właśnie działają.

61

 

30.   Rozkazy wektorowe mogą być realizowane przy wykorzystaniu: •   Macierzy elementów przetwarzających Tak, komputery macierzowe operują na rozkazach wektorowych. •  Zestawu procesorów superskalarnych Procesory superskalarne w założeniu nie posiadają rozkazów wektorowych. •   Technologii MMX Tak, jest to pochodna technologia modelu SIMD, wykonuje operacje na krótkich wektorach (64-bit) •  Sieci połączeń typu krata Jest to sieć połączeń, która łączy jednostki przetwarzające w komputerze macierzowym. Raczej na  wektorach na częsć komputera nie działa. •  Potokowych jednostek arytmetycznych Tak, takie znajdują się w komputerach wektorowych.

31.  Rozkazy wektorowe: •  Nie mogą być wykonywane bez użycia potokowych jednostek arytmetycznych Mogą. Komputery macierzowe ich nie posiadają i wykonują rozkazy wektorowe sprawnie. •   Są charakterystyczne dla architektury SIMD Tak, z niej się zrodziły, tak samo jak m.in. technologie MMX i SSE. •  Są rozkazami dwuargumentowymi i w wyniku zawsze dają wektor Nie, mogą operować na 1 argumencie na przykład. Rozkaz może być też 3 argumentowy, jak rozkaz  dodawania VADD. Pierwszym argumentem jest rejestr docelowy, zawartość pozostałych dwóch jest  dodana. •  W komputerach wektorowych ich czas wykonania jest wprost proporcjonalny do długości wektora Tak, na przykładzie rozkazu dodawania wektorów widać, że czas rośnie równomiernie wraz z ilością  elementów wektora. tw  =  t start + (n − 1) × τ 

•  W komputerach wektorowych ich czas wykonania jest liniowo zależny od długości wektora Tak, patrz wzór wyżej. Wyraźnie widać, że wraz ze wzrostem długości wektora, rozkaz dodawania  wykonuje się dłużej o stałą wartość. Z kolei przepustowość (liczba operacji zmiennoprzecinkowych  na sekundę) rośnie logarytmicznie wraz z długością wektora.

macierzowych ich czas wykonania jest wprost proporcjonalny prop orcjonalny do liczby elementów •   W komputerach macierzowych przetwarzających Przy odpowiedniej liczbie jednostek przetwarzających jest stały  •  Mogą być wykonane na sieci elementów przetwarzających. Czyli na komputerze macierzowym - owszem.

62

 

32.   Architektura CUDA: •  Umożliwia bardzo wydajne wykonywanie operacji graficznych Tak, ta architektura jest rozwinięciem mechanizmów wektorowych oraz macierzowych i jest przeznaczona specjalnie dla przetwarzania grafiki.

Stanowii uniw uniwersaln ersalną ą arc architekt hitekturę urę oblicz obliczeniow eniowa a połączoną z równ równoległym oległym modelem •   Stanow programistycznym Tak, pomimo specjalizacji graficznej, architektura ta jest uniwersalna i zdolna do wszystkiego. Procesory posiadają uniwersalne programy obliczeniowe, a CUDA posiada model programistyczny (oraz  podział programu na 5 faz). Składa się on z: - Kompilatora NVCC; - Podział programu na kod wykonywany przez procesor (host code) oraz kartę graficzną (kernel); - Realizacja obliczeń równoległych wg modelu SIMT (Single Instruction Multiple Threading)

•  Realizuje model obliczeniowy SIMT Tak, patrz wyżej. Działanie: wiele niezależnych wątków wykonuje tę samą operację. Architektura  posiada również mechanizm synchronizacji wątków ( barrir synchronization) dla komunikacji oraz  współdzielona współdzielon a pamię pamięć. ć.

•  Jest podstawą budowy bardzo wydajnych Komputery CUDA nie samodzielnych, są ogólnego zastosowania, tylko do komputerów ogólnych problemów numerycznych. Na  pewno nie są podstawą, bo np. komputer ... (dokończyć by trza)

33.   Systemy SMP: •  Wykorzystują protokół MESI do sterowania dostępem do wspólnej magistrali Ten pr protokó otokółł wykor wykorzystu zystują ją syste systemy  my   UMA   (podkategoria systemów SMP) ze wspólną magistralą  w ce celu lu zap zapewnie ewnienia nia sp spójnoś ójności ci pamię amięci ci po podr dręc ęcznyc znych h ( snooping). Mo Mogą gą też uży używać wać kat katalo alogów gów,, ale  podkategoria  NUMA   NUMA  wykorzystuje wyłącznie katalogi. •  Posiadają skalowalne procesory SMP należy do systemów wieloprocesorowych, ale te nie muszą być skalowalne.

•  Posiadają pamięć fizyczniewspólna. rozproszoną, ale logicznie wspólną Nie, pamięć jest fizycznie Fizycznie rozproszoną pamięć posiadają systemy MPP.

63

 

34.  Systemy wieloprocesorowe z jednorodnym dostępem do pamięci (UMA): •  Zapewniają spójność pamięci podręcznych wszystkich procesorów Czuwa nad tym protokół MESI, każdy uaktualnia stan pamięci w każdym z procesorów. •   Mają niską skalowalność Mają wr wręc ęczz chujo chujową wą skalo skalowalno walność, ść, po poniewa nieważż przew przeważnie ażnie są po połączo łączone ne takim takimii kons konstrukc trukcjami jami jak  przełącznica krzyżowa czy wspólna magistrala, a sam mechanizm  snoopingu  jest kiepsko skalowalny. •  Wykorzystują katalog do utrzymania spójności pamięci. Tak, wg wykła wykładów dów Kozie Kozielskie lskiego go UMA może wykor wykorzysty zystywać wać do kont kontro roli li pa pamię mięci ci sp spójnej ójnej zar zarówno ówno katalog, jak i protokół MESI. •  Wykorzystują przesył komunikatów między procesorami. To cecha MPP oraz klastrów. •   Umożliwiają dostęp do pamięci najczęściej poprzez wspólną magistralę lub przełącznicę krzyżową. Są to je jedne dnego go z moż możliw liwych ych kon konfigu figurracj acjii UMA UMA,, są to naj najpr prost ostsze sze i naj najtań tańsze sze rozw ozwiąz iązani ania, a, wię więc  c  prawdopodobnie też najczęściej stosowane (ale również najmniej skalowalne).

35.   Protokół MESI: •  Jest wykorzystywany do sterowania dostępem do magistrali w systemie SMP Protokół MESI wykorzystywany jest do zapewniania spójności pamięci podręcznych  cache  w architekturze SMP ( snooping), a dokładniej w UMA. NUMA korzysta tylko z katalogów. •   Zapewnia spójność pamięci cache w systemie SMP Do tego właśnie służy. •  Służy do wymiany komunikatów w systemie MPP Patrz wyżej.

•  Chroni przed hazardem w procesorach superskalarnych Patrz wyżej.

64

 

36.   W architekturze NUMA •   Dane są wymieniane między węzłami w postaci linii pamięci podręcznej (PaP) Tak, każdy procesor / węzeł posiada swoją własną szybką pamięć podręczną. Pamięć ta jest publiczna  - inne procesory mają do niej dostęp, ale wymiana informacji na linii  moja pamięć - inny procesor  jest znacznie wolniejsza niż  procesor - jego pamięć. •  Spójność PaP węzłów jest utrzymywana za pomocą protokołu MESI Protokół MESI jest wykorzystywany w architekturze   UMA   do  snoopingu  - zapewnienia spójności  pamięci podręcznych procków. •  Czas dostępu do pamięci lokalnej w węźle jest podobny do czasu dostępu do pamięci nielokalnej Odwołanie do nielokalnej pamięci są znacznie wolniejsze niż do lokalnej, ok. 10-krotnie bardziej. Dotyczy to głównie architektury NC-NUMA, patrz: rodzaje systemów NUMA 12.1 NUMA  12.1 •  Czas zapisu danych do pamięci nielokalnej może być znacznie dłuższy od czasu odczytu z tej pamięci Patrz wyżej. •  Każdy procesor ma dostęp do pamięci operacyjnej każdego węzła Patrz wyżej. •  Procesy komunikują się poprzez przesył komunikatów Przesył komunikatów występuje w systemach MPP, gdzie pamięć jest rozproszona fizycznie i logicznie. W NUMA jest fizycznie rozproszona między węzłami (do przesyłu informacji wykorzystywana   jest sieć łącząc łączącą ą węzły), ale stanowi logicznie jedną całość. •   Pamięć operacyjna jest rozproszona fizycznie pomiędzy węzłami, ale wspólna logicznie Patrz wyżej.

37.   W architekturze CC-NUMA: •  Każdy procesor ma dostęp do pamięci operacyjnej każdego węzła Tak, ponieważ architektura NUMA opiera się o niejednorodny dostęp do pamięci - każdy procesor  ma pełny dostęp do pamięci lokalnej oraz nielokalnej, czyli pamięci podręcznych wszystkich innych  procesorów. •  Spójność pamięci pomiędzy węzłami jest utrzymywana za pomocą protokołu MESI Nie, nie jest potrzebna spójność pamięci, ponieważ każdy procesor odczytuje potrzebne mu zmienne  itp. pośrednio przez katalog. •   Dane są wymieniane między węzłami w postaci linii pamięci podręcznej Każda linia posiada pewną liczbę bajtów, które inne procesory mogą pobierać. Możliwe, że i katalogi  korzystają z wymiany danych poprzez linie. •   Pamięć operacyjna jest fizycznie rozproszona pomiędzy węzłami, ale wspólna logicznie Dokładnie tak.

65

 

38.   W systemach wieloprocesorowych o architekturze CC-NUMA: •  Spójność pamięci wszystkich węzłów jest utrzymywana za pomocą katalogu Tak, w NUMA do zachowania spójności danych można stosować wyłącznie katalogi (a np. protokołu  MESI nie). •  Pamięć operacyjna jest rozproszona fizycznie pomiędzy węzłami, ale wspólna logicznie Dokładnie tak. •  Każdy procesor ma bezpośredni dostęp do pamięci operacyjnej każdego węzła Nie, dostęp jest pośredni. Pamięć w CC-NUMA jest fizycznie rozproszona, więc coś musi pośredniczyćć w tej wymia niczy wymianie nie dany danych. ch. Służy do te tego go me mechan chanizm izm katal katalog ogów ów i węzłów węzłów.. Pr Proc ocesor esor zgłasza  zapotrzebowanie na linię pamięci do katalogu i ją później otrzymuje. •   Dane są wymieniane między węzłami w postaci linii pamięci podręcznej Tak, ponieważ w architekturze NUMA wymiana rekordów pamięci następuje z użyciem całej linii. Np. jeśli procek chce pobrać jednego floata 4-bajtowego, a linia ma 16 bajtów, to musimy pobrać  całą linię (ale i tak odbywa się to bardzo szybko).

39.  W architekturze CC-NUMA czas dostępu do pamięci operacyjnej może zależeć od: •   Rodzaju dostępu (odczyt - zapis) Zapis jest znacznie wolniejszy, bo wymaga aktualizacji całej spójnej logicznie pamięci. •  Stanu linii (zapisanego w katalogu), do której następuje odwołanie Jak linia znajduje się już w katalogu, to następuje odczyt tylko. Położeni enia a ko komór mórki, ki, do któ której rej odw odwołuj ołuje e się roz rozk kaz (lo (lok kalna pam pamięć ięć wę węzła zła – pam pamięć ięć •   Położ innego węzła) Dostęp do pamięci nielokalnej (innego procka) jest znacznie dłuższy (ok. 10-krotnie)

•  Odległości węzłów, zaangażowanych w wykonanie rozkazu, w strukturze sieci łączącej Różnice są rzędu mikrosekund, nie jest to znaczący czas, tylko margines błędu najwyżej.

66

 

40.  Katalog może być stosowany do: •  Utrzymania spójności pamięci podręcznych poziomu L1 i L2 w procesorach wielordzeniowych. Wiadomo, że katalog jest wykorzystywany do zachowania spójności tego rodzaju pamięci, która jest  wspólna (L2). L1 jest pamięcią prywatną rdzenia, więc nie ma potrzebny zachowywać jej spójności. •  Utrzymania spójności pamięci wszystkich węzłów w systemach CC-NUMA Systemy NUMA wykorzystują katalogi do zachowania spójności pamięci, i tylko katalogi. •  Do utrzymania spójności pamięci węzłów systemów wieloprocesorowych z pamięcią rozproszoną

(MPP) Jeśli chodzi o zachowanie spójności pamięci w obrębie węzła, to   tak , bo węzłem może być system  UMA lub NUMA. Ale, jeśli chodzi o zachowanie spójności pamięci między węzłami, to   nie, bo do tego służy przesył komunikatów. •  Sterowania realizacją wątków w architekturze CUDA Zdecyd Zde cydowa owanie nie bulls bullshit hit,, CUD CUDA A nie wyk wykorz orzyst ystuje uje kat katalo alogu. gu. W CUD CUDA A wąt wątkam kamii ste steruj rujee oso osobny  bny  procesor wątków.

41.  Spójność pamięci podręcznych w procesorze wielordzeniowym może być m.in. zapewniona za pomocą:

•  Przełącznicy krzyżowej Nie, to rozwiązanie sieci połączeń w architekturze UMA. Mało wydajna. •   Katalogu To mechanizm do zachowania spójności jaki stosowany jest głównie w architekturze NUMA, ale  UMA też może. •  Protokołu MESI Tak, i tylko to do tego służy. Wykorzystuje do wyłącznie architektura UMA. •  Wspólnej magistrali Nie, jest to jeden z rodzajów połączeń w architekturze UMA, ale nie ma nic wspólnego ze spójnością  pamięci jej procków.

67

 

42.  Systemy wieloprocesorowe z pamięcią wspólną: •  Zapewniają jednorodny dostęp do pamięci Nie, bo NUMA nie zapewnia. Jednorodny dostęp występuje wtedy, gdy procesor ma dostęp wyłącznie  do swojej pamięci podręcznej. Niejednorodny wtedy, gdy ma dostęp również do pamięci nielokalnej  (pamięci podręcznej innych procesorów.) •  Mogą wykorzystywać procesory CISC Nie ma takiego ograniczenia. •   Są wykorzystywane w klastrach Tak, węzły w postaci serwerów SMP. •  Wykorzystują przesył komunikatów między procesorami Nie, wykorzystują protokół MESI do  snoopingu  oraz katalogi w celu zapewnienia spójności pamięci  podręcznej. •  Wykorzystują katalog do utrzymania spójności pamięci podręcznych Patrz wyżej.

43.  W systemach wieloprocesorowych katalog służy do: •  Śledzenia adresów w protokole MESI Nie no kurwa, szanujmy się, katalogi powstały po to by wyprzeć protokół MESI.

Sterowania ia przesyłem komunikatów komunikatów •   Sterowan Nie, w UMA i NUMA nie ma przesyłu komunikatów, to jest w MPP i klastrach. •  Utrzymania spójności pamięci w systemach o niejednorodnym dostępie do pamięci No tak, patrz poprzednie pytania. To jest problem z jakimi borykają się UMA i NUMA. Katalog  można stosować do jego rozwiązania w obu architekturach. •  Realizacji dostępu do nielokalnych pamięci w systemach NUMA Katalogi i węzły stanowią mechanizm do wymiany informacji między prockami i ich pamięciami.

68

 

44.   Charakterystyczne cechy architektury MPP: •  Spójność pamięci podręcznej wszystkich węzłów Spójność wręcz nie powinna być zapewniana, każdy element są swoją własną, odrębną pamięć. •  Fizycznie rozproszona PaO Tak, jest fizycznie i logicznie rozproszona. •  Fizycznie rozproszona PaO, ale logicznie wspólna Nie, taka jest cecha systemów NUMA. •   Przesył komunikatów między procesorami Tak, to metoda synchronizacji wykonywania zadań. •  Niska skalowalność Nie, jest przeogromna. •  Jednorodny dostęp do pamięci wszystkich węzłów Nie, pamięć jest rozproszona.

69

 

45.  Systemy pamięcią rozproszoną (MPP): •  Wyróżniają się bardzo dużą skalowalnością  Posiadają ogromną skalowalność, tylko klastry mają lepszą. •  Są budowane z węzłów, którymi są klastry Węzłami mogą być tylko systemy UMA i NUMA oraz zwykłe pojedyncze procesory. •  Realizują synchronicznie jeden wspólny program Nie muszą być synchronicznie wykonywane (są synchronizacje, ale jeden węzeł może realizować  szybciej pewne części programu) •  Wymagają zapewnienia spójności pamięci podręcznych pomiędzy węzłami Wręcz nie powinny jej zapewniać, każdy węzeł pracuje osobno. •   Wymianę danych i synchronizację procesów w węzłach realizują poprzez przesył komunikatów. Tak, pamięć jest logicznie rozproszona, a węzły są fizycznie oddzielne, do komunikacji wystarcza  tylko przesył komunikatów. •  W większości przypadków wykorzystują nietypowe, firmowe rozwiązania sieci łączących węzły sys-

temu. Nie wiem czy w większości przypadków, ale na slajdach większość jest poświęcona typowym rozwiązaniom sieciowym (hipersześcian, krata, torus, przełącznica krzyżowa), a  custom network  to tylko dodatek. •  Wykorzystują katalog do utrzymania spójności pamięci węzłów systemu. Między węzłami w MPP wykorzystuje się przesył komunikatów. Katalogi sa wykorzystywane przez  systemy UMA i NUMA, które mogą być węzłami w MPP. Jednak komunikacja między samymi  węzłami ich nie wykorzystuje. •   W roli węzłów mogą wykorzystywać systemy SMP. Poznane podkategorie SMP, UMA i NUMA, mogą być węzłami.

70

 

46.  Systemy MPP są zbudowane z węzłów którymi mogą być: •   Systemy SMP Węzłami mogą być zarówno systemy UMA, jak i NUMA. Ponadto dopuszcza się zwykłe procesory  z pamięcią operacyjną. Patrz: organizacja MPP  14.2    14.2 . Są to  jedyne  możliwe rodzaje węzłów. •  Klastry Patrz wyżej. •  Konstelacje Patrz wyżej. •   Systemy NUMA Patrz wyżej. •   Procesory Patrz wyżej.

47.  Przesył komunikatów: •   Ma miejsce w systemach MPP Tak, w MPP oraz w klastrach. •  W systemach MPP II-giej generacji angażuje wszystkie procesory na drodze przesyłu Nie, bo w II gene genera racji cji są ro routery utery węzłów pośr ośred edniczą niczących, cych, które nie angaż angażują ują pr proc ocesor esorów. ów. W I  generacji wszystkie komputery były zaangażowane, ponieważ rolę routera pełnił sam procesor. •  Ma miejsce w klastrach Tak, patrz wyżej.

48.  Cechami wyróżniającymi klastry są: •   Niezależność programowa każdego węzła Tak, bo każdy węzeł na swój osobny system operacyjny. •  Fizycznie rozproszona, ale logicznie wspólna pamięć operacyjna Jest fizycznie i logicznie rozproszona. •  Nieduża skalowalność Kurwa, nie XD Klastry mają arcydupną skalowalność. •   Na ogół duża niezawodność Tak, po to się je bud buduje uje i na ogół ją maj mają. ą. Re Redun dundan dancja cja węz węzłów łów,, mir mirrrori oring ng dys dysków ków,, kon kontr trola  ola   funkcjonowania węzłów. Patrz: Niezawodn Niezawodność ość klastrów  15.8    15.8 

71

 

49.   Klastry: •  Mają średnią skalowalność Mają największą skalowalność ze wszystkich poznanych systemów. Łatwiej go rozszerzać niż MPP, ponieważ jest jednym wielkim systemem komputerowym. •  Wykorzystują model wspólnej pamięci Nie, jest rozproszona fizycznie i logicznie. •   W węzłach mogą wykorzystywać systemy SMP Tak, serwery SMP są jednymi z dopuszczalnych węzłów. Drugimi są pełne komputery PC. Patrz: węzły w klastrach  15.3.1   15.3.1 •   Do komunikacji między procesami wykorzystują przesył komunikatów Tak, bo jest efektownym rozwiązaniem, i tylko go wykorzystują. •  Wykorzystują przełącznicę krzyżową jako sieć łączącą węzły Nie, ona jest wykorzystywana tylko w systemach UMA, gdzie pamięć wspólna jest fizycznie jednorodna. •  W każdym węźle posiadają pełną instalację systemu operacyjnego Tak, węzłem musi być albo serwer SMP, albo PC, które muszą mieć swoje systemy operacyjne.

50.   Do czynników tworzących wysoką niezawodność klastrów należą: •   Mechanizm   mirroringu   dysków Tak, bo system operacyjny może. •  Dostęp każdego węzła do wspólnych zasobów (pamięci zewnętrznych) Tak, w razie czego można podpiąć i korzystać z dodatkowej pamięci. •   Redundancja węzłów No tak, jest. •   Mechanizm ”heartbeat” Tak, gdy ten mechanizm przestaje odbierać ”bicie serca” jednego z węzłów, wówczas może wywołać  procedurę obsługi - przenieść zadania do innego węzła, włączyć powiadomienie itp. •  Zastosowanie procesorów wielordzeniowych w węzłach Nie, nie chodzi o liczbę rdzeni, ale o to, że każdy węzeł jest osobnych systemem, serwerem lub pecetem.

72

 

51.  Dla sieci systemowych (SAN) są charakterystyczne •  Przesył komunikatów w trybie zdalnego DMA Tak, bo przesyłamy dane między prockami, a DMA wykonuje to najszybciej. •   Bardzo małe czasy opóźnień Tak, rzędu pojedynczych mikrosekund. •  Topologia typu hipersześcian Bullshit, sieć jest taka jak topologia systemu, nie buduje się osobnej topologii. •  Niska przepustowość Noelonie, do pamięci potrzebna jest duża przepustowość, bo przechodzi przez nią dużo danych.

52.   Sieci systemowe (SAN) •  Wymagają protokołu MESI Sieci to tylko kabel, nie mają wymagań co do zarządzania pamięcią XD 

przełączniki łączonenp. wgInfiniBand, topologii grubego •  Wykorzystują Topologię grubego drzewa wykorzystuje która jest drzewa siecią łączącą w klastrach znajdujących się w komputerach top500.

•   Realizują przesyły bloków danych bezpośrednio między pamięciami operacyjnymi węzłów sieci Sieci SAN posiadają sterowniki DMA, czyli mogą przesyłać dane bezpośrednio między pamięciami, a same dane przesyłane są w pakietach, czyli jakichś blokach. •  Są stosowane w klastrach Tak, łączą węzły z systemami.

73

 

53.  Czy poniższa lista jest rosnąco uporządkowana według skalowalności: •  Systemy ściśle połączone, systemy ze wspólną pamięcią, systemy SMP Systemy SMP to cała kategoria systemów z pamięcią wspólną, z kolei systemy ściśle połączone i  systemy ze wspólną pamięcią są  równoznaczne  - są przeciwieństwem do systemów luźno powiązanych (z pamięcią rozproszoną). Systemy ze wspólną magist magistralą, ralą, system systemy y wielom wielomagistra agistralow lowe, e, system systemy y z przeł przełącznic ącznicą  ą  •   Systemy krzyżową  Są to systemy wieloprocesorowe (UMA) z pamięcią wspólną, patrz: Klasyfikacja  11.2.1   11.2.1 -  Systemy ze wspólna magistralą  - najprostsze i najmniej skalowalne  -  Systemy wielomagistralowe  - szybsze i bardziej złożone, wciąż kiepsko skalowalne  -  Systemy z przełącznicą krzyżową  - duża szybkość i złożoność obliczeniowa, trudne w rozbudowie  Ogółem jest to dolna półka tych systemów.

•  Systemy SMP, systemy z pamięcią wieloportową, systemy z przełącznicą krzyżową SMP to rodzaj architektury, z kolei w systemach UMA systemy z przełącznicą krzyżową są mniej  skalowalne niż systemy z pamięcią wieloportową, patrz: Klasyfikacja  11.2.1.   11.2.1. •  NUMA, MPP, SMP MPP jest znacznie bardziej skalowalny niż SMP (pamięć rozproszona   >  pamięć wspólna). NUMA to systemy SMP z niejednorodnym dostępem do pamięć - są bardziej skalowalne niż zwykłe SMP  (dzięki szybkiej pamięci lokalnej   cache), ale mniej niż MPP. •  Systemy z pamięcią wspólną, systemy o niejednorodnym dostępie do pamięci, z pamięcią rozproszoną  Dwa pierw pierwsze sze to ro rodzaje dzaje systemów SMP. Najmn Najmniej iej skalo skalowalne walne są syste systemy my z pamię amięcią cią wsp wspólną, ólną, domyślnie o jednorodnym dostępie do pamięci (UMA). Niejednorodny dostęp do pamięci wspólnej  (NUMA) jest szybszy, ponieważ wykorzystuje pamięć lokalną procesora, węzły i katalogi. Mechanizm  katalogów jest o wiele bardziej skalowalny niż mechanizm ” snoopingu”, wykorzystywany w UMA. Następnie system z pamięcią rozproszoną to MPP - system masywnie równoległy. Jest najbardziej  skalowalny ze wszystkich. •  SMP, NUMA, klastry, UMA SMP jest najmniej skalowalny UMA ma(nie jednorodny mniej  skalowalna od NUMA. Klastry zsąwymienionych. najbardziej skalowalne wiem czydostęp mniejdo lubpamięci bardzieji jest do MPP). •   Systemy symetryczne, o niejednorodnym dostępie do pamięci, systemy z przesyłem komunikatów Systemy symetryczne to SMP z jednorodnym dostępem do pamięci. Systemy SMP z niejednorodnym  dostępem są bardziej skalowalne. Z kolei systemy z przesyłem komunikatów sugerują system MPP, z pamięcią rozproszoną - jest on najbardziej skalowalny.

74

 

54.   Sprzętowe przełączenie wątków może być wynikiem: •  Chybienia przy odwołaniu do pamięci podręcznej. Patrz: realizacja sprzętowej wielowątkowości   wielowątkowości   7.2  •   Upływu zadanego czasu (np. taktu) Jest coś takiego jak wielowątkowość drobnoziarnista, która przełącza wątki co takt. •  Wystąpienia rozkazu rozgałęzienia Dopiero jak nastąpi błąd przewidywania. Przy drabince IFów byłby armageddon. •   Błędnego przewidywania rozgałęzień Patrz: realizacja sprzętowej wielowątkowości   wielowątkowości   7.2  •  Przesunięcia okien rejestrów To tylko zmiana rejestrów, niezwiązana z wątkami.

55.  Sprzętowe sterowanie wielowątkowością: wykorzystanie potoków. •  Zapewnia Tak, ma nalepsze celu minimalizację problemów, jakie stwarza przetwarzanie potokowe, jak hazard sterowania, zależności między rozkazami oraz chybione odwołania do pamięci.

•  Wymaga zwielokrotnienia zasobów procesora (rejestry, liczniki rozkazów i inne) Tak, aby móc wykonać sterować wątkami na poziomie sprzętu potrzeba więcej sprzętu. •  Nie może być stosowane w przypadku hazardu sterowania To sterowanie służy właśnie minimalizacji start powstałych m.in. z hazardu sterowania. •  M.in. minimalizują straty wynikające z chybionych odwołań do pamięci podrecznej Patrz wyżej.

56.  Dostęp każdego procesora do wspólnej pamięci operacyjnej jest realizowany w systemach: •   NUMA W NUMA pamięć jest rozdzielona fizycznie, ale logicznie wspólna. Wszystkie procesory mają do niej dostęp. •   SMP Wszystkie modele SMP, jak UMA, NUMA czy CC-NUMA posiadają pamięć logicznie wspólną. •  Klaster Pamięć jest logicznie rozproszona, każdy węzeł(czyli system) posiada swoją. •   MPP Pamięć jest logicznie rozproszona, każdy węzeł (procesor albo system UMA / NUMA) posiada swoją.

75

 

57.   Procesory wielordzeniowe: •  Są niezbędne do realizacji rozkazów wektorowych. Nie,, o ile wie Nie wiele le rdze dzeni ni moż możee umo umożli żliwić wić wyk wykony onywan wanie ie rozk ozkazó azów w wek wektor torowy owych, ch, to war warunk unkiem iem koniecznym do wykonywania rozkazów wektorowych jest istnieje wielu jednostek przetwarzających w  dowolnej postaci. •  Tworzą systemy wieloprocesorowe ze wspólną pamięcią i jednorodnym dostępem do pamięci. Tak, mogą one tworzyć system wieloprocesorowy (z rdzeniami), ale pamięć CHYBA nie musi być  wspólna o jednorodnym dostępie (no bo chyba każdy rdzeń może mieć własną.)??  •  Są niezbędne do współbieżnego przetwarzania wątkowego. Tak, jest to konieczne aby realizować współbieżnie wiele wątkóW w obrębie jednego procesora. •  Wymagają kontroli spójności pamięci podręcznych. Każdy rdzeń posiada pamięć podręczną L1, która jest prywatna oraz pamięć podręczną L2, która jest  publiczna. Do L2 inne rdzenie mogą się odnosić poprzez magistralę i występuje problem spójności  cache’u.

76

 

Pytania otwarte 1

2010 2010,, T Ter ermi min n I (odpowi (odpowied edzi zi z foru forum) m) 1.   Które Które cechy cechy arc archit hitekt ektury ury CISC CISC został zostały y zmieni zmienione one i w jaki sposób sposób w archit architekt ekturz urze e RISC?

•   RISC: –  niezbyt duża lista rozkazów, rozkazu wykonywane w zasadzie w 1 cyklu (zmiana) –  niewielka liczba trybów adresowania (zmiana) –  stała długość i prosty format rozkazu (chyba też zmiana) –  model obliczeń rejestr-rejestr, wszystkie argumenty są w rejestrach (zmiana) –  dostęp do pamięci jedynie dzięki rozkazom STORE i LOAD –  duża ilość rejestrów uniwersalnych (chyba też zmiana) –  jednostka sterująca zbudowana jako układ –  intensywne wykorzystanie potokowości –  stosowanie kompilatorów o dużych możliwościach optymalizacyjnych

•   Cechy: –  duża liczba rozkazów –  duża liczba trybów adresacji (5 – 20, Vax  →  20 ) –  model obliczeń pamięć – pamięć –  komplikowana struktura sprzętu, przy małym wykorzystaniu rozkazów złożonych –  duży rozrzut cech rozkazów w zakresie: złożoności, długości, czasu wykonania

2.   Wymień najważniejsze cechy architektury procesorów superskalarnych. •  Kilka potokowych jednostek operacyjnych •  Wykonywanie kilku rozkazów w 1 takcie •  Honieczność pobrania z PaO kilku rozkazów jednym takcie

3.   Wyjaśnij Wyjaśnij na czym polega problem problem zależności zależności między danymi przy potoko potokowej wej realizacji realizacji rozkazów. Podaj przykłady rozwiązania tego problemu w jednopotokowych procesorach RISC.

•   I 1 :  R 3 ← R3opR5 I 2 :  R 4 ← R3 + 1 I 3 :  R 3 ← R5 + 1 I 4 :  R 7 ← R3  op R 4

•   –   prawdziwa zależność danych (RAW) - rozkaz I2 musi czekać na wykonanie rozkazu I1,

podobnie I4 musi czekać na I3 –  zależność wyjściowa (WAW) - gdyby rozkazy I1 oraz I3 były realizowane równolegle (np. w różnych jednostkach funkcjonalnych), to wykonanie I3 musi się zakończyć po I1. –  antyzależność (WAR) - w przypadku równoległej realizacji rozkazów I2 oraz I3 (lub zmiany kolejności tych rozkazów), wykonanie rozkazu I3 nie może być zakończone, dopóki nie nastąpi pobranie argumentu (odczyt) w rozkazie I2.

77

 

•  Rozwiązania: –   NOP –  Proces przemianowania rejestrów (może to pomóc; nie jestem pewien) –  Wstrzymanie napełniania potoku –  Optymalizacja kodu na poziomie kompilacji / linkowania (odpowiedzialność zrzucona na

kompilator) 4.  Omów budowę systemów o niejednorodnym dostępie do pamięci (ccNUMA) Komputery w architekturze NUMA należą do systemów MIMD o niejednolitym dostępie do pamięci. Bierze to się stąd, iż każdy procesor ma własną pamięć; jednak do tej pamięci ma również dostęp każdy inny procesor, ztą tylko różnicą, że czas dostępu do takiej pamięci jest dużo większy niż czas dostępu do pamięci, którą dany procesor posiada. Zaliczenie procesora z pamięcią i jednostką zarządzającą pamięcią nazywa się węzłem. Zadaniem takiej jednostki zarządzającej pamięcią  jest odpowiednie odp owiednie kierow kierowanie anie adresów i danych w zależności o którą pamięć nam chodzi (lokalną dla danego procesora czy też znajdującą się przy innym procesorze). We współczesnych rozwiązaniach praktycznych duży nacisk kładzie się na zgodność (spójność) pamięci podręcznej (są to systemy typu CC-NUMA) MIMD typu C.C.-NUMA (ze spójnością pamięci podręcznej). 5.  Wymień i krótko scharakteryzuj rozwiązania konstrukcyjne serwerów używanych do budowy klastrów.

•  Serwery wolnostojące •  Serwery stelażowe –  Zalety: ∗  możliwość instalowania obok siebie serwerów różnych dostawców –   Wady: ∗  kable zasilające ∗  kable sieciowe ∗  chłodzenie

•   Serwery kasetowy –  Zalety: ∗  jedna obudowa typu blade ∗  wspólne zasilanie i chłodzenie - jeden kabel zasilający

∗   prostsze okablowa okablowanie nie sieciow sieciowee ∗  proste zarządzanie ∗  mniejsze wymiary i duża gęstość upakowania –   Wady: identycznychh serweró serwerów w ∗   możliwość instalowania tylko identycznyc

78

 

2

2013 2013,, T Ter ermi min n I (odpowi (odpowied edzi zi z foru forum) m) 1.   Wymień cechy architektury superskalarnej. Patrz: 2 Patrz:  2 systemy i klastry rosnąco wg skalowalności. 2.  Uszereguj Według mnie chociaż wieloprocesorowe nie jestem tego pewien to systemy wieloprocesorowe trzeba by uszeregować tak:

•  komputery macierzowe (jeżeli traktować elementy przetwarzające jako osobne jednostki) -

ciężko zwiększać elementy przetwarzające lub układy macierzowe jako peryferia komputera •  UMA - ciężkie do rozbudowy ze względu na pojedynczą magistralę lub przełącznicę •  NUMA - średnie w rozbudowie •  MPP - łatwe w rozbudowie; wystarczy dokładać procesory i zadbać o przepływ danych (wy-

miana komunikatów) •  Klastry - wydajnościowe i niezawodnościowe; pracujące na wspólnych dyskach; każdy z nich

ma osobny, niezależnie utrzymywany system operacyjny 3.  Scharakteryzuj ogólnie systemy typu klaster. •  Sieci łączące – standardy: Gigabit Ethernet, Infiniband •  Komunikacja między węzłami (procesami) – przesył komunikatów •  Bardzo wysoka skalowalność •  Cele budowy: wysoka wydajność lub/i wysoka niezawodność •  Korzystny wskaźnik: cena/wydajność

oprogramowanie, anie, które umożliwi prawidłow prawidłowąą pracę tych wszystkich kom•   Według mnie jeszcze oprogramow puterów 4.  Wyjaśnij, na czym polega problem zależności między danymi przy potokowej realizacji rozkazów. Podaj przykłady rozwiązania tego problemu w jednopotokowych procesorach RISC i w procesorach superskalarnych.

Patrz: 3 Patrz:  3 5.  Co jest celem sprzętowego sterowania współbieżną realizacją wielu wątków w jednym rdzeniu? Jakie są metody i jakie warunki sprzętowej realizacji wielowątkowości?

Celem współbieżnej realizacji dwóch (lub więcej) wątków w jednym procesorze (rdzeniu) jest minimalizacja strat cykli powstałych w trakcie realizacji pojedynczego wątku w wyniku: •  chybionych odwołań do pamięci podręcznej, •  błędów w przewidywaniu rozgałęzień, •  zależności między argumentami kolejnych rozkazów.

Warunki sprzętow sprzętowej ej realizacji wielową wielowątkow tkowości: ości: •  powielenie zestawów rejestrów uniwersalnych (lub powielenie tabel mapowania rejestrów) •  powielenie liczników rozkazów •  powielenie układów dostępu do pamięci podręcznej (tabel stron) •  powielenie sterowników przerwań

79

 

3

2014 2014,, term termin in I, NS NSII 1.  Scharakteryzuj ogólnie procesory o architekturze superskalarnej •  Procesor superskalarny posiada potoki, które umożliwiają wykonywanie większej niż 1 liczby

rozkazów w 1 takcie. •  Potrafi załadować kilka rozkazów z pamięci operacyjnej w jednym takcie procesora. •  Z tych powodów wynika hazard sterowania oraz hazard danych. •  Hazard sterowania wynika z potokowości i polega na możliwości błędnego przewidywania roz-

gałęzień i warunków. Eliminuje się go stosują układy przewidywania rozgałęzień (sprzętowo) lub przez programistę metodą skoków opóźnionych (programowo). •  Hazard danych również wynika z potokowości procesora, polega na przetwarzania danych w taki sposób, że równoległe wykonywania operacji, może skutkować błędnym wykonaniem programu. Można wyróżnić 3 rodzaje zależności: –   Prawdziwa zależność danych ( RAW - Read After Write ) - próba odczytania zmiennej która jest jednocześnie zapisywana. Można rozwiązać przez szynę zwrotną (wyprzedzające pobieranie argumentu) lub metodę przemianowania rejestrów. –  Zależność wyjściowa (WAW - Write After Write ) - próba zapisania zmiennej która jest  jednocześnie zapisywana. Ten rodza rodzajj zależności musi być wykrywany sprzętowo. –  Antyzależność (WAR - Write After Read ) - próba zapisania zmiennej która jest jednocześnie odczytywana. Można rozwiązać przez wstrzymanie napełniania potoku na 1 takt lub metodę przemianowania rejestrów. 2.  Wyjaśnij na czym polega różnica w wykonaniu rozkazów wektorowych w komputerach wektorowych i macierzowych

wektorowych wych czas wykonania rozkazu wektoro wektorowego wego jest wprost proporcjonalprop orcjonal•   W komputerach wektoro ny do długości wektora. Z kolei w komputerach macierzowych, jeśli ten posiada wystarczającą liczbę jednostek (co najmniej długość wektora x długość wektora), czas ten jest stały. 3.  Scharakteryzuj ogólnie systemy typu klaster •  Pamięć systemów klaster jest rozproszona fizycznie i logicznie. •  Węzłem klastra może być albo komputer osobisty (PC), albo system SMP jako serwer. •  Każdy węzeł klastra musi posiadać osobny system operacyjny. •  Klaster może być węzłem systemu MPP. •  Za komunikację odpowiada przesył komunikatów. •  Węzły są połączone za pomocą sieci specjalizowane SAN lub zwykłej sieci LAN. •  Klastry charakteryzują się wysoką niezawodnością i wydajnością za rozsądną cenę. skalowalność. alność. •   Bardzo wysoka skalow

4.   Wyjaśnij Wyjaśnij na czym polega problem problem zależności zależności między danymi przy potoko potokowej wej realizacji realizacji rozkazów. Podaj przykłady rozwiązania tego problemu w procesorach RISC.

rozkazów w występuje hazard danych, czyli zależności między danymi. •   przy potokowej realizacji rozkazó Można wyróżnić wyróżnić ich 3 rodzaje: –   Prawdziwa zależność danych ( RAW - Read After Write ) - próba odczytania zmiennej która jest jednocześnie zapisywana. Można rozwiązać przez szynę zwrotną (wyprzedzające pobieranie argumentu) lub metodę przemianowania rejestrów. –  Zależność wyjściowa (WAW - Write After Write ) - próba zapisania zmiennej która jest  jednocześnie zapisywana. Ten rodza rodzajj zależności musi być wykrywany sprzętowo. –  Antyzależność (WAR - Write After Read ) - próba zapisania zmiennej która jest jednocześnie odczytywana. Można rozwiązać przez wstrzymanie napełniania potoku na 1 takt lub metodę przemianowania rejestrów. 5.   Omów Omów organizację organizację pamięci podręcznych podręcznych (PaP) oraz metody sprowa sprowadzania dzania danych danych z pamięci operacyjnej do PaP? Dlaczego stosuje się pamięci podręczne.

80

 

4

2015 2015,, Termi ermin n0 1.  Omów najważniejsze cechy architektury CUDA w szczególności model pamięci. •  Cechy architektury : –   CUDA to architektura wielordzeniowych procesorów graficznych, to uniwersalna archi-

tektura obliczeniowa wraz z równoległym modelem programistycznym, wspiera C i C++.

–  Posiada uniwersalny procesor przetwarzający wierzchołki, piksele i geometrię oraz uni-

wersalne programy obliczeniow obliczeniowe. e. –  Posiada procesor wątków, który eliminuje ”ręczne” zarządzanie rejestrami wektorowymi. –  Oparta jest o model SIMT ( single-instruction multiple-thread ), gdzie wiele niezależnych wątków wykonuje równocześnie tę samą instrukcję. –  Model programistyczny dzieli kod na część wykonywaną przez procesor i część wykonywaną przez kartę graficzną. •   Wątki: –  Każdy wątek niezależnie wykonują tę samą operację oraz ma swoją lokalną pamięć, dodatkowo wątki mają wspólną pamięć globalną i współdzieloną. –   Za komunikację między wątkami odpowiadają mechanizmy synchronizacji (barrier synchronization ). –  Wątki są automatycznie grupowane w bloki o geometrii 1, 2 lub 3-wymiarowej. –  Bloki grupowane są w siatkę (grid    - kratę) o geometrii 1, 2-wymiarowej. –  Bloki wątków tworzących siatkę muszą się wykonywać niezależnie. •  Model pamięci: – Pamięć globalna - duża, o czasie życia aplikacji, dostępna dla każdego wątku w dowol-

nym bloku, o długim czasie dostępu. W pamięci globalnej wyróżnia się: -owany, ∗   Pamięć stałych - mały fragment, który jest tylko do odczytu oraz jest  cache -owany, dzięki czemu dostęp do niego jest bardzo szybki. Czas życia oraz jej dostępność taka sama. ∗  Pamięć lokalna - wykorzystywana do przechowywania danych lokalnych wątku, które nie mieszczą się w rejestrach -owanie dla zasto∗   Pamięć tekstur  - posiada specyficzne metody adresowania i  cache -owanie sowań graficznych – Pamięć współdzielona  - niewielka, o czasie życia bloku, dostępna dla każdego wątku w bloku dla którego jest dedykowana, o bardzo krótkim czasie dostępu. – Rejestry  - niewielka, bardzo szybka, o czasie życia wątku. Tylko jeden wątek może w danym momencie korzystać z danego rejestru. 2.  Omów budowę systemów o niejednorodnym dostępie do pamięci (NUMA). •   Systemy NUMA zbudowane są z wielu procesorów, gdzie każdy procesor posiada własną,

bardzo szybką pamięć lokalną. •  Dodatkowo procesory posiadają wspólną, ogromną pamięć wspólną. •  Dostęp do nielokalnej pamięci jest znacznie wolniejszy niż do lokalnej (ok. 10 razy). •  W celu zapewnienia spójności między pamięciami podręcznymi stosowane są węzły i katalogi, i tylko katalogi, które są znacznie lepsze od protokołu MESI. •  Można wyróżnić podkategorie systemów: NC-NUMA (non-cached) i CC-NUMA (cache coherent) •  Systemy te posiadają średniej jakości skalowalność •  Pamięć podręczna jest fizycznie rozproszona, ale logicznie wspólna. •  Dostęp do pamięci nielokalnej odbywa się z użyciem katalogów oraz odczytywanie całych linii pamięci podręcznej. •   Architektura NUMA jest bardzo efektywna dla aplik aplikacji, acji, które częściej odczytują z nielokalnej pamięci i nieefektywna dla aplikacji, które części zapisują do niej. Przy zapisie trzeba zaktualizować stan tej linii we wszystkich węzłach, które je pobrały do siebie.

81

 

3.   Porównaj realizację rozkazów wektorowych w komputerach wektorowych i macierzowych.   9.2 •   W komputerze wektorowym: –  Szybkość realizacji rozkazów jest liniowo proporcjonalna do długości wektora. –  Moc obliczeniowa rośnie logarytmicznie (nieliniowo) wraz ze zwiększeniem długości wek-

tora. –  Przyspieszenie (stosunek czasu wykonywania na komputerze szeregowym do czasu na wektorowym) jest w idealnym przypadku równa długości wektora. –  Efektywność wykonywania rozkazów dąży do pewnej stałej wartości, która jest efektywnością idealną. •  Z kolei w komputerze macierzowym: –   Rozk Rozkaz az wektorowy może być wykony wykonywany wany w jednym kroku (jeśli jest wystarczająca liczba  jednostek przetw przetwarzających), arzających), czyli w stałym czasie. –  Dzieje się tak dzięki sieci elementów przetwarzających. 4.  Wymień różnice między systemami SMP a MPP. •  SMP posiada pamięć logicznie wspólną, ale może ona być fizycznie jednorodna (UMA) lub

rozproszona (NUMA). Z kolei MPP posiada pamięć fizycznie i logicznie rozproszoną. •  MMP jest znacznie bardziej skalowalne niż SMP (UMA - słabo, NUMA - średnio). •  W SMP wymagany jest mechanizm do zachowania spójności pamięci podręcznych procesorów

- może to być protokół MESI (UMA) lub katalogi (UMA i NUMA). •  W MPP do kontroli wystarcza przesył komunikatów. Jest on realizowany programowo (MPP I generacji) lub sprzętowo przez routery (MPP II generacji). •  W SMP istnieje jedna wspólna pamięć, z kolei w MPP każdy węzeł ma swoją pamięć lokalną plus opcjonalnie wspólną. •  W MPP jest wolniejsza komunikacji między węzłami sieci - potrzebna jest wymiana większej liczby informacji. •   SMP węzłem jest zwykły procesor, w MPP jest to procesor lub system wieloprocesorowy (właśnie SMP). 5.  Omów rozwiązania stosowane w klastrach o wysokiej niezawodności. węzłów w (mocy obliczeniowej) - większa moc obliczeniowa, więcej mocy w zapasie, •   Redundancja węzłó różne tryby pracy klastrów (aktywny-pasywny, pasywny-pasywny, mieszane)

•   Dostęp do wspólnych zasobów (pamięci zewnętrznyc zewnętrznych) h) - więcej pamięci, współdzielona wsp ółdzielona lub nie

(”współdziel wszystko”, ”nie współdziel nic”).  dysków - zabezpieczenie przed utratą danych, zapis na dwóch dyskach jednocześnie •   Mirroring  dysków tych samych danych •  Mechanizmy kontrolujące funkcjonowanie węzłów - efektywniejsza praca całości jako jednego systemu łączącychh (dla 3 rodzajów sieci) - przypadku błędu sieci klaster nie przestaje przestaje •   Redundancja sieci łączącyc działać, tylko inna sieć przejmuje kontrolę •  Redundancja zasilania - wincyj mocy i prundu •  Mechanizmy kontrolujące funkcjonowanie węzłów - ”Heartbeat” oraz ”Fail-over”. Heartbeat to regularne wysyłanie sygnałów przez węzeł do sieci, które świadczą o poprawnej pracy pracy.. Jeżeli ”bicie serca” zostanie przerwane / zakłócone, do akcji wkracza Fail-over - obsługa awarii. Ten przełącza system, który uległ awarii na system rezerwowy. Poprzez Fail-back określa się powrót do stanu sprzed awarii.

82

 

Zadania egzaminacyjne 1

Sparc

Uwagi: •  W języku asemblera SPARC komentarze są oznaczane przez znak wykrzyknika (!), a nie średnika

(;). W listingach są średniki ze względu na wbudowany listingu asemblera w latexie.

1. 1.1 1

La Labor bork ka: mi min, n, ma max x ora orazz max - m min in

Ocena nieznana. 1.1.1 1.1 .1

Funk unkcja w języ języku ku C

# i n c l u d e   < s t d i o . h> t e r n i n t   minmax( i e x te minmax( i n t   ∗ tab ,   i n t   n ,   i n t   ∗ max,   i n t   ∗ min) ; i n t   main() {

i n t   i , N ,   ∗ tab ; i n t   max, mi minn , span ; scan f ( ”%i ” , ” , &N) ; i f f    (N   <   0 )   { p r i n t f ( ”N   <   0 ! \ n ” ) ; r e tu r n   −1; }

tab = malloc (N∗ s i z e o f (  ∗ tab ) ) ; f o r ( i = 0 ; i   <  N; ++i ) sca nf ( ”%i ””  , t aabb + i ) ; span = min minma max( x( tab , N, &max, &min) ; p r i n t f ( ”min ”min = %i %i , max = %i %i , span = %i %i \ n” n” , , mi minn , max, span) ; f r e e ( ta b ) ; r e tu r n   0 ; }

83

 

1.1.2 1.1. 2

Odpowie Odpowiedni dnik k w SPAR SPARCu Cu

.g lo ba l minmax .proc 4 ; ; ; ; ; ; ; ; ; ;

rejestry: rejestry: % i0 i0 - a dr dr es es % i1 i1 - i lo lo sc sc % i2 i2 - a dr dr es es % i3 i3 - a dr dr es es %l6 %l7 %l1 %l2

-

d o t ab ab li li cy cy   l ic ic zb zb ( N) N) d o m ax ax   d o m in in  

pomocnicz pomocn iczaa do prz przech echowa owania nia przesu przesunie niecia cia w baj bajtac tach  h  pomocn pom ocnicz iczaa do porown porownywa ywania nia z mi min/ma n/max  x  max  min 

minmax: save   %sp sp , ,

%s p   ; przesu przesunieci nieciee okienka  okienka    − 96, %s ; z al al ad ad uj uj w ar ar to to sc sc i d la la m ax ax i m i n , g dy dy n < = 0  

mov   0 , %l1 mov   0 , %l2 ; sprawdz czy n > 0 

subcc   % %i1 i1 , 1 , %i1 b l pt   en d no nop ; zal zaladu adujj sta starto rtowe we ma maxx (%l (%l1) 1) i mi min(%l n(%l2) 2) z pie pierws rwszej zej lic liczby  zby 

l d   [%i 0 ] , %l1 mov  %l1 mov % l1 , %l2 p e tl a : ; spr sprawd awdzz kon koniec iec pe petli tli

b l t   en d ; wyl wylicz icz adr adres es i zal zaladu adujj kol kolejn ejnaa lic liczbe zbe

smul   %i1 %i1 , 4 , %l6 l d   [%i0+%l6 ] , %l0   ; % l0 l0 - o b ec ec na na l i cz cz ba ba   ; upd update ate max 

subcc   %l0 , %l1 , %l7   ; % l 1 - m a x   b l t n eexx t no nopp mov % mov  %l0 l0 , %l1 next : ; upd update ate min 

subcc   %l0 , %l2 , %l7   ; % l 2 - m i n   b g t n e xxt2 t2 nop no p mov % mov  %l0 l0 , %l2 next2 : ba   p e t l a subcc   % %i1 i1 , 1 , %i1 end en d : ; zap zapisz isz wyn wynik  ik 

s t   %l1 , [%i 2 ] s t   %l2 , [%i 3 ] su b   %l1 , %l2 , %i0 ret r e s t o r e   ; odtwo odtworzeni rzeniee okien okienka  ka 

84

 

1.2

Labo Labork rka, a, sszuk zukani anie e mi min n i max

Ocena nieznana. . g lo l o b aall

s t aarr t

;’ defa defajny:’ jny:’

d e f i ne ne ( i l o s c , 4 ) d e f i n e ( d e lltt a , 3 )

rejestry:’ try:’ ;’ rejes

define define define define define define define

( a d rree s , l 3 )   (m miin , l 1 )   (m maax , l 2 )   ( i n ddee k s , l 4 )   ( p o bbrr an an e , l 5 )   ( tm tmp , l 6 )   ( r o z p i e ttoo s c , o 0 )  

;’ %l3 - prz przesu esunie niecie cie tab tablic licy’ y’ ; ’ % l1 l1 - m in in ’ ; ’ % l2 l2 - m a x ’ ; ’ % l4 l4 - i nd nd ek ek s ’ ; ’ % l5 l5 - p ob ob ra ra na na w ar ar to to sc sc ’ ;’ %l6 - pom pomocn ocnicz iczy’ y’ ;’ %o1 - zwr zwroco ocona na roz rozpie pietos tosc’ c’

;’ ko kod:’ d:’

star t : save   %sp sp , ,   − 96, %s %s p mov   0 , %adr es mov   0 , %ind eks ;’zapis wartos tosci ci poc poczat zatkow kowych ych mi minn i ma max’ x’ ;’zapis war

%m min mianx [%a drres es ]] ,, % ll dd    [%ad ;’dodajemy ;’dodaj emy del delte te do pie pierws rwszej zej kom komork orki’ i’

ad d   %mi add %minn , de lt a , %tmp tmp st   % %ttmp, [%ad res ] p e tl a : add ad d   %indeks %indeks , 1 , %indeks   addd   %adres ad %adres , 4 , %adre s   cmp   %i cmp %i nndd ek ek s , i l o s c be end nopp no

;’indeks++’ ;’przesunieci ;’przesu nieciee na kolej kolejny ny elem element’ ent’

;’zwiek ;’zw ieksza szamy my o del delte’ te’

l d   [%adre s ] , %pobrane add %pobrane ne , del ta , %pobrane ad d   %pobra s t   %pobra pobrane ne , [%adre s ] ;’sprawdza ;’spraw dzamy my cz czyy pob pobran ranma ma war wartos toscc jes jestt mni mniejs ejsza za ni nizz mi min’ n’

subcc   %pob ran e , %min , %tmp bg   d a l e j nopp no mov % mov  %pob pob rane , %min ba   p e t l a e n d nop no p dalej : ;’spraw dzamy my cz czyy pob pobran ranaa war wartos toscc jes jestt wie wieksz kszaa ni nizz ma max’ x’ ;’sprawdza

subcc   %pobr ane , %ma maxx , %tmp bl   petla end nopp no mov   % mov %po po bra ne , %ma maxx petla end : ba   p e t l a nop no p en end su bd : %  %m max, %min min , %roz pi et os c ret

 

;’zapisujemy ;’zapisu jemy rozpi rozpietosc’ etosc’

85

 

1.3 1.3.1 1.3 .1

200 2008, 8, I ter termin min,, Je Jerzy rzy Res Respond pondek ek Treść reść

Napisz funkcję w asemblerze procesora SPARC obliczającą sumę liczb naturalnych od 1 do danej  n  jako argument funkcji. Założyć, że  n >= 1. Przykład: f(5) = 1 + 2 + 3 + 4 + 5 = 15 1.3.2 1.3. 2

Propozyc Propozycja ja roz rozwią wiązan zania ia 1

. g l o b a l f u nnkk c jjaa .proc 4 funk cja : save   %sp sp , ,   − 96, %s %s p   mov % mov  %i0 i0 , %l0   mov   1 , %l1   mov   0 , %l2   p ¸e tl a : addd   %l1 %l1 , %l2 , %l2   ad addd   %l1 ad %l1 , 1 , %l1   subbccc %l0 , 1 , %l0 subbc   bl   koneic nopp no ba   p e¸ tl a no p nop koniec : mov  %l2 mov % l2 , %i0   ret restore 1.3.3 1.3. 3

; ; ; ;

t rz rz eb eb a t ut ut aj aj t o r ob ob i ć ? ?? ??   a  liczba licz ba natur naturalna  alna  wynik  wyn ik 

; l ic ic zb zb a + s um um a = s um um a   ; li liczb czba++  a++  ; a ---  

; wyn wynik  ik 

Propozyc Propozycja ja roz rozwią wiązan zania ia 2

. g l o b a l s um um aatt or or .proc 4 sumator : save   %sp sp , ,   − 96, %s %s p mov   %il 01 , %l 01 mov  p e tl a : subcc   %l 1 , 1 , %l 1 bneg   k o n i e c ad addd   %l 0 , %l 1 , %l 0 ba   p e t l a koniec : mov   %l 0 , %i 0 mov  ret restore  

 

! p r z e s u n i ¸e ci e ok okna na ! saum wa l = 1 a ! ddee k r e m e n t a c j a l i cczz n iikk a ! ssuuma += l i c z n i k ! z w r ó c e n i e s um y ! p rrzz yw yw r ó c e n i e s t aann u o k nnaa

86

 

1.4 1.4.1 1.4 .1

201 2010, 0, I ter termin min,, Je Jerzy rzy Res Respond pondek ek Treść reść

Napisz w asemblerze procesora SPAR SPARC C funkcję obliczającą oblicza jącą sumę kwadrató kwadratów w wszystkich liczb całkowitych całkowitych z przedziału  a   do  b . Założyć  a < b, np. f(2, 5) = 2 * 2 + 3 * 3 + 4 * 4 + 5 * 5 Nagłówek funkcji ma mieć postać: i n t   f (( i i n t   a ,   i n t   b ) 1.4.2 1.4. 2

Propozyc Propozycja ja roz rozwią wiązan zania ia

87

 

1.5

201 2012, 2, I ter termin min,, Je Jerzy rzy Res Respond pondek ek

1.5.1 1.5 .1

Treść reść

Napisz w asemblerze procesora SPARC SPARC funkcję realizującą dokładnie tę samą operację co jej odpowiednik w języku C: i n t   f (( i i n t   ∗ tab ,   i n t   n )

{

i n t   i , su m a = 0 ; f o r ( i = 0 ; i   <   n ; i ++ ++) {

suma   −= ( 2   ∗   i + 11))   ∗   ta b [ i ] ; suma   ∗= suma; }

r e tu r n   suma; } 1.5.2 1.5. 2

Propozyc Propozycja ja roz rozwią wiązan zania ia 1

. g l o b a l f un un c .proc 4 funk cja : save   %sp sp , ,   − 96, % %ss p mov % mov  %i0 i0 , %l0   l d   [%i 0 ] , %l1  

; wskaźn wskaźnik ik ta tabl blic icy, y, ta takk pod podano ano arg argume ument nt ; war wartość tość tab tablic licyy sp spod od wsk wskaźni aźnika ka odc odczyt zytuje ujemy  my 

poprzez popr zez LD 

mov  %i1 mov % i1 , %l2   mov   1 , %l3   mov   0 , %l4   mov   0 , %l5   p ¸e tl a : subcc   % %l2 l2 , 1 , %l2 bl   koniec   nopp no

; ; ; ;  

rozmiar  rozm iar  i t em em p s um um a  

; n ---   ; i f n < 0 k on on ie ie c

  smul   %l3 %l4l3, , 1 2, ,%% ad add d   %l4 % l4l4   smul   %l1 , %l4 , %l4   subcc   %l5 , %l4 , %l5  

; ; ; ;

smul   %l5 , %l5 , %l5   addd   %l0 ad %l0 , 4 , %l0  

; s um um a = s um um a * s um um a   ; * t ab ab + + p rrzz es e s uw uw am a m y s ie ie o 4 n a k ol ol ej ej ny ny e le le me m e nt nt

t e mp mp t em em p te mp te mp s um um a

= = = =

2* i t em em p + 1 = 2 *i *i +1 +1 t em em p * ttaa b[ b [ i ] = (2 (2 * i+ i+ 1) 1) * ta ta b[ b[ i ] su ma su ma - t em em p = su su ma ma - ( 2* 2* i +1 +1 ) *t *t ab ab [ i] i]

b o t yl yl e m a i nt nt

l d   [%l 0 ] , %l1 ba   p e¸ tl a no p nop koniec : mov % l5 , %i0 mov  %l5

 

  e¸ i np np uutt n a o ut ut pu pu t ret  

restore

;pobieramy ;pobier amy now nowyy elem element ent

; z wr wr ac ac am a m y w yn yn ik ik w i 0 b o p o r es es to to re r e z am am ie ie ni ni a s i ; r et et b o b ył ył o s av av e

88

 

1.5.3 1.5. 3

Propozyc Propozycja ja roz rozwią wiązan zania ia 2

.global fun .proc 4 ;

fun :

a ( n ) = a( a ( n - 1) 1 ) ^ k + n * k ; a( a(0) = 1

save   %sp sp , ,

  − 96,

%s p %s

; %i0 == n  ; %i1 == k 

subcc   %i0 , 1 , %o0   ; %o % o 0 == == n - 1 bneg   r e tu r n 1 nopp no ; t rz rz eb eb a o bl bl ic ic zy zy c a ( n - 1 )

mov   % mov  %i1 i1 , %o1 c a l l   fun no nopp ; %o0 == a(n - 1)

mov mov % , %l1 mov  %i1   1 i1 , %l2 power : umul   %l2 , %o0 subcc   % %l1 l1 , 1 , bg   power nopp no

  

;; %% ll2 l12 == == k1   ( tu l1 t u b ed ed zi zi e w yn yn ik ik p ot o t eg eg ow o w an a n ia ia )

, %l2 %l1   ; dekreme dekrementuj ntuj liczni licznikk petli petli  

; s ko ko k , g dy dy l ic ic zn zn ik ik > 0  

; %l2 == a(n - 1) ^ k 

umul   % %i0 i0 , %i1 , %i0 ; %i0 == n * k 

addd   %i0 ad %i0 , %l2 , %i0 ; %i0 == a(n - 1) ^ k + n * k == a(n)

ba   r e tu r n no nopp return 1 : mov   1 , %i0 retur n : ret restore

89

 

1.6

201 2013, 3, I ter termin min,, Je Jerzy rzy Res Respond pondek ek

1.6.1 1.6 .1

Treść reść

Napisz w asemblerze procesora SPARC funkcję zwracającą  a(n)  wyliczoną z poniższego wzoru rekurencyjnego, a pobierającą dwa argumenty:  n  oraz  k , obydwa typu  unsigned int . a(n) =  a (n − 1)k

1.6.2 1.6. 2

+ n · k,

a(0) = 1,

n = 1 , 2, 3,...

Rozwią Rozwiązan zanie ie nr nr 1 by Doxus Doxus

. g lo l o b aall star t : MOV MOV MOV

s t aarr t      

0 x0 x0 5 , 0 x0A , %o 7 ,

petl a : SAVE   %sp sp , , SUBcc   %i 7 , BE NOP

 

nzero

SUB SU B BA NOP

   

%i 7 , petla

nzero : MOV   0 xx00 0 , MOV   0 x0 x0 0 , p e tl a p o w r o t : RESTORE MOV   MOV   petlamno z : UMUL   ADD   SUBcc   BNE  

%i 5 , 0 xx00 1 ,

%g 1 %o 7 %g 7  

     

−96 ,

%s p

 

;! otw otworz orzeni eniee ok okna  na 

0 x00 ,

%g 0

 

;! spr sprawd awdzen zenie, ie, cz czyy to dn dnoo

0 x01 ,

%o 7

 

;! wykon wykonanie anie rekur rekurencji encji

%i 5 %g 2

 

;! zam zamknie knie ¸ cie koł ¸cie koła  a 

%l 0 %l 1

   

%i 5 , %l 0 , %l 1 , 0 x01 , %l 1 , %g 1 , petlamnoz

%l 0 %l 1 %g 0

%g 1 , %l 2 ,

%l 2 %o 5

ADD

0 x01 ,

%g 2

%g 2 ,

SUBcc   %g 2 , %g 7 , BLE petlapowrot NOP MOV NOP

 

%i 5 ,

; ! g 2 t em em p n  

 

UMUL   %g 2 , ADD   %l 1 ,  

; ! g1 - K   ; ! r eejj o 7 i i 7 - > N ( lo l o ka ka ln ln e) e) ;! N abs absolu olutne tne

%g 1

%g 0

   

;! obliczenia  obliczenia  ; ! t em em p k    

;! obl oblicz iczeni eniaa zgo zgodni dniee ze wzo wzorem  rem 

 

;! cz czyy kon koniec iec od odkre kre ¸ cania koła  ¸cania

; ! g 1 - w yn yn ik ik k on on co co wy wy   ;! kun kuniec iec

90

 

1.6.3 1.6. 3

Rozwią Rozwiązan zanie ie nr 2 by by Trim Trimac ack k

. g lo l o b aall .proc 4 ;! ;! ;! ;! ;! ;! ;! ;! ;! ;! ;!

s t aarr t

Rejestry: Rejestry: % i0 i0 - n . N um um er er e le le me me nt nt u c ia i¸g a   u, któ ¸gu, który ry chc chcemy emy pob pobrać  rać  % i1 i1 - k . P ar ar am am et et r r ó wn wn an an ia ia c ia i¸a gu    %l0 % l1 l1 %l2 %l3

-

zmiennaa tym zmienn tymcza czasow sowaa do po porówn równań  ań  l ic ic zn zn ik ik p ot ot ¸gowania  ¸e gowania  w yn yn ik ik p ot ot ¸gowania  ¸e gowania  wynik mnożenia n * k 

Wzór: a(n) = a(n - 1) ^ k + n * k; a(0) = 1 Wartoś Wa rtośćć zwr zwraca acana: na: a(n)

star t : save   %sp , sp  ,

 

subcc   %i %i 0 , bneg   zwroc1 no nopp subcc   %i %i 1 , bneg   zwroc1 no nopp mov   %i 1 , call   start nop no p

−96 ,

%s p

 

;! Przesu Przesunieci nieciee okie okienka  nka 

1,

%o 0

 

; ! % o0 o0 -> - > n - 1 . i f (n ( n == == 0) 0)

1,

%l 0

 

; ! if ( k == 0)

%o 1

 

; ! % o1 o1 - > k  

   

; ! % l1 l1 - > k   ; ! % ll22 - > a ((nn - 1 )

;! %o0 -> a(n - 1)

mov mov

   

%i 1 , %o 0 ,

%l 1 %l 2

power : ;! dekrem dekrement entacj acjaa lic liczni znika ka i spr sprawd awdze zenie, nie, cz czyy sk skończy ończyliśm liśmyy po pote te¸gować: ¸ gować: if  (%l1 - 1 = 0)

subcc   be   nopp no umul   ba   nopp no powerEnd :

%ll 1 , % 1, powerEnd

%l 1

%l 2 , power

%l 2

 

; ! % l2 l2 * = a (n (n - 1 )

%l 3 %i 0

   

; ! % l3 = n * k   ; ! % ii00 = w yn yn ik ik  

%o 0 ,

;! %l2 -> a(n - 1) ^ k 

umul   %i 0 , addd   %l 2 , ad ba end nopp no zwroc 1 : mov   1 , end en d : r e t restore

%i 1 , %l 3 ,

%i 0

91

 

1.6.4 1.6 .4

Rozwi Rozwiąz ązan anie ie nr 3

Podobno otrzymano za to 5, choć rozwiązanie NIE JEST w pełni poprawne. .global fun .proc 4 fun :

save   %sp , sp  , mov mov mov mov

       

 

%i 0 , %i 1 , 0, 1,

−96 ,

%l 0 %l 1 %l 2 %l 3

subcc   %i %i 0 ,   theEnd bl nopp no

1,

mov   %l 0 , smul   %l 2 , addd   %l 2 , ad

%l 2 %l 1 , %l 1 ,

c a l l   fun mov   %i 0 ,

%l 3

expo : smul   subcc   bl   nop no p ba   nop no p theEnd : mov   ret restore .end

%s p        

; ; ; ;

%i 0  

; i f n = 0 t he he n j um um p t o t he he En En d    

%l 2 %l 2  

%l 3 , %l 3 , %l 2 , %l 1, theEnd

l0 - n   l1 - k   power  po wer  a(n ) = 1

 

   

; p ow ow er er = n   ; p ooww er er = p ow ow er er * k   ; p ow ow eerr = p ooww er er + k   ; call call rec recurs ursion  ion  ; ge gett score score of rec recurs ursion  ion 

%l 3 %l 2

expo %l 3 ,

%i 0

 

; ret return urn sc score ore

92

 

1.7

201 2015, 5, 0 ter termin min,, Je Jerzy rzy Res Respond pondek ek

1.7.1 1.7 .1

Treść reść

Napisz w asemblerze procesora SPARC SPARC funkcję realizującą dokładnie tę samą operację, co jej odpowiednik w języku C: i n t   f (( i i n t   ∗ tab ,   i n t   n )

{

i n t   i , su m a = 0 ; f o r ( i = 0 ; i   <   n ; i ++ ++) {

sumaa + sum += = i ∗ tab [ i ] ; }

r e tu r n   suma; } 1.7.2 1.7. 2

Rozwią Rozwiązan zanie ie 1 by by D Dox oxus us

. g lo l o b aall star t : ;! ;! ;! ;! ;! ;! ;!

s t aarr t

wskazn ik na po pocz cz tab tablic licy  y  ii12 nwsk   aznik i 0 - w yj y j sc sc io i o wa wa s um um a ( R ES ES TO TO RE RE s po p o wo wo du d u je je z e b ed ed zi zi e t o w r ej ej . wyjsci wyj sciowy owych ch fun funkcj kcjii nad nadrze rze ¸ dnej  ¸dnej  l 0 , l 1 - w sk sk az az ni ni k n a e l . t ab ab li li cy cy , n   l 2 - i te t e ra ra to to r   l3 - suma 

mov mov mov mov loo p :

       

%i 1 , %i 2 , 0 xx00 0 , 0 xx00 0 ,

%l 0 %l 1 %l 2 %l 3

;! if spr sprawd awdzaja  zaja  ¸ czy i < n 

subcc   %l 2 , %l 1 , bg e   koniec no nopp

%g 0

ld   [% l 0 ] , umul   %l 7 , addd   %l 7 , ad

%l 7 %l 2 , %l 3 ,

%l 7 %l 3

ad addd

 

%l 2 ,

0 x01 ,

%l 2

ba addd ad

   

loop %l 0 ,

0 x04 ,

%l 0

;!można zam ;!można zamien ienić ić mie miejsc jscami ami i dać no nop, p, al alee ta takk opt optyma ymalni lniej  ej 

koniec : mov  

%l 3 ,

%i 0

93

 

1.7.3 1.7. 3

Rozwią Rozwiązan zanie ie 2 by by Trim Trimac ack k

.global f  .proc 4 ;! ;! ;! ;! ;! ;! ;! ;! ;! ;!

Rejestry: Rejestry: %i0 - adr adres es tab tablic licyy wej wejsci sciowe owej  j  % i1 i1 - r oz oz mi mi ar ar t ab ab li li cy cy ( n ) %l0 %l1 %l2 %l3

-

zmiennaa tym zmienn tymcza czasow sowaa do po porówn równań  ań  suma  l ic ic zn zn ik ik ( i) i) i * a[i]

i nt nt f ( in in t * t ab ab , i nt nt n )

f: save   %sp , sp  , mov   0 , %l 1 mov   0 , %l 2

 

subcc   %i %i 1 ,

−96 ,

%s p    

; ! suma = 0   ;! i = 0  

1,

%l 0

 

; ! if ( n == 0)

%i 1 ,

%l 0

 

; ! i f ( i >= n )

ld   [% i 0 ] , smul   %l 3 ,

%l 3 %l 2 ,

 

%l 3

 

; ! % l3 l3 = a [i [i ] ; ! % ll33 = i * a [ i] i]

ad d add addd ad

   

%l 1 , %i 0 ,

%l 3 , 4,

%l 1 %i 0

   

; ! s u m a += += i * a [i [i ] ;! %i0 wsk wskazu azuje je na na kolej kolejny ny e. e. tabli tablicy  cy 

ad d add ba no nopp

   

%l 2 , 1, p e tl a Fo r

%l 2

 

; ! i ++ ++  

bneg no nop p

 

koniec

petlaF or : subcc   %l 2 , bg e   k o n i e c no p nop

koniec : mov   %l 1 , ret restore

%i 0

 

;! zwróce zwrócenie nie wyni wyniku  ku 

94

 

2

PVM

2. 2.1 1

Wst Wstęp ęp z la labor borek ek,, szu szuk kan anie ie min min i max

2.1.1 2.1 .1

Treść reść

Napisać program znajdujący minimum i maksimum z macierzy. Hello.c - program główny, rodzic; Hello other.c - program podrzędny, potomek. 2.1.2 2.1. 2

Rozwią Rozwiązan zanie ie

Program przekazuje kolejne wiersze macierzy do programów potomnych, które znajdują lokalne minimum i maksimum. Program zbiera wszystkie minima i maksima do tablicy o rozmiarze wysokości macierzy. Pod koniec sam ręcznie wylicza min i max z tych dwóch tablic. Należy pamiętać, że programy potomne muszą fizycznie znajdować się na dyskach innych komputerów w sieci PVM. Program działający, oceniony na 5.

Autorz orzy: y: /* - Aut -- Forc Forczu zu Forc Forczmański zmański -- Wud Wudaa Wud Wudeck eckii */ 

# ii nn cc ll uu dd ee    < s t d i o . h> # < s t d l i b . h> # i n c l u d e   # i n c l u d e   ”pvm3.h” # d e f i n e   WYSOK WYSOKOSC OSC 5   # d e f i n e   SZEROKO SZEROKOSC SC 5  

// licz liczba ba wier wierszy  szy  // lic liczba zba kol kolumn  umn 

/// Prog Program ram rodzi rodzica  ca 

main() {

// da dane ne pot potrze rzebne bne do obl oblicz iczeń  eń 

i n t   m a t r i x [WY [WYSSOKOSC ] [SZ [ SZER EROK OKOS OSC C] ; i n t   m i n r e s u l t [W [WY YSOKOSC] , m a x r e s u l t [W [WY YSOKOSC] ; i n t   mini minimum, mum, mak maksi simum; mum; // wyp wypełnienie ełnienie maci macierzy erzy dany danymi mi

int   i , j ; f o r   ( i = 0 ; i   <   WYSOKOSC ; ++ i ) f o r   ( j = 0 ; j   <   SZER SZEROK OKOS OSC C ; ++j ) matrix [ i ] [ j ] = rand () % 30; wypisa isanie nie mac macier ierzy zy na kon konsol solii // wyp

f o r   ( i = 0 ; i   <   WYSOKOSC ; ++ i ) {

f o r   ( j = 0 ; j   <   SZER SZEROK OKOS OSC C ; ++j ) p r i n t f ( ”%d ” , matrix [ i ] [ j ]) ; p r i n t f ( ” \n\n” ) ; } // pobra pobranie nie infor informacji macji

int   ilhost , ilarch ; s t r u c t   pvmhostinfo   ∗   i n f o ; p v m c o n f i g (& (& i l h o s t , & i l a r c h , & i n f o ) ; hostow w : %d \ n ” , i l h o s t ) ; p r i n t f ( ”L iczba hosto i n t   itid d1 ; = 0 ;

95

 

// Dl Dlaa każd każdeg egoo hos hosta ta - ini inicju cjujem jemyy go

f o r   ( i = 0 ; i   <   i l h o s t ; i ++ ) {

”/home me/p /pvvm/ m/ppvm3/s ek cj a1 1 /b in /L /LIINUX/ he l l o ot h er ” , 0 , pvm spawn spawn (   ”/ho PvmT PvmTas askH kHos ostt , in f o [ i ] . hi name , 1 , &ti d ) ; i f   f    ( t i d   <   0 ) {

i l h o s t −−; c o n ti n u ee ; ;

}

p r i n t f ( ” ti d : %d \ n” n” , , t i d ) ; pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; // wysyłamy: wysyłamy: // id wiersz wiersza  a 

pvm pkint( pkint(&id1 &id1 , 1 , 1) ; // eleme elementy nty wier wiersza  sza 

pvm pkint (&mat rix [ id 1 ] [ 0 ] , SZEROKOSC, 1) ; pvm send( send( tid , 100) ; id1++; } /// ///// Wyk Wykony onywan wanie ie pro progra gramu mu aż do prz przedo edosta statni tniej ej pe ¸ tli ¸tli

i nhti  l eb  uuf(f i di d, 1  c   m maks ma ksim imum um = ma x re su lt [ j ] ; i f f    ( m i n r e s u l t [ j ]   <   minim minimum um ) minim nimum = mi n re su lt [ j ] ; }

p r i n t f ( ”Uzy ”Uzyska skane ne wart osci : \ nM nMIN: IN: %d , MAX: %d \ n” n”  , mi mini nimu mum m , ma maks ksim imum) um) ; pvm exit () ; r e tu r n   0 ; } Program potomka

# i n c l u d e   < s t d i o . h> # i n c l u d e   # i n c l u d e   ”pvm3.h” # d e f i n e   WYSOK WYSOKOSC OSC 5

 

# d e f Prog i n e   SZEROKO SZER SCka  5   /// Program ram OKOSC potomka  potom i n t   main()

// licz liczba ba wier wierszy  szy  // lic liczba zba kol kolumn  umn 

{

[SZ ZEROKOSC] , curr min , curr max ; i n t   mast erid , id1 , j , cur r row [S // pob pobier ierzz id rod rodzic zica  a 

masterid = pvm paren parentt () ; f    ( mast erid == 0) i f   ex it (1) ; w h i l ee (  ( 1 ) {

pvm recv( masterid , 100) ; // pobranie pobranie wart wartości: ości: // id wie wiersz rsza  a 

pvm upkint(&id1 upkint(&id1 , 1 , 1) ; pvm upkint (&cu rr ro w [ 0 ] , SZEROKOSC, 1) ; uzysak saknie nie min minimu imumm z wie wiersz rsza  a  // uzy

curr min = curr max = curr row [ 0 ] ; SZER EROK OKOS OSC C ; j ++) f o r   ( j = 1 ; j   <   SZ

{

i f f    ( c u r r r o w [ j ]   >   c ur ur r m maa x ) curr max = curr row [ j ] ; i f f    ( c u r r r o w [ j ]   <   c ur ur r m mii n ) curr min = curr row [ j ] ; } // wy wysłan słanie ie now nowych ych dan danych  ych 

pvm pvm pvm pvm pvm

init send (PvmD (PvmData ataDef Defaul aultt ) ; pkint( pkin t(&id1 &id1 , 1 , 1) ; pkint(&curr pkint( &curr min , 1 , 1) ; pkint(&curr max , 1 , 1) ; pkint(&curr send ( masterid , 200) ; send

}

pvm exit () ; r e tu r n   0 ; }

97

 

2.2

Labo Laborki rki,, ode odejmo jmowa wanie nie mac macier ierzy zy

2.2.1 2.2 .1

Treść reść

Odejmowanie macierzy. 2.2.2 2.2. 2

Rozwią Rozwiązan zanie ie

Ocena nieznana. /* AK Lab 2 - PVM  Annaa Kusn Ann Kusnierz  ierz  Tomasz Toma sz Szolt Szoltysek  ysek  Temat: Tema t: Odejm Odejmowanie owanie dwoc dwochh macie macierzy  rzy  */ 

# i n c l u d e   < s t d i o . h> # i n c l u d e   # i n c l u d e   ”pvm3.h” # d e f i n e   MATRIX MATRIX SIZ SIZE E 20 i n t   main() {

int   i , j ; //licznik //licz nik wier wierszy szy macie macierzy  rzy    ount = ii nn tt    crescou nt 0; ; tess , m ssgg ttaa g ; i n t   ti d m a s te r , i l h o s t , i l a r c h , b u f i d , t i d , b y te tinn f o i n f o ; s t r u c t   p v m hhoo s ti

i n t   a [ MA MATR TRIX IX SSIZ IZE E ] [ MA MATR TRIX IX SSIZ IZE E ] , b [ MA MATR TRIX IX SSIZ IZE E ] [ MA MATR TRIX IX SSIZ IZE E] , r [ MATRIX MAT RIX SI SIZE ZE ] [ MAT MATRIX RIX SI SIZE ZE ] ; FILE   ∗ tx t = f o p e n ( ” r e s u l t . tx t” , t” , ”w” ) ; f o r ( i =0; i void   parent () ; void   ch il d () ; /// pro progra gramm główny  główny  i n t   main( void main( void )  )   {

i f  (p   (p vm parent () == Pv PvmN mNoPa oPare rent) nt) parent () ; else c h i l d () ; r e tu r n   0 ; } /// rodz rodzic ic

void   parent () {

//rozmiary //rozmiary obra obrazu  zu 

int   n = 32; int   m = 1024;

//aktualna alna pozyc pozycja  ja  //aktu

int   x = 0 , y = 0; //pv //pvm-owe m-owe zmie zmienne nne

i n t   tIdMaster = 0 ,   ∗ tI d ; i n t   i l H o s t = 0 , i l A rrcc h = 0 ; s t r u c t   pvmhostinfo   ∗ i n f o ; //sum //sumaa zlic zliczen  zen 

i n t   sum = 0; //d //dane ane do pr przes zeslan lania, ia, odp odpowi owiedn ednio io x y n 

i n t   dat dataToS aToS end [ 3 ] ; i f  (   ( (extIdMaster = pv pvm m my myti tidd () )   <   0 ) it (0) ; //pobranie konfi //pobranie konfigurac guracji ji

pvm config( config(&ilH &ilH ost , &ilArch , &inf o ) ; 103

 

//stwor worzen zenie ie tab tablic licyy z id dz dziec iecii //st t I d = ( i ( i n t ∗ ) c a l l o c ( i l H o s t ,   s i z e o f (  ( i    i n t ) ) ; //wyslanie anie pocza poczatkowy tkowych ch dany danych  ch  //wysl

f o r (  ( i i n t   i = 0 ; i   <   il Ho st ; ++i ) {

pvm spawn spawn ( ”/ home/p home/pvm vm / . . . ” , ” , 0 , PvmT PvmTas askH kHos ostt , in fo [ i ] . hi name , 1 , &tId [ i ]) ; //przygotowaniee i wysl //przygotowani wyslanie anie dany danych  ch 

pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; da data taTo ToSe Send nd [ 0 ] = x ; da data taTo ToSe Send nd [ 1 ] = y ; da data taTo ToSe Send nd [ 2 ] = n; pvm pkint ( da dataT taToS oSend end , 3 , 1) ; pvm send( tI d [ i ] , 100) ; //przes unieci eciee w obr obrazi aziee o pix pixel el w pra prawo wo //przesuni

++x ; //jesli wyjdzi dziee poza poza pra prawa wa st stro rone, ne, zej zejsci sciee w do doll //jesli wyj i f   (( x   >= (m   −   n ) )   {

x = 0; ++y ; } //sam koniec iec obr obrazu azu - zak zakonc oncz  z  //sam kon

i f   (( y   >= (m   −   n ) ) break break ; ; } //jesli zostal taloo co coss jes jeszcz zczee do wys wyslan lania.. ia.... //jesli zos

i f   (( y   >= (m   −   n ) ) w h i l e ( e ( tru e ) {

int   childId = 0; //odbieramy dowo //odbieramy dowolna lna pacz paczke ke wysl wyslana ana prze przezz dzie dzieci ci

i n t   b i = p v m r e c v ( −1 , 1 0 0 ) ; i n t   rcvdData = 0;

//pobie //pobieram ramyy jeg jegoo id 

pvm bufinfo ( bi , &dlbuf , &ms msgt gtag ag , &chil dI d ) ; //rozpakowuje //rozpakowujemy my dan dane, e, dodaj dodajemy emy do sum sumu  u 

pvm upkint(&rcv upkint(&rcvdDat dDataa , 1 , 1) ; suma += rcvdData ; //inicjujemy danee //inicjujemy dan

da data taTo ToSe Send nd [ 0 ] = x ; da data taTo ToSe Send nd [ 1 ] = y ; da data taTo ToSe Send nd [ 2 ] = n ; pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; pvm pkint ( dat dataT aToSe oSend nd , 3 , 1) ;

104

 

//wy //wysyl sylamy amy do dz dzie ieck cka, a, z kto ktoreg regoo akt aktual ualnie nie ode odebra brano no rez rezult ultat at

pv pvm m sen send( d( chil dId , 100) ; //tak jakk pop poprze rzedni dnio, o, prz przesu esunie niecie cie w obr obrazi aziee //tak ja

++x ; i f   (( x   >= (m   −   n ) )   { x = 0; ++y ; }

i f   (( y   >= (m   −   n ) ) break ; break ; }

//w ty tymm mom momenc encie ie wyslal wyslalism ismyy ju juzz wsz wszyst ystko ko //odbie //od bieram ramyy wi wiec ec ost ostatn atnia ia pa paczk czkee od kaz kazdeg degoo z dzi dzieci eci

f o r (  ( i i n t   i = 0 ; i   <   il Ho st ; ++i ) {

i n t   tmp; pv pvm m rcv( maste masterId rId , 100) ; pvm upkint(& upkint(&tmp , 1 , 1) ; suma += tmp; pvm kil l ( tId [ i ]) ; } } /// Poto Potomek  mek 

void   c h i l d () {

//id rodz rodzica  ica 

i n t   masterId = pvm parent () ; //tablica //tabli ca do kto ktorej rej zap zapisz iszemy emy ode odebra brane ne da dane ne

i n t   po in ts [ 3 ] ; //odbieramy ramy pacz paczke ke od rodzi rodzica  ca  //odbie

pvm rcv( rcv( master masterId Id , 100) ; pvm upkint( upkint( points , 3 , 1) ; //funk //funkcja cja z zada zadania  nia 

int   result = find pattern ( points [0] , points [1] , points [2 ]) ; //odsylamy dan //odsylamy danee

pvm init send (PvmD (PvmData ataDe Defau fault) lt) ; p vvm m p k i nt nt ( r e s u l t , 1 , 1 ) ; pv pvm m sen send( d( maste masterId rId , 100) ; }

105

 

4

Egza Egzami min n 2013 2013,, T1, T1, Hafe Hafed d Zghi Zghidi di

4. 4.1 1

Treść reść

Naszymi danymi wejściowymi są tabela A zawierająca 10000 łańcuchów znakowych i tabela B zawierająca 10000 wartości typu  integer  będących   będących wartościami skrótu łańcuchów tabeli A. Napisać kod programu głównego (rodzic) realizującego w oparciu o środowisko PVM równoległe wykonanie porównywania porównywania zgodności łańcuchów z tabeli A ze skrótami z tabeli B. Program potomny ma otrzymywać łańcuch znakowy z tabeli A oraz odpowiadającą mu wartość typu  integer  z tabeli B. Program główny ma zliczyć ile par  jest poprawnyc poprawnych, h, a ile nie zgadza się. Program potomny ma zostać uruchomion uruchomionyy na wszystkich węzłach w maszynie PVM. Rozdział zadania na podzadania dla procesów potomnych ma uwzględniać aspekt równoważenia obciążenia poszczególnych węzłów maszyny PVM (napisać tylko program rodzica).

4. 4.2 2

Ro Rozw zwią iąza zani nie e

# i n c l u d e   ”pvm3.h” # i n c l u d e   < s t d i o . h> c o ns RECORD NUMBER = 1 0 0 0 0 n s t i n t   REC void   f i l l t a b l e s (( char [REC CORD NUMBER] ,   i n t   o u t p u t [R  char ∗   i n p u t [RE [RE ECORD NUMBER] ) ; i n t   main pvm() {

// dane dane we wejścio jściowe we [REC CORD NUMBER ] ; char ∗   i n p u t [RE

[REC CORD NUMBER ] ; i n t   o u t p u t [RE // za zakład kładam amy, y, że ta fun funkcj kcjaa wy wypełn pełnia ia tab tablic licee ja jakk na należy  leży 

f i l l t a b l e s ( input , output ) ; // lic liczni zniki ki wy wysta  sta  ¸pień 

u n si s i g ne ne d i n t   t r u e c o u n t = 0 ; pobranie nie infor informacji macji // pobra

int   ilhost , ilarch ; s t r u c t   pvmhostinfo   ∗   i n f o ; p v m c o n f i g (& (& i l h o s t , & i l a r c h , & i n f o ) ; p r i n t f ( ”L iczba hosto hostow w : %d \ n ” , i l h o s t ) ; int   id , tid ; i nd t =  i 0; ; // dl dlaa każd każdeg egoo hos hosta  ta 

f o r   ( i = 0 ; i   <   i l h o s t ; i ++ ++, i d + ++ +) {

pvm spawn spawn ( ”/egzamin/dziecko” , ”/egzamin/dziecko”  , 0 , PvmT PvmTas askH kHos ostt , in fo [ i ] . hi name , 1 , & ti d ) ; i f   f    ( ti d   <   0 ) {

i l h o s t −−; c o n ti n u ee ; ; }

pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; // wys wysyłamy: yłamy:

pvm pvm pvm pvm }

pkint( pkin t(&id &id , 1 , 1) ;   // id wie wiersz rsza  a  pkstr( input [ id ]) ;   // łańcuch  łańcuch  suma ma kont kontrol rolna  na  pkint( pkint(&output &output [ id ] , 1 , 1) ;   // su send( tid , 100) ; send(

106

 

.. {   / / . ..

i n t   b uf u f id i d , c h i l d t i d , c h i l d i d , tmp , r e s u l t ;  RECORD RDNUM NUMBER) BER) w h i l e   ( i d   <  RECO {

b u f i d = p v m r e c v ( −1 , 2 0 0 ) ; pvm bufinfo ( bufid , &tmp, &tmp, &ch il d ti d ) ;

// pobra pobranie nie dany danych  ch 

p vvm m u pk p k in i n t( t(& &ch ild id , 1 , 1) ;   pvm upkin upkint( t(&r &r esu lt , 1 , 1) ;  

// id wie wiersz rsza  a  // wyn wynik  ik  // dzi dzieck eckoo zwr zwraca aca 0, jeśl jeślii su suma ma ni niee był byłaa pop popraw rawna  na  / / l ub ub 1 , j eś e ś li li b ył ył a p op o p ra ra wn wn a  

t r u e c o u nt n t = t r u e c o u nntt + r e s u l t ; // wy wysłan słanie ie now nowych ych dan danych  ych 

pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; pvm pkint( pkint(&id &id , 1 , 1) ;   // id kol kolejn ejnego ego wie wiersz rsza  a  pvm pkstr( input [ id ]) ;   // łańcuch  łańcuch  pvm pkint( pkint(&output &output [ id ] , 1 , 1) ;   // su suma ma kont kontrol rolna  na  p vvm m s eenn d ( c h i l d ti d , 1 0 0 ) ; id++; }

// odbier ostatn ost wyn od pot potom omków  ków  f o r odb   ( i ierani = anie 0 ; ei   <   i latnich h o ich s t ; wyników i+ ++ +ików ) {

b u f i d = p v m r e c v ( −1 , 2 0 0 ) ; pvm bufinfo ( bufid , &tmp, &tmp, &ch il d ti d ) ; p vvm m u pk p k in i n t( t(& & c h i l d i d , 1 , 1 ) ;   // pob pobran ranie ie id wie wiersz rsza  a  pvm upkin upkint( t(&r &r esu lt , 1 , 1) ;   // wyn wynik  ik  t r u e c o u nt n t = t r u e c o u nntt + r e s u l t ; } // wypis wypisanie anie wyni wyniku  ku 

p r i n t f ( ”L iczba pop popraw rawnyc nychh sum kont roln ych = %d \ n ” , t r u e c o u n t ) ; niepopr oprawny awnych ch sum kontrolnych = %d” d”  , RE RECO CORD RDNU NUMB MBER ER   − p r i n t f ( ”Liczba niep true coun t ) ; pvm exit () ; r e tu r n   0 ; }

107

 

4.3

Pro Propozyc pozycja ja rozw rozwiąz iązani ania a z for forum um - dlacz dlaczego ego je jest st źle i możes możeszz ujeb ujebać ać bezmyślnie przepisując

# i n c l u d e   < s t d i o . h> # i n c l u d e   ”pvm3.h” # I ZRE SIZE # dd ee ff ii nn ee    SST # d e f i n e   PATH   i n t   main()

21 50 60 0 0 ” p v m c h i ld ld ”

{

i n t   tidmaster ,   ∗ t i d , i l h o s t , i l a r c h , b u ffii d , a , b , temp , w yynn iikk ; s t r u c t   pvmhostinfo   ∗ i n f o ; idea je jest st ta taka, ka, by po porówn równać ać roz rozmia miarr st stri ring ngi, i, zap zapisa isany ny w dru drugim  gim  // idea wymiarz wym iarze, e, z wart wartościa  ościa  ¸ w ’ w ar ar to to sc sc i ’. ’. T re re ś ć z ad ad an a n ia ia m ó wi wi o d wó w ó ch ch   tabela tab elach ch w jed jednym nym wy wymi mierz erze, e, wie ¸ c śred ¸c średnie nie to. // Po Porówny równywan wanie ie str stringó ingóww na ch char* ar* z lic liczba zbami mi bo boli li be bezz got gotowy owych ch fu funk nkcj cji, i, co? :P  / / A n as as t o n aw aw et et n ie ie i nt nt er er es es uj uj e , b o z a t o o dp dp ow ow ia ia da da p ot ot om om ek ek , z at at em em   mamy ma my prz przykła ykładd pop popiep ieprze rzenia nia z po popla  pla  ¸taniem ¸tan iem XD 

char   s t r i n g i [ SIZE SIZE ] [ ST STR R SIZ SIZE E]; i n t   war to sci [SIZ [SIZE E]; c oonn st s t i n t   ROZ ROZMIAR = 1 0 ; wynik = 0; tidm aster = pv pvm m my myti tidd () ;   // zu zupełn pełnie ie zbe ¸ dne ¸dne p v m c o n f i g (& (& i l h o s t , & i l a r c h , & i n f o ) ; id n ie ie m us us i b yć yć t ab ab li li c ¸a ,  b o n ig ig dy dy n ie ie k or o r zy zy st s t am a m y z i nn nn eg eg o , n iż iż   / / t id aktualnie aktua lnie wykorz wykorzystyw ystywany  any  t i d = ( i ( i n t ∗ ) malloc ( il ho st ,  s i z e o f (  ( i    i n t ) ) ;

f o r   ( a = 0 ; a   <   i lh os t ; a++) {

pvm spawn(P spawn(PA ATH, 0 , Pvm PvmTa Task skHo Host st , i n f o [ a ] . hi name , 1 , &ti d [ a ] ) ; pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; pv m pk in t(&R t(&RO OZMIAR, 1 , 1) ; temp = STR SIZE;   // chuj chujowe owe konse konsekwenc kwencje je trzym trzymania ania stałe stałej  j  przez prz ez def define ine - br brak ak ad adre resu, su, hłe hłehłe hłe

pvm pkint(& pkint(&te temp mp , 1 , 1) ;  <

ROZM ZMIA IAR R ; b++) {f o r   ( b = 0 ; b   RO // zab zabawa awa z dw dwoma oma wym wymiar iaram ami, i, ki kiedy edy wys wystar tarczy czy jed jeden  en  // dzi dziwna wna id idea, ea, rac raczej zej nie nieint intuic uicyjn yjna  a  pvm pkint( pkint(&w &w art os ci [ a   ∗   R RO OZMIAR + b ] , 1 , 1) ; p v m p k sstr tr ( s tr i n g i [ a   ∗  RO  ROZ ZMIAR + b ] ) ; } pvm send ( ti d [ a ] , 100) ;   // tid jest jest wyk wykorz orzyst ystywa ywany ny ty tylko lko w te tejj pe¸ tli, tl i, tab tabela ela ni niee se sensu  nsu  }

a = ilhost ; tli? 

 

/ / n ik ik t n ie ie za z a uw uw a ży ży ł , ż e m a t ¸e w ar ar to to ś ć p o w yj yj ś ci ci u z p ¸e

108

 

.... {   // ..

w h i l e ( e ( a   <   SIZE SI ZE /R /ROZ OZMI MIA AR )   { b u f i d = p v m r e c v ( −1 , 2 0 0 ) ; pvm upkint(& upkint(&te temp mp , 1 , 1) ; wynik += temp;   / / w AN AN SI SI C n ie ie ma ma te te go go op o p er er at a t or or a   pvm bufinf o ( bufid , &te temp mp , &b , &tmp id ) ; pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; pv m pk in t(&R t(&RO OZMIAR, 1 , 1) ; temp = STR SIZE;   / / Z NO NO WU WU X D   pvm pkint(& pkint(&te temp mp , 1 , 1) ; f o r   ( b = 0 ; b   <   RO ROZM ZMIA IAR R ; b++) {

pvm pkint( pkint(&w &w art os ci [ a   ∗   R RO OZMIAR + b ] , 1 , 1) ; p v m p k sstr tr ( s tr i n g i [ a   ∗  RO  ROZ ZMIAR + b ] ) ; }

pv pvm m sen send( d( tmp id , 100) ; a++; }

f o r ( a = 0 ; a   <   i l h o s t ; a++) {

b u f i dupkint(& = p v m temp r emp c v (, −11 , 21)0 0; ) ; pvm upkint(&te wynik += temp;   / / c o c óż óż   pvm bufinf o ( bufid , &te temp mp , &b , &tmp id ) ; p v m k i l l ( tm p i d ) ; }

p r i n t f ( ”wynik %d” ,WYNIK) %d” ,WYNIK) ; r e tu r n   0 ; }

109

 

5

Egza Egzami min n 2014 2014,, T1, T1, Hafe Hafed d Zghi Zghidi di

5. 5.1 1

Treść reść

Korzystając z pakietu PVM zorganizować równoległe przetwarzania polegające na wyliczeniu silni każdego elementu tablicy   T  składającej się z 1000 elementów typu   INT . Wynik ma zostać zapisany w tej samej tablicy  T  (silnia(T[i]) ← T[i] dla i = 0 ... 999). Napisać proces główny realizujący podział zadania na podzadania oraz koordynujący równoległe wykonanie w procesach potomnych (procesu potomnego NIE należy pisać pisać). ). Podzi Podział ał podzadań ma zostać zreali zrealizow zowany any zgodnie z zasad zasadąą dynam dynamiczne icznego go podziału (równoważenia) (równow ażenia) zadań.

5. 5.2 2

Ro Rozw zwią iąza zani nie e

# i n c l u d e   ”pvm3.h” # d e f i n e   ELEM ELEMEN ENT T NUM UMBE BER R 1000 i n t   main() {

nasza sza tab tablic lica  a  // na

i n t   T [ ELEM ELEMEN ENT T NU NUMB MBER ER]] ; int   i ; f o r   ( i = 0 ; i   <   ELE ELEME MEN NT NUMBER ; i ++) T[ i ] = i ; int   ilhost , ilarch ;   //parametry z PVM //parametry PVMa  a  s t r u c t   pvmhostinfo   ∗   i n f o ; p v m c o n f i g (& (& i l h o s t , & i l a r c h , & i n f o ) ; int   id komorki = 0; i n t   ti d ; Dlaa każd każdeg egoo hos hosta ta - ini inicju cjujem jemyy go // Dl

for   ( i = 0 ; i   <   i lh ost ; i+ ++ +) {

pvm spawn spawn ( ”/potomek”  ”/potomek”  , 0 , Pv PvmT mTas askH kHos ostt , in fo [ i ] . hi name , 1 , &ti d ) ; //powołanie ołanie poto potomka  mka  //pow

i f   f    ( ti d   <   0 ) {

ci lohnotis nt u−− ee ; ;; }

pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; // wys wysyłamy  yłamy 

pvm pkint(&T[ pkint(&T[ id komo rki ] , 1 , 1) ; pvm send( send( tid , 100) ; id komorki++; }

110

 

{

// Wyk Wykony onywan wanie ie pro progra gramu mu aż do prz przedo edosta statni tniej ej pe ¸ tli ¸tli

i n t   b uf u f id i d , c h i l d t i d , c h iill d i d k o m moo r kkii , c h i l d s i l n i a , tmp ; w h i l e   ( id komorki   <   ELEMEN ELEMENT T NUM NUMBER) BER) {

// ode odebra branie nie in info fo o za zakończ kończeni eniuu pra pracy  cy 

b u f i d = p v m r e c v ( −1 , 2 0 0 ) ; pvm bufinfo ( bufid , &tmp, &tmp, &ch il d ti d ) ;

// pobra pobranie nie oblic obliczonej zonej siln silnii

p vvm m u pk p k in i n t( t(& &child id komorki , 1 , 1) ; p vm vm u ppkk in in tt((& c h i l d s i l n i a , 1 , 1 ) ; napisa isanie nie wa wartośc rtościi w tab tablic licy  y  // nap

T [ c h i lldd i d k o m oorr k i ] = c h i l d s i l n i a ; wysłan słanie ie now nowych ych dan danych  ych  // wy

pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; pvm pkint(&T[ pkint(&T[ id komo rki ] , 1 , 1) ; p vvm m s eenn d ( c h i l d ti d , 1 0 0 ) ; id komorki++; } // Odebr Odebranie anie ostat ostatnich nich dany danych  ch    <

  i lh ost ; i+ ++ +) {f o r   ( i = 0 ; i b u f i d = p v m r e c v ( −1 , 2 0 0 ) ; pvm bufinfo ( bufid , &tmp, &tmp, &ch il d ti d ) ; // pobra pobranie nie oblic obliczonej zonej siln silnii

p vvm m u pk p k in i n t( t(& &child id komorki , 1 , 1) ; p vm vm u ppkk in in tt((& c h i l d s i l n i a , 1 , 1 ) ; // nap napisa isanie nie wa wartośc rtościi w tab tablic licy  y 

T [ c h i lldd i d k o m oorr k i ] = c h i l d s i l n i a ; }

pvm exit () ; r e tu r n   0 ; }

111

 

5. 5.3 3

20 2015 15,, 0 te term rmin in,, Ha Hafe fed d Zi Zigh ghdi di

5.3.1 5.3 .1

Treść reść

Naszym zadaniem jest przeszukanie fragmentu obrazu (wzorzec ) o rozmiarze   nxn  w obrazie   Obraz   o rozmiarze mxm (m >> n). Do tego celu służy funkcja  int find pattern(x, y, n), gdzie  x, y  to   to współrzędne w obrazie, a   n możne  rozmiar   rozmiar wzorca. się Funkcja zwraca 1 jeśli wzorzec znajduje się w obrazie lub 0 jeśli go nie ma. Wzorzec powtarzać w obrazie. Napisać w oparciu o środowisko PVM kod programu rodzica zliczającego ile razy wzorzec znajduje się w obrazie. Program powinien zapewnić równoległe rozwiązywanie zadania z zachowaniem dynamicznego podziału zadań. Dodatkowe punkty można uzyskać za zapewnienie lepszej granulacji podziału zadań. 5.3.2 5.3. 2

Rozwią Rozwiązan zanie ie

# i n c l u d e   ”pvm3.h” e x te t e r n i n t   m; e x te te r n i n t   n ;

   

// wym wymiar iar obraz  obraz  // wym wymiar iar wzo wzorca  rca 

i n t   main() {

i n t   l i c z b a W y s ta p i e n = 0 ; tablic licaa pi piks ksel eli, i, zak zaklad ladamy amy ze ta takk rep reprez rezent entowa owany ny je jest st obr obraz  az  // tab

i n t   obr az [m] [m] ; int   ilhost , ilarch ;   //parametry //param etry z PVM PVMa  a  s t r u c t   pvmhostinfo   ∗   i n f o ; p v m c o n f i g (& (& i l h o s t , & i l a r c h , & i n f o ) ; p r i n t f ( ”L iczba hosto hostow w : %d \ n ” , i l h o s t ) ; int   id wiersza = 0; i n t   ti d ; // Dl Dlaa każd każdeg egoo hos hosta ta - ini inicju cjujem jemyy go

f o r   ( i = 0 ; i   <   i l h o s t ; i ++ ) {

//powołanie //powołanie poto potomka  mka 

pvm spawn spawn (   ”/potomek” ”/potomek”  , 0 , PvmT PvmTas askH kHos ostt , i nf o [ i ] . hi name , 1 , &ti d ) ; //jeśli niee ud udało ało sie ¸ po powoła wołaćć po poto tomka, mka, zmn zmniej iejsza szamy my li liczbe czbe ¸ hostów i //jeśli ni kontynuujemy 

f    ( t i d   <   0 ) {i f   i l h o s t −−; c o n ti n u ee ; ; }

pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; // wys wysyłamy: yłamy: // eleme elementy nty obra obrazu  zu 

f o r   ( i n t   i = 0; 0 ; i   <   n ; i ++ ++) {

//pakow //pakowanie anie całeg całegoo wier wiersza  sza 

p vvm m p k in in t( t(& & o b r aazz [ i d w i e r s z a + i ] [ 0 ] , m, 1 ) ; }

pvm send( send( tid , 100) ; id wiersza++; }

 

//wysłanie //wysłan ie wiers wiersza  za 

112

 

.. {   / / . .. // Wyk Wykony onywan wanie ie pro progra gramu mu aż do prz przedo edosta statni tniej ej pe ¸ tli ¸tli

i n t   b uuff i d , c h i l d t i d , c h i l d l i c z b a w y s t a p i e n , tmp ; w h i l e   ( i d w i e r s z a   <   (m   −   n ) ) {

// ode odebra branie nie in info fo o za zakończ kończeni eniuu pra pracy  cy 

b u f i d = p v m r e c v ( −1 , 2 0 0 ) ; pvm bufinfo ( bufid , &tmp, &tmp, &ch il d ti d ) ;

// pobra pobranie nie licz liczby by wysta wystapien  pien 

p vm vm u ppkk in in tt((& c h i l d l i c z b a w y s t a p i e n , 1 , 1 ) ; // zwiek zwiekszeni szeniee wysta wystapien pien wzor wzorca  ca 

l i c zb z b a W yyss t a ppii e n + += = chil d liczb a wyst apien ; // wy wysłan słanie ie now nowych ych dan danych  ych 

pvm init send (PvmD (PvmData ataDef Defaul aultt ) ; // no nowa wa cze czesc sc obr obrazu  azu 

f o r   ( i n t   i = 0; 0 ; i   <   n ; i ++ ++) {

p vvm m p k in in t( t(& & o b r aazz [ i d w i e r s z a + i ] [ 0 ] , m, 1 ) ; }

p vvm m s eenn d ( c h i l d ti d , 1 0 0 ) ; id wiersza++; } // Odebranie Odebranie ostat ostatnich nich dany danych  ch  f o r   ( i = 0 ; i   <   i d w i e r sszz a   −   i l h o s t + 1 ; i ++ ) {

b u f i d = p v m r e c v ( −1 , 2 0 0 ) ; pvm bufinfo ( bufid , &tmp, &tmp, &ch il d ti d ) ; // pobra pobranie nie licz liczby by wysta wystapien  pien 

p vm vm u ppkk in in tt((& c h i l d l i c z b a w y s t a p i e n , 1 , 1 ) ; // zwiek zwiekszeni szeniee wysta wystapien pien wzor wzorca  ca 

l i c zb z b a W yyss t a ppii e n + += = chil d liczb a wyst apien ; }

p r i n t f ( ”Liczba wystapien wzo wzorca rca : %d” d”  , liczbaWystapi en ) ; pvm exit () ; r e tu r n   0 ; };

113

 

6

Jav Java Spac Spaces es

6. 6.1 1

Ws Wstę tęp p z la labor borek ek

6.1.1 6.1 .1

Treść reść

Napisać program zawierający jednego Nadzorcę oraz wielu Pracowników. Nadzorca przekazuje do JavaSpace 2 równe tablice zawierające obiekty typu Integer, a następnie otrzymuje wynikową tablicę zawierającą sumy odpowiadających sobie komórek. Operację dodawania mają realizować Pracownicy. 6.1.2 6.1. 2

Rozwią Rozwiązan zanie ie

Zadanie obliczania sumy tabel dzielimy na dwie części:  Task  oraz   oraz Result .  Taski  są  są generow generowane ane przez Nadzorcę  i przekazywane  Pracownikom , ci zaś wykonują zadanie i tworzą obiekty klasy  Result , a następnie przekazuję je  Nadzorcy .  Nadzorca  je  je odbiera, kompletuje i ew. coś z nimi robi. Nadzorca  przydziela  przydziela tyle zadań, ile potrzebuje, z kolei  Pracownicy  działają  działają w nieskończoność. Aby zakończyć ich pracę,  Nadzorca  musi wysłać zadania z tzw. zatrutą pigułką (ang.  Poisoned Pill ), czyli obiekt zadania z nietypowym parametrem, który sygnalizuje zakończenie pracy. Może to być np.   Boolean   o wartości  false ,  Integer  o wartości -1, itp. Składowymi klas implementujących interfejs Entry nie mogą

być typu prostego (int, double itp.), muszą być opakowane (Integer, Double itp.). Najbezpieczniej dawać  je wszędzie. /* *  * @au @autho thorr So Sonn Ma Mati ti * @wa @waifu ifu Its Itsuka uka Kot Kotori ori */ 

p u bl b l i c c l a s s   Task   implements   Entry   { p u b l i c   I n t e g e r c e l l I D ;   // ID komórki komórki tabeli tabeli p u b l i c   In te g e r v al a l ue ue A ;   / / w ar a r to to ś ć z t ab ab el el i A p u b l i c   In te g e r v al a l u eeB B ;   / / w ar a r to to ś ć z t ab ab el el i B   p u b l i c   Bool ean i s P i l l ;   // czy zadanie zadanie jest jest zat zatruta  ruta  ¸ pi pigułk gułka  ¸ a  // Do Domyśl myślny ny konst konstruk ruktor, tor, mu musi si sie ¸ znajd znajdować  ować  p u b l i c   Task()   {

s  . c e l l I D =   t h i s . t h i s . s  . valueA =   t h i ss .  . valueB =   n u l l ; l ; s  . i s P i l l =   f a l s e ; t h i s . e  ; }

p u b l i c   T a sk sk ( In te g e r e n ttrr y IID D , In te g e r v al al uuee A , In te g e r v aall uuee B , B oooo l eeaa n isPill)   { t h i s . s  . c e l l ID = e n ttrr y ID ; t h i ss . . valueA = valueA ;  . valueB = valueB ; t h i ss . t h i ss . . i s P i l l = i s P i l l ; } }

114

 

/* *  * @au @autho thorr So Sonn Ma Mati ti * @wa @waifu ifu Its Itsuka uka Kot Kotori ori */ 

p u bl b l i c c l a s s   Result   implements   Entry   { p u b l i c   I n t e g e r c e l llII D , v a lluu e ; p u b l i c   Result ()   { s  . c e l l I D =   t h i s . t h i s . s  . value =   n u l ll ; ; }

p u b l i c   Resul t ( f i n a l   In teg er En Entr tryI yID D ,   f i n a l   I n t e g e r V aall uuee )   { s  . cel lI D = Ent t h i s . Entry ryID ID ;  . valu e = Value ; t h i ss . } }

p u bl b l i c c l a s s C l iiee n t   { p r o te t e c t eedd I n t e g e r d e f a u lltt L e a s e = 1 0000 0 0000 ; p r o te c te d J a vvaa S ppaa c e s p a c e ; prot ecte d Look Lookup up lookup ; public Client ()   { }

lookup = new new Look Lookup( up( JavaSpac JavaSpacee . cl as s ) ;

}

/* *  * @au @autho thorr So Sonn Ma Mati ti * @wa @waifu ifu Its Itsuka uka Kot Kotori ori */ 

p u bl b l i c c l a s s   Worker   extends   C l i e n t   { p u b l i c   Worker()   { }

p u b l i c v oi o i d   startWorking ()   { w h i l e (  tr u ee )  )   { e ( tr try   { t h i ss . . space = ( Java JavaSpac Spacee ) lookup . get Ser vi ce () ; Task( sk( ) ; T as as k ta s k =   new   Ta task = (Tas (Task) k) space . take ( task ,   n u l ll ,  , d e f a u l t L e a s e ) ; i f   e ) f    ( t a sk . i s P i l l ==   tr u e ) {

 , d e f a u l t L e a s e ) ; spa ce . wr it e ( task ,   n u l ll , System . out . pr i nt l n ((”Konie System ”Koniecc pracy work workera era . ” ) ; n  ; r e tu r n ; }

Int ege r res = task . val valueA ueA + task . valu valueB eB ; R es e s uull t r e s u l t =   new   Result ( task . cell ID , res ) ; space . write ( res ul t ,   n u l ll ,  , d e f a u l t L e a s e ) ; }

catch   ( Ex c eepp ti o n e x )   {} } }

l i c s t a t i c v oi o i d   ma main( in( Str ing [ ] args )   { p uubb li   Worker() Worker w =   new () w. startWorking ;  ; } }

 

// utwor zenie obiektu  // utworzenie realizacja reali zacja obiek zadan  zada n tu 

115

 

/* *  * @au @autho thorr So Sonn Ma Mati ti * @wa @waifu ifu Its Itsuka uka Kot Kotori ori */ 

p u bl b l i c c l a s s   S u p e r v i s o r   extends   C l i e n t   { s t a t i c f i n a l   I n t eg er INT NUMBER = 12 5; p u b l i c   Int ege r [ ] Ta Tabl bleA eA =   new   I n t e g e r [IN [INT T NUMBER ] ; p u b l i c   Int ege r [ ] Ta Tabl bleB eB =   new   I n t e g e r [IN [INT T NUMBER ] ; p u b l i c   Int ege r [ ] Ta Tabl bleC eC =   new   I n t e g e r [IN [INT T NUMBER ] ; konstrukto ruktor  r  // konst

p u b l i c   S u p e r v i s o r ()   { } // wygene wygenerowan rowanie ie zawa zawartości rtości tabl tablic ic p u b l i c v oi o i d   generate Data ()   {

Ra Rand ndom om ran d =   new   Random() ; 0 ; i   <  INT NU NUMB MBER; ER; ++i )   { f o r   ( i n t   i = 0; TableA [ i ] = ran d . ne x t I n t (IN (INT NUMBER) ; TableB [ i ] = ran d . ne x t I n t (IN (INT NUMBER) ; TableC Tab leC [ i ] = 0; } } rozpo // rozpoczeci czeciee prac pracy  y 

p u b l i c v oi o i d   s ta r tPr o d u c i n g ()   { try   { JavaSpac Spacee ) lookup . get Se rvi ce () ; t h i ss . . space = ( Java // utwor utworzenie zenie zadan zadania  ia 

f o r   ( I n te t e g eerr i = 0 ; i   <  INT NU NUMB MBER; ER; ++i )   { T as as k ta s k =   new   Task( i ,   t h i ss . . TableA [ i ] ,   t h i ss . . TableB [ i ] , f a l s e ) e ) ; spa ce . wr it e ( task ,   n u l ll ,  , d e f a u l t L e a s e ) ; } // pobra pobranie nie wyni wyniku ku zada zadania  nia 

System . out . pr in tl n (” System (” T a b l i c a C : ” ) ; n t eegg eerr i = 0 ; i   <  INT NU NUMB MBER; ER; ++i )   { f o r ( I nt R es e s uull t r e s u l t =   new   Resul t () ;  , d e f a u l t L e a s e ) ; r e s u l t = ( R e s u l t ) s p a c e . ta k e ( r e s u l t ,   n u l ll , Tabl Ta bleC eC [ re su lt . cel lI D ] = re su lt . value ;

} // utw utworz orzeni eniee zat zatrut rutej ej pig pigulk ulkii na sa samm kon koniec iec

T a s k p o i s o n P i l l =   new   Task( n Task( n u l l  l   ,   n u l ll   ,   n u l ll   ,   tr u ee )  ) ; space . writ e ( poi son Pi ll ,   n u l ll ,  , d e f a u l t L e a s e ) ; }

catch   ( Exception ex)   { } }

l i c s t a t i c v oi o i d   ma main( in( Str ing [ ] args )   { p uubb li utworzenie zenie obiek obiektu  tu  // utwor

S u p er e r v i ssoo r s v =   new   Supe rviso r () ; // utwor utworzenie zenie zada zadan  n 

sv . gene rat eDat a () ; sv . startPr oduci ng () ; } }

116

 

6. 6.2 2 6.2.1 6.2 .1

Za Zada dani nie e1 Treść reść

Napisać program odbierający z przestrzeni JavaSpace kolejno 100 obiektów klasy Zadanie posiadające w atrybucie typ (typu całkowitego) wartość 15 i dla każdego obiektu Zadanie wygenerować i umieścić w przestrzeni Jav JavaSpace aSpace obiekt klasyz Silnia posiada posiadający jący jako atrybut... (dalej nie pamiętam dobrze) wartość będącą silnią wartości uzyskanej liczba(typu całkowitego) z klasy Zadanie.

117

 

6. 6.3 3

20 2010 10,, I ter termi min, n, Ad Adam am Du Dusz szeń eńk ko

6.3.1 6.3 .1

Treść reść

Napisać kod programu głównego zarządzającego równoległym wykonywaniem zadania w maszynie JavaSpace polegającym na wyznaczeniu zbioru klatek video zawierających ruch. Wykrywanie ruchu ma odbywać się w procesorach wykonawczych naprogram zasadziegłówny porównania różnicowego, czyli wymaga  (przyjąć, poddania analizie dwóch kolejnych klatek. W tym celu posługując się  byte[] GetImage() że jest zdefiniowana i zaimplementowana) zaimplementowana) ma ppobierać obierać kolejne klatki obrazu i umieszczać je w przestrzeni JavaSpace, wraz z jej kolejnym numerem (numerowania ma odbywać się na poziomie programu głównego). Program główny kończy wysyłania zadań gdy funkcja  GetImage  zwróci   zwróci wartość  NULL. Jako wynik swojego działania programy wykonawcze zwracają obiekt odpowiedzi zawierający numer pierwszego obrazu z analizowanej pary oraz wartość logiczną czy para była identyczna czy też zawierała wykryty ruch. Na zakończenie działania program główny po zebraniu wszystkich odpowiedzi powinien wypisać numery obrazów dla których wykryto ruch oraz zakończyć procesy wykonawcze rozsyłając ”zatrutą pigułkę”. Zaproponować strukturę obiektu zadania i odpowiedzi. 6.3.2 6.3. 2

Propozyc Propozycja ja roz rozwią wiązan zania ia 1

Nie jest do końca prawid prawidłow łowa, a, pponiew onieważ aż kod nie jest spójny i nie wiadomo czy analizuje pary klatek. b l i c c l a s s   Image   implements   Entry   { p u bl //należy eży pamie ¸ ta ta ć o t ym ym a by by k aż a ż de de p ol ol e b ył ył o p ub ub li l i cz cz ne ne ! //nal

p u b l i c b yt y t e [ e [ ] frame ; public   Integer id ; //wymagane gane konstrukto konstruktory  ry  //wyma p u b l i c   Image ( )   {}

p u b l i c   Im Imag age( e( In teg er id ,   byte byte   [ ] f r aam me)   {  . i d =   new   In te ge r ( id ) ; t h i ss . t h i s . s  . frame = frame ; } }

//Dan //Danee prze przesyłane syłane jak jakoo odpo odpowiedź  wiedź 

p u bl b l i c c l a s s   Result   implements   Entry   { public   Integer id ; p u b l i c   Boolean move; p u b l i c   Result ()   {} p u b l i c   Result ( Int ege r id , Bool Boolean ean move)   { t h i s . s  . i d =   new   In te ge r ( id ) ; s  .movee =   new   Boolean (mo t h i s .mov (move) ve) ; } }

118

 

p u bl b l i c c l a s s   Program   { p u bbll i c i n t   d e f a u l t L e a s e = 1 0 0 0 0 0 ; p u bbll i c i n t   i d = 11;; p u b l i c v oi o i d   producer ()   { img11 , img img22 ; byte   [ ] img img1 img1 = getImage () ; try   { Look Lookup up lookup =   new   Loo Lookup( kup( JavaSpace .  c l a s ss )  ) ; J av a v a SSpp a ccee s p a c e = (J a v aaSS p aacc e ) l o o kkuu p . g e tS e r v i c e () ; img2 img2 = getImage () ; w h i l e (  tr u ee )  )   { e ( tr im imgg = getImage () ;   // dosta dostarcz rczone one w zadan zadaniu  iu  i f   f    (img ==   n u l l   | |   img2 ==   n u l ll )  )   break break ; ;   / / n ul ul l = k on on ie ie c Packag Pac kagee data =   new   Data( Data( id , img1 img1 , id + 1 , img2) img2) ;  , d e f a u l t L e a s e ) ;   // paczka paczka do space space space . writ e ( data ,   n u l ll , img1 = img2 ; id++; } // bo breaku breaku pr przeła  zeła  ¸czamy ¸cza my sie ¸ w tr tryb yb odb odbier ierani ania  a 

f o r   (R ienstul 1u; l ti   < i+ u l it =r e s1; =   id ( R;e si++ uull + t ))   {s p aacc e . t a k e I f E x s i s t s ( new   Result () ,   n u l l , defaultLease ) ; i f   .moove) f    ( re su lt .m ”Ruc uchh obrazków: ”   + r e s u l t . i d 1 +   ” ”   + System Syste m . out . pr in tl n ((”R re su lt . id2 ) ; }

space . writ e ( new   Image ( ) ,   n u l l , l  , d e f a u l t L e a s e ) ; p ti o n e )   {} }   catch   ( Ex c eep }

p u b l i c v oi o i d   consumer ()   { try   { Lookup( kup( JavaSpace .  c l a s ss )  ) ; Look Lookup up lookup =   new   Loo J av a v a SSpp a ccee s p a c e = (J a v aaSS p aacc e ) l o o kkuu p . g e tS e r v i c e () ; i n t   i = 00;; w h i l ee (  ( tr  tr u ee )  )   { Im a ggee () ; im mgg 1 . i d = i ++ ++; Image Ima ge img1 img1 =   new   Ima Im a ggee () ; im mgg 2 . i d = i ; Image Ima ge img2 img2 =   new   Ima img11 = (Image) space . take (img img (img11 ,   n u l l , l  , d e f a u l t L e s e ) ; img22 = (Image) space . read (img img (img22 ,   n u l l , l  , d e f a u l t L e s e ) ; "zatruta  ta  ¸ pi pigułk gułke¸"  e¸"  //czy wysłano "zatru

i f   f    ( img2 . fram e ==   n u l l  && img2 . id ==   n u l ll )  )   break ; break ; // cz czyy wyk wykona onano no ru ruch ch na obr obrazk azkach  ach 

i f   f    ( img1 . frame . eq ua ls (img2 . frame ) )   { // te tego go chy chyba ba ni niee trz trzeba eba na nawet wet wys wysyłać yłać w ty tymm zad zadani aniu  u 

r e s u l t =   new   Res ult (img2 . id ,   f a l s ee )  ) ; }   else   { e ) ; r e s u l t =   new   Res ult (img2 . id ,   tr u e ) } // wy wysyłan syłanie ie wyn wyniku iku do spa space ce

space . write ( res ul t ,   n u l ll ,  , d e f a u l t L e a s e ) ; }

p ti o n e )   {} }   catch   ( Ex c eep }

}

119

 

6. 6.4 4 6.4.1 6.4 .1

20 2011 11,, I ter termi min, n, Ad Adam am Du Dusz szeń eńk ko Treść reść

Napisać program umieszczający w przestrzeni JavaSpace   10  obiektów zadań zawierających   dwa  pola typu całkowitego oraz   dwa  pola typu łańcuch znakowy (zawartość nieistotna, różna od NULL), po  10   obiektów klasy   Odpowiedź   o dać deklarację klasy zadań. oraz Następnie odebrać z przestrzeni kolejno atrybutach  id  typu  Integer   wynik  typu   typu  Integer   posiadające w atrybucie id wartość  1  15 5, a następ następnie nie wszystkie z atrybutem  id   = =  110. Przyjąć, że klasa  Odpowiedź  jest  jest już zdefiniowana zgodnie z powyższym opisem.

6. 6.5 5 6.5.1 6.5 .1

20 2012 12,, I ter termi min, n, Ad Adam am Du Dusz szeń eńk ko Treść reść

Napisać program umieszczający w przestrzeni JavaSpace  1000 obiektów zadań zawierających  trzy  pola typu całkowitego oraz   dwa  pola typu łańcuc łańcuchh znak znakowy owy (zaw (zawartoś artośćć nieis nieistotna, totna, różna oodd NULL), podać deklarację klasy zadań. Następnie odebrać z przestrzeni kolejno  1000 obiektów klasy  Odpowiedź  o atrybutach   id   typu   Integer   oraz   wynik   typu   Integer  posiadające w atrybucie id wartość   35, a następnie wszystkie z atrybutem  id   =  10 . Przyjąć, że klasa  Odpowiedź  jest już zdefiniowana zgodnie z powyższym opisem.

120

 

6. 6.6 6

20 2013 13,, I term termin in

6.6.1 6.6 .1

Treść reść

Napisać program umieszczający w przestrzeni JavaSpace   200  obiektów zadań zawierających   dwa  pola typu całkowitego oraz   dwa  pola typu łańcuc łańcuchh znak znakowy owy (zaw (zawartoś artośćć nieis nieistotna, totna, różna oodd NULL), podać deklarację zadań.  Następnie odebrać z przestrzeni kolejnow  100  obiektów klasy  Odpowiedź   o atrybutach   id   klasy typu   Integer  oraz   wynik    typu   Integer   posiadające atrybucie id wartość   35, a następnie wszystkie z atrybutem  id   =  10 . Przyjąć, że klasa  Odpowiedź  jest już zdefiniowana zgodnie z powyższym opisem. 6.6.2 6.6. 2

Rozwią Rozwiązan zanie ie

Klasa Zadanie

// dek deklar laracj acjaa kl klas asy, y, mu musza  sza  ¸ być wid widocz oczne: ne: // implem implementacj entacjaa inter interfejsu fejsu Entr Entry  y  p u bl b l i c c l a s s   Zadanie   implements   Entry   { // publi publiczne czne skład składowe, owe, opak opakowuja  owuja  ¸ce typ typyy zmien zmiennych  nych 

public   Integer liczba ; p u b l i c   S t r i n g n a p i ss11 ; p u b l i c   S t r i n g n a p i ss22 ; p u b l i c   B oooo le l e aann p o i s o n P i l l ; konstrukto ruktorr domyślny, domyślny, obow obowia  ia  ¸zkowy  // konst p u b l i c   Zadanie ()   {

Ra Rand ndom om ran d =   new   Random() ; s  . li cz ba = ran t h i s . randd . nextI nt () ; t h i ss . . napis1 = Int ege r . toS tri ng ( rand rand . nextI nt () ) ; t h i s . rand . nextI nt () ) ; s  . napis2 = Int ege r . toS tri ng ( rand s  . p o i s o n P i l l =   f a l s e ; t h i s . e  ; }

p u b l i c   Z aadd aann i e ( I n t e g e r l i c z b a , S t r i n g n a ppii s 1 , S t r i n g n a ppii s 2 , B oooo llee aann poisonPill )   { t h i s . s  . l i c z b a = l i c z b a ; s  . n a p i s 1 = n a p i s 1 ; t h i s . t h i ss . . n a p i s 2 = n a p i s 2 ; t h i ss   . p o i s o n P i l l = p o i s o n P i l l ; } } Nadrzędna klasa Klienta

/* *  * @ au au th th or or S on on M at at i & D ox ox us us */  p u bl bl i c c l a s s   C l i e n t   {

p r o t e c t e d   I n t e g e r d e f a u lltt L e a s e = 1 0000 0 0000 ; p r o t e c t e d   JavaSpace space ; p r o t e c t e d   Loo Lookup kup looku p ; p u b l i c   C l i e n t ()   { lookup =   new   Loo Lookup( kup( JavaSpace .  c l a s ss )  ) ; } }

121

 

Klasa Nadzorcy

/* *  * @ au au th th or or S on on M at at i & D ox ox us us */ 

p u bl b l i c c l a s s   Boss   extends   C l i e n t   { // do domyśl myślne ne war wartośc tościi dl dlaa zad zadani ania  a 

s t a t i c f i n a l i nt n t   DEFAULT TASK NUMBER = 2 0 0 ; s t a t i c f i n a l i nntt   DE DEFA FAUL ULT T MA MAX X MI MISS SSES ES = 1 0 0 ;

In te ge r tas taskNu kNumbe mberr ; Int ege r ma maxMi xMiss sses es ; p u b l i c   Int eg er ge getT tTas askN kNum umbe berr ()   { r e tu r n   taskNumber ; }

p u b l i c   Int ege r getM getMaxMi axMisses sses ()   { r e tu r n   maxMisses ; } // ob obowia  owia  ¸zkowy dom domyślny yślny konst konstrukto ruktor  r  p u b l i c   Boss ()   {

ta Nu Numb DE DEF FAULT ULTTM TAX ASKMISS NU MES; BER ; maskxM ismb se ser==DE DEFA FAUL MAX MI SSES; }

Bosss ( Int ege r ta task skNu Numb mber er , Int ege r max maxMis Misse ses) s)   { p u b l i c   Bos t h i ss . . taskNumber = taskNumbe taskNumberr ; s  . maxMisses = maxMisses ; t h i s . } /* *  * Wyg Wygene enerow rowani aniee zad zadani aniaa z los losowy owymi mi war wartości tościam amii * @pa @param ram id ide identy ntyfik fikato ator  r  * @pa @param ram poi poison sonPil Pilll pi pigułk gułka, a, ta takk cz czyy ni niee */ 

p u b l i c   Zadanie generateTask ( i n t   i d ,   boolean   p o i s o n P i l l )   { Ra Rand ndom om ran d =   new   Random() ; return new   Zadani Zadaniee ( id , In teg er . toS tri ng ( ran randd . nextI nt (1000) ) , In te g e r . to S t r i n g (r aann d . n e x tIn t (1 0 0 0 ) ) , p o i s o n Pi l l ) ; } /* *  * Utwor Utworzenie zenie zadaniów  * @pa @param ram co count unt il ilość ość zad zadanió aniów  w  */ 

p u b l i c v oi o i d   createTasksInJavaSp ace ( i n t   c o u n t)   { try   { t h i ss . . space = ( Java JavaSpac Spacee ) lookup . get Se rvi ce () ; f o r   ( i n t   i = 0; 0 ; i   <  count ; ++i )   { Z a da d a n iiee z aadd =   t h i ss . . gener ate Task ( i ,   f a l s e ) e ) ; spa ce . wr it e ( zad ,   n u l l , l  , d e f a u l t L e a s e ) ; System Syste m . out . pr in tl n ((”Wyg ”Wygene enerow rowaa łem zad ”   + i +   ” o s t r in i n g a ch ch ”  + za zadd . napis1 +   ” i ”   + zad . nap is2 ) ; } }

catch catch (RemoteException  (RemoteException   |   T r a n s a c ti o nEx n Ex c e p ti o n e x )   { System Syste m . out . pr in tl n (”Dupa ( ”Dupa XD” ) ; } }

122

 

b l i c c l a s s   Boss   extends   C l i e n t   { p u bl /* *  * Uzysk Uzyskanie anie odpow odpowiedzi iedzi * @pa @param ram id odp odpowi owiedz edzi, i, kt ktora ora na nass int intere eresuj sujee * @pa @param ram cos costam tam int intere eresuja  suja  ¸cy na nass wyn wynik  ik  * @pa @param ram cou count nt lic liczba zba odp odpowi owiedz edzii do odb odbior ioru  u  */ 

p u b l i c   I n t e g e r r e c e iivv e D a t a ( I n t e g e r i d , I n t e g e r c o sstt aam m , I n t e g e r c oouu nntt )   { I n t e g e r f ou ou nd nd = 0 ; try   { t h i ss . . space = ( Java JavaSpac Spacee ) lookup . get Se rvi ce () ; Odpowi Odp owiedz edz wzor =   new   Od Odpo powi wied edz( z( id , costam costam ) ; 0 ; i   <   count ; i++ i++))   { f o r   ( i n t   i = 0; // odczyt odczyt blo blokuja  kuja  ¸cy, ¸c y, zat zatrzy rzymuj mujee pr przepł zepływ yw do dopóki póki od odpp sie ¸ nie pojawi

Odpo Od powi wied edzz wyn wynik ik = (Odpo (Odpowi wied edz) z) space . ta ke If Ex is ts ( wz wzor or ,   n u l l , defaultLease ) ; i f f    (wynik !=   n u l ll )  )   { ”Odpow owie iedz dz : id = ”  + wyn wynik ik . get Id () + System Syste m . out . pr i nt l n ((”Odp ” , wy wyni nikk = ”   + wynik . getWynik ( ) ) ; }

found++;

} }   catch   ( UnusableEntryExcepti on   |   TransactionException   | In te r r u p te d Ex c e p ti o n   |   RemoteExcep RemoteException tion ex)   { }

r e tu r n   found ; } /* *  * ZAT ZATRUJ RUJ DZI DZIECI ECIACZ ACZKI KI XD  */ 

p u b l i c v oi o i d   poisonKids ()   { // utwor utworzenie zenie zatru zatrutej tej pigu pigulki lki

Z ad a d an a n iiee p o i s o n P i l l =   new   Zadani e ( n u l ll   ,   n u l ll   ,   n u l ll   ,   tr u ee )  ) ; try   { space . writ e ( poi son Pi ll ,   n u l ll ,  , d e f a u l t L e a s e ) ; }   catch   ( TransactionExc eption   |   RemoteExcept RemoteException ion ex)   { }

}

p ub l i c s t a t i c v oi o i d   ma main( in( Str ing [ ] args )   { u b li I n t e g e r m i ssss e s = 00;; B o s s b o s s =   new   Boss ( ) ; bos s . cre ate Tas ksI nJa vaS pac e ( bos s . getT getTask askNumb Number er () ) ; boss . rece ive Dat a (35 ,   n u l ll   , 1 0 0 ) ; // boss boss odb odbier ieraa pozost pozostałe ałe od odpow powied iedzi, zi, o id 10, do dopóki póki nie tr trafi afi na  pewna  ¸ li liczbe czbe ¸ chy chybień  bień  w h i l e ( e ( misse s   <   bos s . getMaxMisses () )   {

i f   == = 0) f    ( boss . rec eiv eDa ta (10 ,   n u l ll   , 1 ) = misses++; } } }

boss . poiso nKids () ;

123

 

Klasa Pracownika

/* *  * @ au au th th or or S on on M at at i & D ox ox us us */ 

p u bl b l i c c l a s s   S i d e k i c k   extends   C l i e n t   { // ob obowia  owia  ¸zkowy domyślny domyślny konst konstrukto ruktor  r  p u b l i c   S i d e k i c k ()   { } // pr praca  aca  p u b l i c v oi o i d   zacznijM urzynic ()   { w h i l e (  tr u ee )  )   { e ( tr try   {

Ran ando dom m rand =   new   Random() ; s  . space = ( Java t h i s . JavaSpac Spacee ) lookup . get Ser vi ce () ; Z a da d a n iiee z aadd =   new   Zadani e ( n u l ll   ,   n u l ll   ,   n u l ll   ,   n u l ll )  ) ; z aadd = ( Z a ddaa n iiee ) s p a c e . ta k e If Ex i s t s (z a d ,   n u l l  l  , d e f a u l t L e a s e ) ; i f    )   { f    (z a d ! =   n u l ll ) f    (z a d . p o i s o n Pi l l ==   tr u e ) i f   e )   {  , d e f a u l t L e a s e ) ; spa ce . wr it e ( zad ,   n u l ll , r e tu r nn ; ; Odd eb eb ra ra łem łem z a d a n i e o i d ”  + zad . System Syste m . out . pr i nt l n ((”” O liczba a p is i s ac a c h ”  + za zadd . napis1 +   ” i ”   + zad . na pis 2 ) ; +   ” i n ap }

}

Odpowi Odp owiedz edz odp =   new   Od Odpo powi wied edz( z( rand . nex tIn t (51 ) , rand . nex tIn t (10 00) ) ; spa ce . wri te (odp ,   n u l ll ,  , d e f a u l t L e a s e ) ; }   catch   ( TransactionEx ception   |   RemoteException   | UnusableEntryException   |   I n t e r r u p t e d E xc xc e p t i o n e x )   { Logger . getLogger ( Sid ek ick .. c  c l a s ss . . getName ( ) ) . l o g ( Le ve l .SE .SEV VERE ,   n u l l  l  , ex ) ; } } }

// ob obowia  owia  ¸zkowy Run 

p ub u b li l i c s t a t i c v oi o i d   ma main( in( Str ing [ ] args )   { Sid ekic k mu murz rzyn yn =   new   Side kick () ; murz mu rzyn yn . zacz nij Mur zyni c () ;

} }

124

 

6. 6.7 7

20 2014 14,, I ter termi min, n, Ad Adam am Du Dusz szeń eńk ko

6.7.1 6.7 .1

Treść reść

Napisać kod programu głównego wykonawc wykonawczego zego do przetwa przetwarzania rzania z wykorzystaniem maszyny JavaSpac JavaSpacee przetwarzającego obiekty zadań zawierające dwie wartości całkowite, oraz numer obiektu i flagę logiczną  FALSE  W momencie pobrania obiektu zadania program wykonawczy początkowo zawierającą wartość ma podmienić w przestrzeni JavaSpace .pobrany obiekt na ten sam, ale z flagą ustawioną na wartość TRUE . Przetwarzanie obiektu realizowane jest w funkcji  int check(int, int)  do której należy przekazać wartości z obiektu zadania. Po skończeniu przetwarzania zadania, przed zwróceniem wyniku, należy usunąć z przestrzeni JavaSpace obiekt przetwarzanego zadania. Wynik funkcji  check  należy umieścić w obiekcie wynikowym którego strukturę proszę zaproponować. Obsłużyć koniec działania programu przez skonsumowanie ”zatrutej pigułki”. 6.7.2 6.7. 2

Propozyc Propozycja ja roz rozwią wiązan zania ia 1

Klasa Odpowiedzi (wynik Zadania):

/* *  * @au @autho thorr So Sonn Ma Mati ti * @wa @waifu ifu Its Itsuka uka Kot Kotori ori */ 

p u bl b l pi cu bclli ac s  sI n  Odpowiedz t e g e r i d ;   implements   Entry   { ik ; p u b l i c   In te g e r w yynn ik p u b l i c   Odpowiedz()   { }

p u b l i c   O ddpp ow ow ie ie ddzz ( In te g e r i d , In te g e r w yynn iikk )   { t h i s . s  . i d = i d ; s  . wynik = wynik ; t h i s . } }

125

 

Klasa Wykonawcy:

/* *  * @au @autho thorr So Sonn Ma Mati ti * @wa @waifu ifu Its Itsuka uka Kot Kotori ori */  p u bl bl i c c l a s s   S i d e k i c k   {

p r o t e c t e d   I n t e g e r d e f a u lltt L e a s e = 1 0000 0 0000 ; p r o t e c t e d   JavaSpace space ; Lookup kup looku p ; p r o t e c t e d   Loo

// dom domyślny yślny konst konstrukto ruktorr obow obowia  ia  ¸zakowy  p u b l i c   S i d e k i c k ()   {

lookup =   new   Loo Lookup( kup( JavaSpace .  c l a s ss )  ) ; }

p u b l i c v oi o i d   zacznijM urzynic ()   { e ( tr w h i l e (  tr u ee )  )   { try   { t h i ss . . space = ( Java JavaSpac Spacee ) lookup . get Ser vi ce () ; Z a da d a n iiee z aadd =   new   Zadani e ( n u l ll   ,   n u l ll   ,   n u l ll   ,   f a l s e  e   ,   n u l ll )  ) ; zad = ( Zadanie ) space . take ( za zadd ,   n u l l , l  , d e f a u l t L e a s e ) ;  )   { i f f    (z a d . p o i s o n Pi l l ==   tr u ee )  , d e f a u l t L e a s e ) ; spa . ;wr it e ( zad ,   n u l ll , r e tucer nn ; }

zad . fl ag =   tr u e ; e ; spa ce . wr it e ( zad ,   n u l l , l  , d e f a u l t L e a s e ) ; i n t   r e s u l t =   t h i s . s  . check ( zad . li czb a1 , zad . lic zb a2 ) ; Odpo powi wied edz( z( zad . id , re su l t ) ; Odpowi Odp owiedz edz odp =   new   Od spa ce . take (zad ,   n u l ll ,  , d e f a u l t L e a s e ) ;   // pełe pełenn wzo wzorze rzecc spa ce . wri te (odp ,   n u l l , l  , d e f a u l t L e a s e ) ; }   catch   ( TransactionEx ception   |   RemoteException   | UnusableEntryException   |   I n t e r r u p t e d E xc xc e p t i o n e x )   { Logger . getLogger ( Sid ek ick .. c  c l a s ss . . getName ( ) ) . l o g ( Le ve l .SE .SEV VERE ,   n u l l  l  , ex ) ; } } }

// dl dlaa prz przykła ykładu  du 

p u bl b l i c i n t   check ( i ( i n t   a ,   i n t   b )   { r e tu r n   a + b ;

} // ob obowia  owia  ¸zkowy Run 

p ub u b li l i c s t a t i c v oi o i d   ma main( in( Str ing [ ] args )   { Sid ekic k mu murz rzyn yn =   new   Side kick () ; murz mu rzyn yn . zacz nij Mur zyni c () ; } }

126

 

6. 6.8 8

20 2015 15,, 0 ter termi min, n, Ad Adam am Du Dusz szeń eńk ko

6.8.1 6.8 .1

Treść reść

Napisać program umieszczający w przestrzeni JavaSpace  1000 obiektów zadań zawierających  dwa  pola typu całkowitego oraz   dwa  pola typu łańcuc łańcuchh znak znakowy owy (zaw (zawartoś artośćć nieis nieistotna, totna, różna oodd NULL), podać  Odpowiedź  atrybutach   id  deklarację dekla rację klasy zadań. .  typu Następnie pnie oodebr debrać ać z przes przestrzen i   20  obiektów typu  Integer    orazzadań  oraz  wynik    Nastę typu  Integer   posiadające  posiadające wtrzeni atrybucie id wartośćklasy  50  (przyjąć, że  o klasa  Odpowiedź   jest już zdefiniow zdefiniowana ana zgodnie z powyższym opisem). 6.8.2 6.8. 2

Rozwią Rozwiązan zanie ie

Działające i przetestowane w warunkach domowych na Jini. Klasa Zadanie

/* *  * @ au au th th or or S on on M at at i & D ox ox us us */  // dek deklar laracj acjaa kl klas asy, y, mu musza  sza  ¸ być wid widocz oczne: ne: // implem implementacj entacjaa inter interfejsu fejsu Entr Entry  y  p u bl b l i c c l a s s   Zadanie   implements   Entry   { // public składo musza  za  ¸ być wie wielki lkich ch ty typów pów opa opakow kowuja  uja  ¸cych  p u bpub l i c liczne   I nzne t e g e skła r l i cdowe, z bwe, a ; mus

p u b l i c   S t r i n g n a p i ss11 ; p u b l i c   S t r i n g n a p i ss22 ; p u b l i c   B oooo le l e aann p o i s o n P i l l ; konstrukto ruktorr domyślny, domyślny, wymag wymagany  any  // konst p u b l i c   Zadanie ()   {

Ra Rand ndom om ran d =   new   Random() ; t h i s . randd . nextI nt () ; s  . li cz ba = ran t h i ss . . napis1 = Int ege r . toS tri ng ( rand rand . nextI nt () ) ; t h i s . rand . nextI nt () ) ; s  . napis2 = Int ege r . toS tri ng ( rand s  . p o i s o n P i l l =   f a l s e ; t h i s . e  ; } // kon konstr strukt uktor or z par parame ametra trami mi

p u b l i c   Z aadd aann i e ( I n t e g e r l i c z b a , S t r i n g n a ppii s 1 , S t r i n g n a ppii s 2 , B oooo llee aann poisonPill )   { s  . l i c z b a = l i c z b a ; tt hh ii s . s . s  . n a p i s 1 = n a p i s 1 ; t h i ss . . n a p i s 2 = n a p i s 2 ; t h i ss   . p o i s o n P i l l = p o i s o n P i l l ; } }

127

 

Klasa nadzorcy

/* *  * @ au au th th or or S on on M at at i & D ox ox us us */ 

p u bl b l i c c l a s s   Boss   extends   C l i e n t   { // lic liczba zba za zadań dań do wyk wykona onania  nia 

s t a t i c f i n a l i nt n t   TAS TASK NUMBER = 1 0 0 0 ;

// ob obowia  owia  ¸zkowy dom domyślny yślny konst konstrukto ruktor  r  p u b l i c   Boss ()   { } /* *  * Wyg Wygene enerow rowani aniee zad zadani aniaa z los losowy owymi mi war wartości tościam amii * @pa @param ram co count unt il ilość ość zad zadanió aniów  w  */ 

p u b l i c   Zadanie generateTask ( i n t   i d ,   boolean   p o i s o n P i l l )   { Ra Rand ndom om ran d =   new   Random() ; Zadaniee ( id , In teg er . toS tri ng ( ran randd . nextI nt (1000) ) , return new   Zadani In te g e r . to S t r i n g (r aann d . n e x tIn t (1 0 0 0 ) ) , p o i s o n Pi l l ) ; } /* * 

Utworzenie Utwor zenie zadaniów  ** @pa @param ram count co unt ilość il ość zad zadanió aniów  w  */ 

p u b l i c v oi o i d   createTasksInJavaSp ace ( i n t   c o u n t)   { try   { JavaSpac Spacee ) lookup . get Se rvi ce () ; t h i ss . . space = ( Java f o r   ( i n t   i = 0; 0 ; i   <  count ; ++i )   { Z a da d a n iiee z aadd =   t h i ss . . gener ate Task ( i ,   f a l s e ) e ) ; spa ce . wr it e ( zad ,   n u l l , l  , d e f a u l t L e a s e ) ; ”Wtgene enerow rowaa łe łem m zad ”   + i +   ” o s t r in i n g a ch ch System Syste m . out . pr in tl n ((”Wtg ”  + za zadd . napis1 +   ” i ”   + zad . nap is2 ) ; } }

catch catch (RemoteException  (RemoteException   |   T r a n s a c ti o nEx n Ex c e p ti o n e x )   { System Syste m . out . pr in tl n (”Dupa ( ”Dupa XD” ) ; } }

128

 

b l i c c l a s s   Boss   extends   C l i e n t   { p u bl /* *  * Uzysk Uzyskanie anie odpow odpowiedzi iedzi * @pa @param ram id odp odpowi owiedz edzi, i, kt ktora ora na nass int intere eresuj sujee * @pa @param ram cos costam tam int intere eresuja  suja  ¸cy na nass wyn wynik  ik  * @pa @param ram cou count nt lic liczba zba odp odpowi owiedz edzii do odb odbior ioru  u  */ 

p u b l i c v oi o i d   r e c e iivv e D a t a ( I n t e g e r i d , I n t e g e r c ooss ttaa m , I n t e g e r c oouu nntt )   { try   { JavaSpac Spacee ) lookup . get Se rvi ce () ; t h i ss . . space = ( Java Odpowi Odp owiedz edz wzor =   new   Od Odpo powi wied edz( z( id , costam costam ) ; f o r   ( i n t   i = 0; 0 ; i   <   count ; i++ i++))   { odczyt blo blokuja  kuja  ¸cy, ¸c y, zat zatrzy rzymuj mujee pr przepł zepływ yw do dopóki póki od odpp sie ¸ nie // odczyt pojawi

Odpowi Odp owiedz edz wynik = ( Odpo Odpowie wiedz) dz) spa ce . tak e ( wzo wzorr ,   n u l l  l , d e f a u l tLe a s e ) ; ”Odpow owie iedz dz : id = ”  + wyn wynik ik . get Id () +   ” , System Syste m . out . pr in tl n ((”Odp wynik = ”   + wynik . getWynik ( ) ) ; } }   catch   ( UnusableEntryExcepti on   |   TransactionException   |

In te r r u p. get te dLog Ex cger e p ti(Boss o n   | .. c   cRemoteExcep Remote Exception tion Logger l a s ss . . getName ( ) ) .ex) lo g  ({L ev el . SEVERE,   n u l ll   , ex) ; } } /* *  * ZAT ZATRUJ RUJ DZI DZIECI ECIACZ ACZKI KI XD  */  p u b l i c v oi o i d   poisonKids ()   { // utwor utworzenie zenie zatru zatrutej tej pigu pigulki lki

Z ad a d an a n iiee p o i s o n P i l l =   new   Zadani e ( n u l ll   ,   n u l ll   ,   n u l ll   ,   tr u ee )  ) ; try   { space . writ e ( poi son Pi ll ,   n u l ll ,  , d e f a u l t L e a s e ) ; RemoteException ion ex)   { }   catch   ( TransactionExc eption   |   RemoteExcept Logger . get Log ger (Boss .. c  c l a s ss . . getName ( ) ) . lo g ( L ev el . SEVERE,   n u l ll   , ex) ; } } /* *  * Ob Obowia  owia  ¸zkowy ¸zko wy Ru Runn dl dlaa nad nadzor zorcy  cy  */ 

p ub u b li l i c s t a t i c v oi o i d   ma main( in( Str ing [ ] args )   { B o s s b o s s =   new   Boss ( ) ; bo ss . cr ea te Ta sk sI nJ av aS pa ce ((T TASK NUMBER) ; boss . rece ive Dat a (50 ,   n u l ll   , 2 0 ) ; boss . poiso nKids () ; } }

129

 

Klasa Pracownika

/* *  * @ au au th th or or S on on M at at i & D ox ox us us */ 

p u bl b l i c c l a s s   S i d e k i c k   extends   C l i e n t   { // ob obowia  owia  ¸zkowy domyślny domyślny konst konstrukto ruktor  r  p u b l i c   S i d e k i c k ()   { } // rozp rozpocze ocze ¸ cie prac ¸cie pracy  y  p u b l i c v oi o i d   zacznijM urzynic ()   { w h i l e (  tr u ee )  )   { e ( tr try   {

Ran ando dom m rand =   new   Random() ; s  . space = ( Java t h i s . JavaSpac Spacee ) lookup . get Ser vi ce () ; Z a da d a n iiee z aadd =   new   Zadani e ( n u l ll   ,   n u l ll   ,   n u l ll   ,   n u l ll )  ) ; z aadd = ( Z a ddaa n iiee ) s p a c e . ta k e If Ex i s t s (z a d ,   n u l l  l  , d e f a u l t L e a s e ) ; i f    )   { f    (z a d ! =   n u l ll ) f    (z a d . p o i s o n Pi l l ==   tr u e ) i f   e )   {  , d e f a u l t L e a s e ) ; spa ce . wr it e ( zad ,   n u l ll , r e tu r nn ; ; Odd eb eb ra ra łem łem z a d a n i e o i d ”  + zad . System Syste m . out . pr i nt l n ((”” O liczba a p is i s ac a c h ”  + za zadd . napis1 +   ” i ”   + zad . na pis 2 ) ; +   ” i n ap }

}

Odpowi Odp owiedz edz odp =   new   Od Odpo powi wied edz( z( rand . nex tIn t (51 ) , rand . nex tIn t (10 00) ) ; spa ce . wri te (odp ,   n u l ll ,  , d e f a u l t L e a s e ) ; }   catch   ( TransactionEx ception   |   RemoteException   | UnusableEntryException   |   I n t e r r u p t e d E xc xc e p t i o n e x )   { Logger . getLogger ( Sid ek ick .. c  c l a s ss . . getName ( ) ) . l o g ( Le ve l .SE .SEV VERE ,   n u l l  l  , ex ) ; } } }

// ob obowia  owia  ¸zkowy punkt wejści wejścia  a 

p ub u b li l i c s t a t i c v oi o i d   ma main( in( Str ing [ ] args )   { Sid ekic k mu murz rzyn yn =   new   Side kick () ; murz mu rzyn yn . zacz nij Mur zyni c () ;

} }

130

 

7

CUDA

7. 7.1 1

20 2013 13,, 1 te term rmin in,, Ha Hafe fed d Zi Zigh ghdi di

7.1.1 7.1 .1

Treść reść

W oparciu o środowisko CUDA napisać równoległy program zapewniający wyszukiwanie minimum i maksimum elementów macierzy A i B. Można zakładać, że macierze wejściowe są kwadratowe. Program powinien zwracać 2 macierze zawierające min oraz max elementów macierzy wejściowych: minMatrix[i trix[i,, j] = min(A[i, j], B[i, j]) •   minMa maxMatrix[i trix[i,, j] = max(A[i, j], B[i, j]) •   maxMa należy zaproponować kod kernela oraz jego wywołanie z kodem odpowiedzialnym za przydział pamięci z podziałem na bloki w dwóch wymiarach. 7.1.2 7.1. 2

Rozwią Rozwiązan zanie ie

# i n c l u d e   < s t d l i b . h> # i n c l u d e   < s t d i o . h> # i n c l u d e   # d e f i n e   MATRIX MATRIX SIZ SIZE E 10 g l o b a l   void   tr a n s p o s e K e r n e l ( i n t   ∗   matrixA ,   i n t   ∗   matrixB ,   i n t   ∗ matrixMin ,   i n t   ∗   matrixMax) {

block ckDi Dim m . x + threadIdx . x ; i n t   i = b l o c kkII d x . x   ∗   blo i n t   j = b l o c kkII d x . y   ∗   blo block ckDi Dim m . y + threadIdx . y ;  MATRIX IX SSIZE IZE && j   <  MATRIX SIZE) i f f    ( i   <  MATR {

i n t   i n d e x = i   ∗   MA MATR TRIX IX SIZE SIZE + j ; matrixMin [ ind ex ] = matri matrixA xA [ ind ex ]   >   matrixB [ ind ex ] ? matrixB [ ind ex ] : matrix matrixA A [ ind ex ] ; matrixMax matrix Max [ in de x ] = matrixA [ in de x ]   <   matrixB [ ind ex ] ? matrixB [ ind ex ] : matrix matrixA A [ ind ex ] ; } }

cud aErr or t cal calcul culateM ateMinMa inMaxWi xWithCu thCuda( da( i i n t   ∗∗   matrixA ,   i n t   ∗∗   matrixB ,   i n t   ∗∗ matrixMin ,   i n t   ∗∗   matrixMax) {

// zdefin zdefiniow iowani aniee ma maci cierz erzy, y, któr któraa je jest st w pam pamie ie¸ci ¸ ci kart karty  y  i n t   ∗   dev a ; i n t   ∗   dev b ; i n t   ∗   dev m max ax , dev min ; s i z e t si ze = M MA ATRIX SIZE   ∗   MATRIX SIZE SIZE;; // cu cudne dne dyn dynksy  ksy 

c u d a Er r o r t c u d a SSta ta tu s ; cudaStatus = cudaSetDevice (0) ; alokac kacja ja pa pamie mie ¸ ci po 10 ¸ci 1000 elemen elementów  tów  // alo cudaStatus = cudaMa cudaMalloc lloc (( (( void  void ∗ ∗ )&d e v a , s i z e   ∗   s i z e o f (  ( i    i n t ) ) ; ev b , s i z e   ∗   s i z e o f ( cudaStatus = cudaMa cudaMalloc lloc (( (( void  void ∗ ∗ )&d ev  ( i    i n t ) ) ; ∗ &de cudaStatus cudaMalloc lloc (( void  void  ( i     i i nn tt ) dev mi minnx ,, si cudaStatus = = cudaMa cudaMa cudaMalloc lloc (( (( (( void )&de dev vv ma max si ze ze    ∗∗    ss ii zz ee oo ff (  void ∗  (  ( i  ) )) ;;  ∗ ∗ ))&

131

 

Spłaszczamy amy macierz macierzee do jednego jednego wymiaru  wymiaru  {   // Spłaszcz / / K op op iu iu je je my m y p o w ie ie rs rs zu zu , 1 0 x 1 0  

f o r   ( i n t   i = 0; 0 ; i   <   MAT MATRI RIX X SIZE SIZE;; i ++ ++)) {

cu cuda daMe Memc mcpy( py( ( dev a + i   ∗   MA MATR TRIX IX SIZE) SIZE) , ma matr trix ixA A [ i ] , MA MATR TRIX IX SI SIZE ZE   ∗ s i z e o f (  ( i    i n t ) , cudaMemcpyHo cudaMemcpyHostToDe stToDevice) vice) ; cudaMemcpy(( dev b + i   ∗   MA MATR TRIX IX SIZE) SIZE) , ma matr tr ix ixB B [ i ] , MA MATR TRIX IX SI SIZE ZE   ∗  ( i cudaMemcpyHostToDe stToDevice) vice) ; s i z e o f (    i n t ) , cudaMemcpyHo } / / b lo lo cz cz ek ek z w ¸tka ¸tkami a   mi 3x3 

di m3 b l o c k s i z e ( 3 , 3 ) ; // lic liczba zba pot potrze rzebny bnych ch bl bloków oków,, ta takk żeb żebyy si size ze = lic liczba zba wa  ¸tków 

i n t   blo ck cou nt = MA MATRIX SIZE / bl oc k si ze . x + (M (MA ATRIX SIZE % block size .x = == = 0 ? 0 : 1); minMaxKernel   >

(dev a , dev b , dev m min in ,

>

// prz przywróc ywróceni eniee dwó dwóch ch wym wymiaró iaróww i prz przepi episan sanie ie wyn wyników  ików 

f o r   ( i n t   i = 0; 0 ; i   <   MAT MATRI RIX X SIZE SIZE;; i ++ ++)) {

cu cuda daMe Memc [ i ] ,mcpyDeviceT ( dev min +oHost) i   ∗   MAT MATRIX SIZE E ) , MAT MATRIX RIX SSIZE IZE   ∗ s imcpy( z epy( o f (   matrixMin  ( i  i n t ) , cudaMemcpyDe cudaMe viceToHost) ; RIX SIZ cuda cu daMe Memc mcpy( py( matri matrixMax xMax [ i ] , ( dev max + i   ∗   MAT MATRIX RIX SIZ SIZE E ) , MAT MATRIX RIX SSIZE IZE   ∗ s i z e o f (    i n t ) , cudaMemcpyDe  ( i cudaMemcpyDeviceT viceToHost) oHost) ; }

r e tu r n   1 ; }

i n t   main() {

i n t   ∗∗   matrixA ,   ∗∗   matrixB ; i n t   ∗∗   matrixMin ,   ∗∗   matrixMax ; matrixA = ( i ( i n t ∗ ∗ ) mallo c (( s  s i z e o f (  ( i    i n t ∗ ) ∗  MATRIX SIZE) ; matrixB = ( i ( i n t ∗ ∗ ) mallo c (( s  s i z e o f (  ( i    i n t ∗ ) ∗  MATRIX SIZE) ; matrixMin = ( i ( i n t ∗ ∗ ) mallo c ( s i z e o f (    i n t ∗ ) ∗  MATRIX SIZE) ;  ( i matrixMax = ( i ( i n t ∗ ∗ ) mallo c ( s i z e o f (    i n t ∗ ) ∗  MATRIX SIZE) ;  ( i f o r   ( i n t   i = 0; 0 ; i   <   MAT MATRI RIX X SIZE SIZE;; i ++ ++)) {

matrixA [ i ] = matrixA matrixB [ i ] = matrixMin [ i ] matrixMax matrix Max [ i ]

( i n t ∗ ) mallo c ( s i z e o f (    i n t ) ∗  MATRIX SIZE) ;  ( i  ( i ( i n t ∗ ) mallo c ( s i z e o f (    i n t ) ∗  MATRIX SIZE) ;  s i z e o f (  ( i    i n t ) ∗  MATRIX SIZE) ; = ( i n t ∗ ) mallo c (( s = ( i n t ∗ ) mallo c (( s  s i z e o f (  ( i    i n t ) ∗  MATRIX SIZE) ;

}

f o r   ( i n t   i = 0; 0 ; i   <   MAT MATRI RIX X SIZE SIZE;; i ++ ++)) {

f o r   ( i n t   j = 0; 0 ; j   <   MAT MATRI RIX X SIZE SIZE;; j ++ ++)) {

matrixA matrix A [ i ] [ j ] = rand () % 20; matrixB matr ixB [ i ] [ j ] = rand () % 20; matrixMin [ i ] = mat matrix rixMax Max [ i ] = 0; } }cud aEr ror t cudaSta tus = cal calcul culateM ateMinMa inMaxWit xWithCud hCudaa ( ma matri trixA xA , mat matrix rixB B,

matrixMin matrix Min , mat matrix rixMax) Max) ;

r e tu r n   0 ; }

132

 

7. 7.2 2

20 2015 15,, 0 te term rmin in,, Ha Hafe fed d Zi Zigh ghdi di

7.2.1 7.2 .1

Treść reść

W oparciu o środowisko CUDA napisać równoległy program zapewniający transpozycję macierzy kwadratowej (ao ut[i, j ] =   ai n[ j,  j, i]). Należy zaproponować kod kernela oraz jego wywołanie z kodem odpowiedzialnym za przydział pamięci z podziałem na bloki w dwóch wymiarach. 7.2.2 7.2. 2

Rozwią Rozwiązan zanie ie

# i n c l u d e   < s t d i o . h> # i n c l u d e   < s t d l i b . h> n s t u ns c o ns n s ig i g ne n e d i n t   MA MATR TRIX IX SIZE SIZE = 5 ; cudaErr or t tra transpo nsposeW seWithC ithCuda( uda( i i n t   ∗∗   matrix ,   i n t   ∗∗   matrixOut) {

int   ∗   dev a , dev b ; s i z e t si ze = M MA ATRIX SIZE   ∗   MATRIX SIZE SIZE;; / / b lo lo cz cz ek ek z w ¸tka ¸tkami a   mi 2x 2x2, 2, zgo zgodni dniee z tr treści eścia  ¸ zada a  zadania  nia 

di m3 b l o c k s i z e ( 2 , 2 ) ; liczba zba pot potrze rzebny bnych ch bl bloków oków,, ta takk żeb żebyy si size ze = lic liczba zba wa  ¸tków  // lic

i n t   b l count ock co= u nM t ;ATRIX SIZE / bl oc k si ze . x + (M block MA (MA ATRIX SIZE % bl oc k si ze . x == 0 ? 0 : 1 ) ; // rozmia rozmiarr gri gridu du w blo blokac kach  h  // blo blocze czekk je jest st nas nasza  za  ¸ podst podstawowa  awowa  ¸ jedn jednostka  ostka  ¸ ( m a 4 w a¸tki)   // gr grid id ma mieć mieć tyl tylee blo bloczkó czkóww il ilee pot potrze rzebuj bujemy  emy 

d i m3 m3 g r i d s i z e ( b l o c k c o u n t , b l o c k c o u n t ) ; // ja jakieś kieś dynksy dynksy do cud cudy  y 

c u d a Er r o r t c u d a SSta ta tu s ; cudaStatus = cudaSetDevice (0) ; //al //allok lokacj acjaa tab tablic lic w pa pamie mie ¸ ci karty ¸ci karty grafi graficznej  cznej  cudaStatus = cudaMa cudaMalloc lloc (( (( void  void ∗ ∗ ) &d ev  ( i    i n t ) ) ; ev a , s i z e   ∗   s i z e o f ( & d eevv b , s i z e   ∗   s i z e o f ( cudaStatus = cudaMa cudaMalloc lloc (( (( void  void ∗ ∗ ) &d  ( i    i n t ) ) ; // Spła Spłaszc szczam zamyy mac macier ierze ze do jed jedneg negoo wym wymiar iaru  u  // prz przeko ekopio piowan wanie ie mat matrix rixaa do dev dev_a  _a 

f o r (  ( i i n t   i = 0 ; i   <   MAT MATRI RIX X SIZE SIZE;; i ++ ++)) {

cudaStatus = cudaMemcpy(( dev a + i   ∗   MA MATR TRIX IX SI SIZE) ZE) , ma tr ix [ i ] , MATRIX SIZE   ∗   s i z e o f (    i n t ) , cudaMemcpyHo  ( i cudaMemcpyHostToDe stToDevice) vice) ;

}

tr a n s p o s e K e r n e l >(d e v a , d e v b ) ; on we we rs rs ja j a z w ek e k to to ra ra 1 D n a m ac a c ie ie rz rz 2 D   / / K on // przeko przekopiowa piowanie nie dev_ dev_bb do matri matrixOut xOut f o r (  ( i i n t   i = 0 ; i   <   MAT MATRI RIX X SIZE SIZE;; i ++ ++))   {

cudaSta tus = cuda daMe Mem mcpy(matrixO py(matrixOut ut [ i ] , ( dev b + i   ∗  MATRIX SIZE) , MATRIX SIZE   ∗   s i z e o f (    i n t ) , cudaMemcpyDe  ( i cudaMemcpyDeviceT viceToHost) oHost) ; }

r e tu r n   1 ; }

133

 

g l o b a l   void   tr a n s p o s e K e r n e l ( i n t   ∗   a ,   i n t   ∗   o u t) {

i n t   i = b l o c kkII d x . x   ∗   blo block ckDi Dim m . x + threadIdx . x ; i n t   j = b l o c kkII d x . y   ∗   blo block ckDi Dim m . y + threadIdx . y ; i f f    ( i   <  MATR  MATRIX IX SSIZE IZE && j   <  MATRIX SIZE) {

out [ i   ∗   MATR MATRIX IX SIZE SIZE + j ] = a [ j   ∗   MA MATR TRIX IX SI SIZE ZE + i ] ; } }

i n t   main() {

i n t   ∗∗   matrix ; i n t   ∗∗   matrixOut ; ( s i z e o f ( m a tr i x = ( i ( i n t ∗ ∗ ) m a l l o c ( s  ( i    i n t ∗ )   ∗  MATRIX SIZE) ; matrixOut = ( i ( i n t ∗ ∗ ) m a l l o c ( s ( s i z e o f (  ( i    i n t ∗ )   ∗  MATRIX SIZE) ; f o r   ( i n t   i = 0; 0 ; i   <   MAT MATRI RIX X SIZE SIZE;; i ++ ++)) {

 s i z e o f (  ( i    i n t )   ∗  MATRIX SIZE) ; matrix [ i ] = ( i n t ∗ ) m a l l o c (( s matrixOut [ i ] = ( i n t ∗ ) m a l l o c (( s  s i z e o f (  ( i    i n t )   ∗  MATRIX SIZE) ; f o r   ( i n t   i = 0; 0 ; i   <   MAT MATRI RIX X SIZE SIZE;; i ++ ++))

}

{

f o r   ( i n t   j = 0; 0 ; j   <   MAT MATRI RIX X SIZE SIZE;; j ++ ++)) {

matrix [ i ] [ j ] = rand () % 20; ”%dd \ t ” , matrix [ i ] [ j ]) ; p r i n t f ( ”% }

p r i n t f ( ” \ n” ) ; } // Ad Addd vec vector torss in par parall allel. el.

cudaEr ror t cudaStatus = tra transp nspose oseWith WithCud Cudaa ( matr matrix ix , mat matrix rixOut) Out) ; r e tu r n   0 ; }

134

 

8

MOSIX

8.1

201 2013, 3, 1 ter termin min,, Da Danie niell Ko Kostr strzew zewa a

8.1.1 8.1 .1

Treść reść

Wykorzystując   n   węzłów klastra napisać funkcję, która obliczy wartość   F(x, y). Nagłówek funkcji ma wyglądać następująco: double   fun ( double   x ,   double   y ,   i n t   k ) gdzie wartością zwracaną jest obliczona wartość funkcji; k - liczba elementów iloczynu; x, y - argumenty funkcji. Założyć, że   k  jest   jest podzielne przez  n  bez reszty. 8.1.2 8.1. 2

Rozwią Rozwiązan zanie ie

# i n c l u d e   < s t d i o . h> # i n c l u d e   < s t d l i b . h> # i n c l u d e   double   c a l c u l a t e Pr o d u c t ( double   x ,   double   y ,   double   a )   { r e tu r n   a   ∗   sqr t (x   ∗   y ) / ( 2   ∗   p ow ow (x , 3 ) + 5   ∗   y ) ; }

i n t   main( i main( i n t   argc ,   char   ∗   ar gv [ ] )   { i n t   n = a to i ( a r ggvv [ 1 ] ) ;   // lic liczba zba we ¸ złów klas ¸złów klastra  tra  i n t   k = a to i ( a r ggvv [ 2 ] ) ;   // licz liczba ba elem elementów entów ilocz iloczynu  ynu  double   x = a to f ( a r ggvv [ 3 ] ) ;   // pierw pierwszy szy argu argument ment double   y = a to f ( a r ggvv [ 4 ] ) ;   // drug drugii argume argument nt int   final product = 1;   // iloc iloczyn zyn wynik wynikowy  owy  int   process number = k / n; i n t   respo nse strea m [ 2 ] ;   // str strumi umień eń dl dlaa dan danych  ych  double   p a r t r e s u l t = 1 ;   // jeb jebnie nie ¸ cie poto ¸cie potoków  ków  pipe ( respo nse strea m ) ; // utwor utworzenie zenie proc procesów esów potom potomnych  nych 

int   i , j ; f o r   ( i = 0 ; i   <   process number ; i++ i++) {

f    ( fo rk () == 0) i f   {

f o r   ( j = i   ∗   p r o c es es s n u m b e r ; j   <   ( i + 1 )   ∗   proce ss numb er ; j++ j++) {

p a r t r e s u l t = p a r t r e s u l t   ∗   c a l c u l a t e Pr o d u c t (x , y , j ) ; w r i t e ( r e s p o n ssee s t r e a m [ 1 ] , & p a r t r e s u l t ,   s i z e o f ( double  (   double )  ) ) ; }

ex it (0) ; } } odczyt zytani aniee dan danych ych cze ¸ ściowych  ¸ściowych  // odc

f o r   ( i = 0 ; i   <   process number ; i++ i++) {

r e a d ( r e s p o n s e s tr e a m [ 0 ] , & p a r t r e s u l t ,   s i z e o f (  ( double    double )  ) ) ; final product = final product   ∗   part result ; }

p r i n t f ( ”Twó j sz cz e¸ ś l i w y i l o c z y n t o %g %g ”  ” , f i n a l p r o d u c t ) ; r e tu r n   0 ;

}

135

 

8.2

201 2014, 4, 1 ter termin min,, Da Danie niell Ko Kostr strzew zewa a

8.2.1 8.2 .1

Treść reść

Mają do dyspozycji   n  węzłów klastra napisać funkcję, która obliczy całkę metodą trapezów z funkcji zapisanej poniżej. Nagłówek funkcji wygląda następująco: double   cal ka ( double   x l ,   double   xp ,   double   k r o k ) gdzie wartością zwracaną jest obliczona wartość całki; xl - początek przedziału całkowania, xp - koniec przedziału całkowania, krok - wartość kroku całkowania. y  =

8.2.2 8.2. 2

15x3 − 7x2 + sin(2x4 ) − 8

Rozwią Rozwiązan zanie ie

# i n c l u d e   < s t d i o . h> # i n c l u d e   < s t d l i b . h> #define   N 4 double   fun c ( double   x ) {

pow(x , 3)   −   7 ∗ x ∗ x + s i n ( 2   ∗   pow(x , 4) )   −   8 ; r e tu r n   15   ∗   pow(x } // x1: wsp wspolr olrzed zedna na x poc poczat zatku ku prz przedz edzial ialuu cal calkow kowani ania  a  // xk: wspolr wspolrzed zedna na x ko konca nca prz przedz edzial ialuu cal calkow kowani ania  a  / / k ro ro k : w yyss ok ok os os c t ra ra pe pe zu z u ( x2 x2 - x 1) 1) double   l i c z C a l k e ( double   x1 ,   double   xk ,   double   k r o k ) {

double   x2 = x1 + krok ;

 

// Wsp Wspolr olrzed zedna na x dru drugie giej  j 

podstawy podst awy trap trapezu  ezu 

double   a , b ; double   wynik = 0;

 

/ / W ar ar to to sc s c i f un un kc kc ji ji w x1 , x 2  

w h i l e   ( x2   <   xk ) {

a = func (x1) ; b = func (x2) ; wynik += (a + b)   ∗   k r o k / 2 ; x1 += krok ; x2 += krok ; }

r e tu r n   wynik ; }

double   cal ka ( double   x l ,   double   xp ,   double   k r o k ) {

int   i , forkResult ; // War Wartos toscc cal calki ki ozn oznacz aczone onejj w ca calym lym prz przedz edzial ialee / prz przedz edzial ialee dzi dzieck ecka  a 

double   m aaii nnR R eess ul ul t = 0 , c h i l d R e s u l t = 0 ; // Sze Szerok rokość ość prz przedz edziału, iału, w ja jakim kim dzi dzieck eckoo li liczy czy cał całke ke ¸

double   d e l t a = ( x p   −   x l ) / N ; / / P ot ot ok ok d o z ap ap is is u i o dc dc zy zy tu tu  

i n t   pot ok [ 2 ;] ; pipe (potok)

136

 

{

// Kinde Kindermache rmachen  n 

f o r   ( i = 0 ; i   <   N; i++ i++) {

forkResult = fork () ; f    ( fork Res ult == 0) i f   {

c h i l d R e s u l t = l i c z C a l k e ( x l , x l + d e l t a , k ro ro k ) ; w r i te ( p o ttoo k [ 1 ] , & c h i l d R e s u l t ,   s i z e o f (  chil dRe sul t ) ) ; ex it (0) ; }

e l s e i f      ( f o r k R e s u l t   <   0 ) {

p r i n t f ( ” W y st st a pi pi l b l ad a d p o dc d c za z a s t w o r ze ze n i a d z i e c k a ” ) ; r e tu r n   −1; }

xl += del ta ; } // Odc Odczyt zytani aniee i zsu zsumow mowani aniee wy wynikó nikóww prz przez ez rod rodzic zica  a 

f o r   ( i = 0 ; i   <   N; i++ i++) {

read ( potok [0 ] , &childRe sult ,   s i z e o f (  chil dRe sul t ) ) ; mainResult += childResult ;

}

p r i n t f ( ” \ n Ca Ca lk lk a o b l i c z o n a m eto etodd a tr ap a p e zo zo w j e s t r ow ow na na : %f  \ n ” , mainRe mainResult sult ); r e tu r n   mainResult ; }

137

 

8.3

201 2015, 5, 0 ter termin min,, Da Danie niell Ko Kostr strzew zewa a

8.3.1 8.3 .1

Treść reść

Napisać program, który utworz utworzyy n  procesów  pro cesów potomnyc potomnych. h. Proces zarządzaj zarządzający ący ma wysyłać zestaw liczb do procesów potomnych (założyć, że liczba przesyłanych danych wynosi  k ). Procesy potomne mają w pętli wykonywać następujące czynności: czekać na liczbę wysłaną przez proces zarządzający, na podstawie odebranej liczby obliczyć pole koła (odebrana liczba jest promieniem koła), odesłać wynik do procesu zarządzającego. Proces zarządzający po wysłaniu wszystkich liczb przechodzi w stan odbierania danych i sumuje pola kół. Końcowa wartość ma zostać wyświetlona na ekranie. 8.3.2 8.3. 2

Rozwią Rozwiązan zanie ie

# i n c l u d e   < s t d i o . h> # i n c l u d e   < s t d l i b . h> # i n c l u d e   #define   PI 3.14159 f l o a t   c a l c u l a t e c i r c l e a r e a ( i n t   radi us ) {

pow(( f l o a t  t ) r a d iiuu s , 2 ) ; r e tu r n   PI   ∗   pow(( f }

i n t   main( i main( i n t   argc ,   char ∗   ar gv [ ] ) {

i n t   n = a to i ( a r ggvv [ 1 ] ) ; i n t   k = a to i ( a r ggvv [ 2 ] ) ; //promi omien en -1 ozn oznacz aczaa ze je jest st to tru trujac jacaa pig pigulk ulkaa zab zabija ijajac jacaa pro proces ces //pr potomny 

i n t   p o i s o n =   − 1; //al //allok lokacj acjaa tablic tablicyy k lic liczb zb (pro (promie mieni) ni) ( i n t ∗ ) m a l l o c ( s i z e o f (    i n t )   ∗   k ) ; i n t   ∗   t a b = ( i  ( i

int   i ; f o r   ( i = 0 ; i   <   k ; i ++ ++) {

tab [ i ] = ran randd () % 20; }

int   process number = n / k;

// 2 str strumi umieni enie, e, je jeden den do wy wysyłan syłania ia da dany nych, ch, dr drugi ugi do odb odbior ioruu odp odpowi owiedz edzii

i n t   d a ta s tr e a m [ 2 ] , r e s p o n s e s tr e a m [ 2 ] ; wyniki ki // wyni

i n t   part ; i n t   sum = 0; // jebnie jebnie ¸ cie poto ¸cie potoków  ków  // odp odpowi owiedz edzii z pro procesó cesóww pot potomn omnych  ych 

pipe ( respo nse strea m ) ; ro mi mi en en ie ie k ó ł / / i n - p ro / / o uutt - o tr tr zy z y ma ma ne n e w yn yn ik ik i - p ol ol a k ół ół

pipe ( data strea m ) ;

138

 

// utwor utworzenie zenie proc procesów esów potom potomnych  nych 

f or   ( i = 0 ; i   // Mai Main  n 

i n t   main( i main( i n t   argc ,   char   ∗ ar gv [ ] ) {

double   wynik = 0; double   x ; int   k ; i f f    ( arg c == 3)

 

// Ostat Ostateczny eczny wyni wynikk progr programu  amu 

{

k = a t o i ( a rrgg v [ 1 ] ) ; x = a t o f ( a rrgg v [ 2 ] ) ; wyni wy nikk = liczWielo mian (k , x) ; p r i n t f ( ”Wie ”Wielo lomia miann je st ro rown wnyy : %f \ n” n” ,  , wy wyni nik) k) ; }

else p r i n t f ( ”Po ”Poda dano no niepr awid lowe parametry ! \ n” ) ; r e tu r n   0 ; } // Met Metoda oda do lic liczen zenia ia war wartos tosci ci wie wielom lomian ianu  u 

double   l i c z 2 ( i n t   k ,   double   x ) {

double   r e s u l t , Pk1 , Pk2 ; i f f    (k == 0) r e tu r n   1 ; f    (k == 1) i f   r e tu r n   x ; Pk 1 = l i c z 2 ( k   −   1 , 0 . 3 7 5   ∗   x ) ; Pk 2 = l i c z 2 ( k   −   2 , x ∗ x / 2 . 0 ) ; r e s u l t = 1155   ∗   Pk1   −   Pk2; r e tu r n   r e s u l t ; }

140

 

// Oblic Obliczenie zenie całośc całościi wielo wielomianu  mianu 

double   liczWiel omian ( i n t   k ,   double   x ) {

double   m aaii nnR R eess ul ul t = 0 , c h i l d R e s u l t 1 , c h i l d R e s u l t 2 ;   pot ok 0) [2]; i nf f  t  (k == r e tu r n   1 ; i f   f    (k == 1) r e tu r n   x ; pipe (potok) ; // Pie Pierws rwsze ze dzi dzieck eckoo - wie wielom lomian ian k-1 sto stopni pnia  a 

i f   f    ( f o r k ( ) == 0 ) {

childResult1 = 15   ∗   lic z2 (k  −  1 , 0.375   ∗   x) ; w r i te ( p o ttoo k [ 1 ] , & c h i l d R e s u l t 1 ,   s i z e o f (  c h i l d R e s u l t1 ) ) ; ex it (0) ; } // Dru Drugie gie dzi dzieck eckoo - wie wielom lomian ian k-2 sto stopni pnia  a 

i f   f    ( f o r k ( ) == 0 ) {  − ∗ c hr ii lted R eps uo tto l ot 2k [ = w ( es 1 ] ,l i c&zc2h (i lkd R e  s2u, l tx2 x,   /s i z2e. o0 )f ( ; c h i l d R e s u l t2 ) ) ; ex it (0) ;

}

r e a d ( p ooto to k [ 0 ] , & c h i l d R e s u l t1 ,   s i z e o f (  c h i l d R e s u l t1 ) ) ; r e a d ( p ooto to k [ 0 ] , & c h i l d R e s u l t2 ,   s i z e o f (  c h i l d R e s u l t2 ) ) ; m a i n R e s u l t = c h i l d R e s u l t1   −   c h i l d R e s u l t 2 ; r e tu r n   mainResult ; }

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF