Lab_06:
Ćwiczenie:
-
Proszę uruchomić pierwszy program
$lab_06_a.exe
-
Proszę opisać kolejne cykle rozkazowe, jakie wykonuje procesor.
-
Należy zamieścić wynik działania programu w sprawozdaniu.
|
|
- Proszę uruchomić drugi program
$lab_06_b.exe
- Należy zamieścić wynik działania programu w sprawozdaniu.
|
|
Lab_07
- Bez włączonej predykcji
Proszę uruchomić każdy z programów.
|
|
Na przykład:
$ lab_07.exe 4 false 1 -> Uruchomienie programu testowego nr 1, bez predyktora, z 4 potokami
W sprawozdaniu:
- Ile cykli wykonywał się każdy program?
- Dlaczego wystąpił pierwszy stall w każdym z programów?
Kolejno należy zmieniać ilość dostępnych potoków, od 1 do 5. Proszę opisać jak zmieniał się czas wykonania (ilość cykli). Z czego to może wynikać. Dla każdego przypadku proszę podać końcową zawartość pamięci. Na przykład:
|
|
- Z włączoną predykcją
Na przykład:
$ lab_07.exe 4 true 1 -> Uruchomienie programu testowego nr 1, bez predyktora, z 4 potokami
W sprawozdaniu:
- Ile cykli wykonywał się każdy program?
- Dlaczego wystąpił pierwszy stall w każdym z programów?
Kolejno należy zmieniać ilość dostępnych potoków, od 1 do 5. Proszę opisać jak zmieniał się czas wykonania (ilość cykli). Z czego to może wynikać.
Proszę wypisać wystapienia komunikatu: Instruction under this address can generate branch. Z czego wynika ten komunikat?
Instruction reordering
Proszę uruchomić program, opisać w sprawozdaniu jego wynik. Z czego wynika takie działanie programu? Należy przerwać wykonywanie zaraz po pojawieniu się pierwszych wyników.
$lab_10.exe
Lab_11 - Lab_12 - Lab_13
- Proszę uruchomić kolejno lab_11, lab_12, lab_13
- W sprawozdaniu proszę umieścić wynik działania programów
- Proszę zinterpretować wyniki.
Lab_11 - program sekwencyjny Lab_12a - podobny problem do lab_11, ale wielowątkowo Lab_12b - podobny problem do lab_11, ale wielowątkowo, z rozwiązaniem problemu Lab_13 - symulacja technologii HT
Lab_15
W poniższym programie przetestujemy dwa różne sposoby dostępu do pamięci: sekwencyjny i losowy. Porównamy czas wykonania obu podejść, które mogą wpływać na wykorzystanie pamięci cache.
Proszę uruchomić program, opisać w sprawozdaniu jego wynik.
|
|
Należy modyfikować ilość iteracji: 50 75 100, uruchamiając dla dostępu sekwencyjnego i losowego.
Lab_17
Proszę uruchomić program, opisać w sprawozdaniu jego wynik. Należy kilka razy zmodyfikować parametry:
-c 1024 -b 32 -n 10000 -m 2048
-c 1024 -b 64 -n 10000 -m 2048
-c 2048 -b 32 -n 10000 -m 4096
-c 2048 -b 64 -n 10000 -m 4096
- inna konfiguracja wg uznania z taką samą liczbą iteracji
- inna konfiguracja wg uznania z taką samą liczbą iteracji
|
|
Lab_18 - Prefetch
Proszę uruchomić program, opisać w sprawozdaniu jego wynik. Należy kilka razy zmodyfikować parametry:
-c 1024 -b 32 -n 10000 -m 2048 -d 1
-c 1024 -b 64 -n 10000 -m 2048 -d 2
-c 2048 -b 32 -n 10000 -m 4096 -d 4
-c 2048 -b 64 -n 10000 -m 4096 -d 8
- inna konfiguracja wg uznania z taką samą liczbą iteracji
- inna konfiguracja wg uznania z taką samą liczbą iteracji
|
|
Scenariusz problemu (architektura jednordzeniowa/wielordzeniowa)
Przyjmijmy, że chcemy obliczyć wartości silni dla dużego zestawu liczb. Obliczenia te mają być wykonane sekwencyjnie dla każdej liczby w zestawie. Wartości silni obliczane są za pomocą iteracyjnej funkcji silni.
Porównanie rozwiązań na procesorze jedno- i wielordzeniowym:
- Procesor jednordzeniowy:
< Jak mogą wyglądać obliczenia? Jak mogą być przydzielane zasoby procesora? Wątki?>
Zalety:
Wady:
- Procesor wielordzeniowy:
< Jak mogą wyglądać obliczenia? Jak mogą być przydzielane zasoby procesora? >
Zalety:
Wady:
Porównanie:
Które rozwiązanie będzie wydajniejsze i w jakim wypadku? W jakich sytuacjach jedno rozwiązanie jest wydajniejsze od drugiego?