MN06LAB: Różnice pomiędzy wersjami
mNie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
<!-- | <!-- | ||
Konwertowane z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/ pawlik1/latex2mediawiki.php. | Konwertowane z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/ pawlik1/latex2mediawiki.php. | ||
Linia 39: | Linia 38: | ||
</math></center> | </math></center> | ||
i zbadaj czas jego działania. Następnie wykonaj to samo przy użyciu procedury BLAS (jakiej?). Sprawdź | i zbadaj czas jego działania. Następnie wykonaj to samo przy użyciu procedury BLAS (jakiej?). Sprawdź na losowym wektorze i losowej macierzy, że w obu przypadkach dostajesz ten sam wynik. Jeśli jest taka potrzeba, spróbuj wprowadzić kilka optymalizacji do swojego kodu. | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> |
Wersja z 09:57, 20 paź 2006
BLAS, LAPACK, pamięć podręczna
<<< Powrót do strony głównej przedmiotu Metody numeryczne
Oglądaj wskazówki i rozwiązania __SHOWALL__
Ukryj wskazówki i rozwiązania __HIDEALL__
Warto w tym momencie wrócić także do zadań z poprzedniego wykładu, wymagających wykorzystania BLASów i LAPACKa.
Ćwiczenie: Nie tylko ATLAS
Jeśli korzystasz z komputera z procesorem Intela lub AMD, masz możliwość sięgnięcia po procedury matematyczne zoptymalizowane właśnie na te architektury, zgromadzone w bibliotekach, odpowiednio, MKL i ACML. Spróbuj przeprowadzić testy wydajnościowe procedury mnożenia dwóch macierzy za pomocą takiej biblioteki w porównaniu do ATLASa dla Twojej architektury.
Ćwiczenie: Szybkie mnożenie macierzy przez wektor
Zaimplementuj samodzielnie algorytm mnożenia macierzy kwadratowej przez wektor:
i zbadaj czas jego działania. Następnie wykonaj to samo przy użyciu procedury BLAS (jakiej?). Sprawdź na losowym wektorze i losowej macierzy, że w obu przypadkach dostajesz ten sam wynik. Jeśli jest taka potrzeba, spróbuj wprowadzić kilka optymalizacji do swojego kodu.
Ćwiczenie: Strassen kontra DGEMM
Zaimplementuj algorytm Strassena mnożenia dwóch macierzy i porównaj czas jego działania z czasem działania procedury DGEMM
, najlepiej zoptymalizowanej na Twoją architekturę.
testuj dla macierzy wymiaru , gdzie .
Opis algorytmu Strassena znajdziesz np. w rozdziale 28 klasycznego podręcznika
- T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Wprowadzenie do algorytmów, Wydawnictwa Naukowo-Techniczne, Warszawa, 2005, ISBN 83-204-3149-2.
Ćwiczenie: Czy Twoje programy działają naprawdę szybko?
Rozwiąż układ równań liniowych programując, niczym Zosia-Samosia, wszystko od początku do końca w czystym C (a może wolałbyś w Pythonie?!). Porównaj czasy działania twojego programu i programu wywołującego po prostu procedurę biblioteczną LAPACKa
DGESV
, najlepiej wspartą dobrze podrasowanymi BLASami.