Programowanie obiektowe w języku C++ Operacje na wektorach i macierzach. dr inż. Jarosław Forenc. Dziedziczenie. funkcje wirtualne (polimorfizm)

Podobne dokumenty
Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów. dziedziczenie funkcje wirtualne

Informatyka 2. Wykład nr 4 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Przykład: QS(tab,0,5); Sortowanie. Mnożenie macierzy. dr inż. Jarosław Forenc

Mnożenie macierzy Metody skrócenia czasu mnożenia macierzy. dr inż. Jarosław Forenc , K. metoda Strassena zmiana implementacji algorytmu

GENEZA WYZNACZNIKA. Układ równań liniowych z dwiema niewiadomymi. Rozwiązania układu metodą eliminacji Gaussa

Algorytmy komputerowe. Złożoność obliczeniowa Sortowanie. Mnożenie macierzy. dr inż. Jarosław Forenc

Metoda szeregów potęgowych dla równań różniczkowych zwyczajnych liniowych. Równanie różniczkowe zwyczajne liniowe drugiego rzędu ma postać

dr inż. Jarosław Forenc

Rachunek wektorowo-macierzowy w programie SciLab

Układy równań liniowych Macierze rzadkie

dr inż. Jarosław Forenc

WYKŁAD 7. UKŁADY RÓWNAŃ LINIOWYCH Macierzowa Metoda Rozwiązywania Układu Równań Cramera

Programowanie z więzami (CLP) CLP CLP CLP. ECL i PS e CLP

Podstawy programowania obiektowego

MATLAB PODSTAWY. [ ] tworzenie tablic, argumenty wyjściowe funkcji, łączenie tablic

Działania wewnętrzne i zewnętrzne

Algebra WYKŁAD 5 ALGEBRA 1

TABLICE WZORÓW I TWIERDZEŃ MATEMATYCZNYCH zakres GIMNAZJUM

Algebra Boole a. ccc dr inŝ. Jarosław Forenc

Semantyka i Weryfikacja Programów - Laboratorium 2 Działania na ułamkach, krotki i rekordy

- macierz o n wierszach i k kolumnach. Macierz jest diagonalna jeśli jest kwadratowa i po za główną przekątną (diagonala) są

WYZNACZNIKI. . Gdybyśmy rozważali układ dwóch równań liniowych, powiedzmy: Takie układy w matematyce nazywa się macierzami. Przyjmijmy definicję:

RBD Relacyjne Bazy Danych

Macierze w MS Excel 2007

T W O R Z Y M Y. 15 godzin w cyklu 3-godzinnym

Całki oznaczone. wykład z MATEMATYKI

Scenariusz lekcji matematyki w klasie II LO

I. DZIAŁANIA W ZBIORZE LICZB RZECZYWISTYCH

Zasada indukcji matematycznej. Dowody indukcyjne.

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

Rys Wyrównanie spostrzeżeń zawarunkowanych jednakowo dokładnych C. KRAKOWIANY

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

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

MATHCAD Obliczenia iteracyjne, macierze i wektory

4.3. Przekształcenia automatów skończonych

CIĄGI LICZBOWE. Naturalną rzeczą w otaczającym nas świecie jest porządkowanie różnorakich obiektów, czyli ustawianie ich w pewnej kolejności.

Wykład 1 Pojęcie funkcji, nieskończone ciągi liczbowe, dziedzina funkcji, wykres funkcji, funkcje elementarne, funkcje złożone, funkcje odwrotne.

I. DZIAŁANIA W ZBIORZE LICZB RZECZYWISTYCH ZBIORY LICZBOWE: liczby całkowite C : C..., 3, 2, 1,

O pewnych zgadnieniach optymalizacyjnych O pewnych zgadnieniach optymalizacyjnych

Je eli m, n! C i a, b! R[ m a. = -x. a a. m = d n pot ga ilorazu. m m m. l = a pot ga pot gi. a $ b = a $ b pierwiastek stopnia trzeciego

Przekształcenia automatów skończonych

Dowolną niezerową macierz A o wymiarach m na n za pomocą ciągu przekształceń elementarnych można sprowadzić do postaci C 01

DZIAŁ 2. Figury geometryczne

G i m n a z j a l i s t ó w

System identyfikacji Doradców Podatkowych

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

Połączenie (1) Optymalizacja poleceń SQL Część 3. Algorytm nested loops. Połączenie (2)

W praktycznym doświadczalnictwie, a w szczególności w doświadczalnictwie polowym, potwierdzono występowanie zależności pomiędzy wzrastającą liczbą

Wykład 8: Całka oznanczona

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

a a a b M. Przybycień Matematyczne Metody Fizyki I

Programy współbieżne

1. Określ monotoniczność podanych funkcji, miejsce zerowe oraz punkt przecięcia się jej wykresu z osią OY

Ekoenergetyka Matematyka 1. Wykład 15. CAŁKI OZNACZONE. Egzaminy I termin poniedziałek :00 Aula B sala 12B Wydział Informatyki

Rozwiązanie niektórych zadań treningowych do I kolokwium sem. zimowy, 2018/19

MACIERZE I WYZNACZNIKI

Rozwiązywanie układów równań liniowych (1)

MATEMATYKA W EKONOMII I ZARZĄDZANIU

III.3 Transformacja Lorentza prędkości i przyspieszenia. Efekt Dopplera

4.6. Gramatyki regularne

Wprowadzenie do Sieci Neuronowych Łańcuchy Markowa

Wprowadzenie do Sieci Neuronowych Łańcuchy Markowa

Spis treści. Podstawowe definicje. Wielokąty. Trójkąty. Czworokąty. Kąty

wersja podstawowa (gradient)

Pierwiastek z liczby zespolonej

ZADANIA Z ZAKRESU SZKOŁY PODSTAWOWEJ, GIMNAZJUM I SZKOŁY ŚREDNIEJ


4. Rekurencja. Zależności rekurencyjne, algorytmy rekurencyjne, szczególne funkcje tworzące.

Co można zrobić za pomocą maszyny Turinga? Wszystko! Maszyna Turinga potrafi rozwiązać każdy efektywnie rozwiązywalny problem algorytmiczny!

Wspomaganie obliczeń za pomocą programu MathCad

460 Szeregi Fouriera. Definicja. Definicja. Układ trygonometryczny. Definicja Układ ortogonalny funkcji ( ϕ n

symbol dodatkowy element graficzny kolorystyka typografia

SPECYFIKACJA ISTOTNYCH WARUNKÓW ZAMÓWIENIA

GEOMETRIA ANALITYCZNA W PRZESTRZENI

Aby opisać strukturę krystaliczną, konieczne jest określenie jej części składowych: sieci przestrzennej oraz bazy atomowej.

MODEL ODPOWIEDZI I SCHEMAT OCENIANIA ARKUSZA EGZAMINACYJNEGO II

Matematyczne Podstawy Informatyki

METODY NUMERYCZNE. Wykład 4. Całkowanie numeryczne. dr hab. inż. Katarzyna Zakrzewska, prof. AGH

Do wyznaczania obrazów przekształceń stosuje się macierze 4-wierszowe w tzw. zapisie jednorodnym

Badanie regularności w słowach

SPECYFIKACJA ISTOTNYCH WARUNKÓW ZAMÓWIENIA

1 Wynagrodzenie Wykonawcy zostanie podzielone na równe raty płatne cykliczne za okresy 2 tygodniowe w. okresie obowiązywania umowy.

AM1.1 zadania 8 Przypomn. e kilka dosyć ważnych granic, które już pojawiły się na zajeciach. 1. lim. = 0, lim. = 0 dla każdego a R, lim (

METODY NUMERYCZNE. Wykład 5. Całkowanie numeryczne. dr hab. inż. Katarzyna Zakrzewska, prof. AGH. Met.Numer. wykład 5 1

Rozwiązania maj 2017r. Zadania zamknięte

H. Dąbrowski, W. Rożek Próbna matura, grudzień 2014 r. CKE poziom rozszerzony 1. Zadanie 15 różne sposoby jego rozwiązania

δ δ δ 1 ε δ δ δ 1 ε ε δ δ δ ε ε = T T a b c 1 = T = T = T

Metody numeryczne. Wykład nr 5: Aproksymacja i interpolacja. dr Piotr Fronczak

Tytuł podręcznika, autor, wydawnictwo. Meine Welttour cz.1, 2 podręcznik + ćwiczenia, Sylwia Mróz- Dwornikowska, Nowa Era

MATEMATYKA DYSKRETNA (2014/2015) dr hab. inż. Małgorzata Sterna WIELOMIANY SZACHOWE

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

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

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

PODSTAWY ALGEBRY MACIERZY. Operacje na macierzach

3. F jest lewostronnie ciągła

Gdyńskim Ośrodkiem Sportu i Rekreacji jednostka budżetowa

Podstawy układów logicznych

4. RACHUNEK WEKTOROWY

KARTA WZORÓW MATEMATYCZNYCH. (a + b) c = a c + b c. p% liczby a = p a 100 Liczba x, której p% jest równe a 100 a p

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

Transkrypt:

Rok kdemiki 0/0, Wykłd r 6 /4 Pl wykłdu r 6 Iformtyk Politehik Biłostok - Wydził Elektryzy Elektrotehik, semestr III, studi stjore I stopi Rok kdemiki 0/0 Progrmowie oiektowe w języku C++ dziedzizeie fukje wirtule (polimorfizm) Operje wektorh i mierzh możeie mierzy przez wektor możeie mierzy przez mierz ormy wektor i mierzy Wykłd r 6 (0..0) Rok kdemiki 0/0, Wykłd r 6 /4 Rok kdemiki 0/0, Wykłd r 6 4/4 Dziedzizeie Dziedzizeie dziedzizeie jest to tehik pozwljąą defiiowie owej klsy przy wykorzystiu klsy już istiejąej poleg przejmowiu jedej klsy (zowej, podstwowej) przez ią klsę (pohodą) przy dziedzizeiu, w skłd oiektów klsy pohodej utomtyzie whodzą pol klsy zowej do oiektów klsy pohodej możemy stosowć operje zdefiiowe przez fukje skłdowe klsy zowej przykłdow kls podstwow i kls pohod /* kls podstwow */ lss oso hr *imie; hr *zwisko; it wiek; puli: oso(hr *i,hr *,it w); ~oso() void drukuj(); ; /* kls pohod */ lss studet : puli oso hr *wydzil; it semestr; puli: studet(hr *i,hr *, it w,hr *wy,it s); ~studet() void drukuj(); void promoj(); ;

Rok kdemiki 0/0, Wykłd r 6 5/4 Rok kdemiki 0/0, Wykłd r 6 6/4 Dziedzizeie Dziedzizeie - sposoy dziedzizei sposó dziedzizei kls podstwow privte proteted puli privte - - - proteted privte proteted proteted puli privte proteted puli w klsie pohodej moż zdefiiowć: dodtkowe de skłdowe dodtkowe fukje skłdowe de i fukje o tkih smyh zwh jk w klsie podstwowej (de i fukje z klsy podstwowej są zsłie) jeśli ie podmy sposou dziedzizei, to domyślie ędzie to privte podzs dziedzizei ie są dziedzizoe: kostruktor, destruktor i opertor przypisi "" Przykłd: studet st("j","kos",0,"we",); st.drukuj(); st.oso::drukuj(); - deklrj oiektu - wywołie fukji z klsy studet - wywołie fukji z klsy oso możliwe jest dziedzizeie wielokrote, tz. kls pohod może yć klsą podstwową dl iej klsy Rok kdemiki 0/0, Wykłd r 6 7/4 Rok kdemiki 0/0, Wykłd r 6 8/4 Przykłd r - dziedzizeie (/4) Przykłd r - dziedzizeie (/4) #ilude <iostrem> #ilude <strig> usig mespe std; lss oso privte: hr *imie; hr *zwisko; it wiek; puli: oso(hr*,hr*,it); ~oso(); void drukuj(); ; kls podstwow (zow) lss studet : puli oso privte: hr *wydzil; it semestr; puli: studet(hr*,hr*,it, hr*,it); ~studet(); void drukuj(); void promoj(); ; kls pohod oso::oso(hr *i, hr *, it w) imie ew hr[strle(i)+]; zwisko ew hr[strle()+]; strpy(imie,i); strpy(zwisko,); wiek w; oso::~oso() delete [] imie; delete [] zwisko; void oso::drukuj() out << imie << " " << zwisko; out << " " << wiek << edl; destruktor klsy oso kostruktor klsy oso

Rok kdemiki 0/0, Wykłd r 6 9/4 Rok kdemiki 0/0, Wykłd r 6 0/4 Przykłd r - dziedzizeie (/4) Przykłd r - dziedzizeie (4/4) studet::studet(hr *i,hr *,it w,hr *wy,it s) : oso(i,,w) wydzil ew hr[strle(wy)+]; strpy(wydzil,wy); semestr s; studet::~studet() delete [] wydzil; kostruktor klsy studet void studet::drukuj() oso::drukuj(); out << "Wydzil: " << wydzil; out << " Semestr: " << semestr << edl; destruktor klsy studet list iijlizyj kostruktor klsy studet zwierją wywołie kostruktor klsy podstwowej (oso) void studet::promoj() semestr++; it mi() studet st("j","kowlski",0,"we",); st.drukuj(); st.promoj(); st.drukuj(); st.oso::drukuj(); jko pierwszy zostie wywoły kostruktor klsy podstwowej (oso) po im kostruktor klsy pohodej (studet) kolejość wywołi destruktorów jest odwrot w stosuku do kostruktorów - jko pierwszy jest wywoływy destruktor klsy studet, po im destruktor klsy oso Rok kdemiki 0/0, Wykłd r 6 /4 Rok kdemiki 0/0, Wykłd r 6 /4 Przykłd r - dziedzizeie (4/4) void studet::promoj() J Kowlski 0 jko pierwszy Wydzil: zostie wywoły WE Semestr: semestr++; kostruktor J klsy Kowlski podstwowej 0 (oso) po Wydzil: im kostruktor WE Semestr: klsy pohodej J Kowlski (studet) 0 it mi() studet st("j","kowlski",0,"we",); st.drukuj(); st.promoj(); st.drukuj(); st.oso::drukuj(); kolejość wywołi destruktorów jest odwrot w stosuku do kostruktorów - jko pierwszy jest wywoływy destruktor klsy studet, po im destruktor klsy oso Fukje wirtule (polimorfizm) Przykłd: złóżmy, że piszemy progrm wyświetljąy ekrie róże figury (kwdrt, trójkąt, koło) do wyświetlei kżdej figury stosow jest oddziel fukj, figury powiy yć wyświetle ekrie w określoej kolejośi Prolem: Rozwiązie: jk zorgizowć przehowywie iformji o figurh? jk zorgizowć wyświetlie figur? klsy + dziedzizeie + fukje wirtule defiiujemy klsę podstwową (figur) orz trzy klsy pohode (kwdrt, trojkt, kolo) w klsie podstwowej umieszzmy fukję void rysuj() poprzedzoą słowem virtul (fukj t i ie roi) w klsh pohodyh umieszzmy fukje o tkih smyh zwh jk w klsie podstwowej - void rysuj() wyświetljąe poszzególe figury

Rok kdemiki 0/0, Wykłd r 6 /4 Rok kdemiki 0/0, Wykłd r 6 4/4 Przykłd r - fukje wirtule (/) Przykłd r - fukje wirtule (/) #ilude <iostrem> usig mespe std; lss figur puli: virtul void rysuj() ; ; kls podstwow figur fukj wirtul rysuj() lss kwdrt : puli figur kls pohod kwdrt puli: void rysuj() out << "Kwdrt" << edl; ; lss trojkt : puli figur kls pohod trojkt puli: void rysuj() out << "Trojkt" << edl; ; lss kolo : puli figur kls pohod kolo puli: void rysuj() out << "Kolo" << edl; ; Rok kdemiki 0/0, Wykłd r 6 5/4 Rok kdemiki 0/0, Wykłd r 6 6/4 Fukje wirtule (polimorfizm) Przykłd r - fukje wirtule (/) jeśli wskźikowi do klsy podstwowej (figur) przypiszemy dres oiektu klsy pohodej (kwdrt, trojkt, kolo), to wywołują poprzez wskźik fukję rysuj(), wywołmy fukję odpowidjąą demu oiektowi, p. figur *ptr; kwdrt kw; trojkt tr; kolo kol; ptr &kw; ptr->rysuj(); ptr &tr; ptr->rysuj(); ptr &kol; ptr->rysuj(); - deklrj wskźik do oiektu klsy figur - deklrj oiektu klsy kwdrt - deklrj oiektu klsy trojkt - deklrj oiektu klsy kolo - wywoł zostie fukj rysuj() z klsy kwdrt - wywoł zostie fukj rysuj() z klsy trojkt - wywoł zostie fukj rysuj() z klsy kolo it mi() kwdrt kwdrt, kwdrt; trojkt trojkt, trojkt; kolo kolo, kolo; figur *list[6]; list[0] &trojkt; list[] &kwdrt; list[] &kolo; list[] &kwdrt; list[4] &kolo; list[5] &trojkt; for (it i0; i<6; i++) list[i]->rysuj(); Trojkt Kwdrt Kolo Kwdrt Kolo Trojkt mówimy, że w powyższym przykłdzie wystąpił polimorfizm (wielopostiowość)

Rok kdemiki 0/0, Wykłd r 6 7/4 Rok kdemiki 0/0, Wykłd r 6 8/4 Możeie mierzy przez wektor Możeie mierzy przez mierz Operj: C A W A[N][M] - mierz N M - elemetow W[M] - wektor M - elemetowy (kolumowy) C[N] - wektor N - elemetowy (kolumowy) Operj: C A B A[N][M] - mierz N M - elemetow B[M][K] - mierz M K - elemetow C[N][K] - mierz N K - elemetow w + w + w w w w + w + w w + w w + w Progrm w języku C: for (i0; i<n i++) C[i] 0.0; for (j0; j<m; j++) C[i] + A[i][j] * W[j]; M j i ij w j, i,, K, N N + + + + + + N + + + + + + K M K M + + + + + + Rok kdemiki 0/0, Wykłd r 6 9/4 Rok kdemiki 0/0, Wykłd r 6 0/4 Możeie mierzy przez mierz Możeie mierzy przez mierz N (i) Operj: C A B (A[N][M],B[M][K],C[N][K]) N (i) K (k) Progrm w języku C: for (k0; k<k; k++) C[i][k] 0.0; for (j0; j<m; j++) C[i][k] + A[i][j] * B[j][k]; M (j) M ik j K (k) M (j) i,, K, N ij jk, k,, K, K Koszt lgorytmu: O( ) szykość wykoywi olizeń wpływ ie tylko liz operji zmieoprzeikowyh, le tkże sposó poieri dyh z pmięi komputer oee systemy komputerowe mją hierrhizą udowę pmięi: rejestry proesor pmięć podręz (he) pmięć operyj pmięć zewętrz olizei są efektywie wykoywe, gdy odywją się zmieyh zjdująyh się w jk jszyszej pmięi

Rok kdemiki 0/0, Wykłd r 6 /4 Rok kdemiki 0/0, Wykłd r 6 /4 Możeie mierzy przez mierz Możeie mierzy przez mierz rozptrzmy dw lgorytmy możei mierzy: Algorytm r for (k0; k<n; k++) for (j0; j<n; j++) C[i][k] + A[i][j]*B[j][k]; Algorytm r for (j0; j<n; j++) for (k0; k<n; k++) C[i][k] + A[i][j]*B[j][k]; mierze: 048 048 proesor: Itel Core i5-40m,0 GHz kompiltor: Mirosoft Visul C++ 008 Stdrd Editio Algorytm r : ez optymlizji: 68,0 [s] z optymlizją: 9,05 [s] Algorytm r : ez optymlizji: 49,409 [s] z optymlizją: 6,70 [s] N Metod przehowywi mierzy w pmięi liiowej M [0][0] [0][] [0][] [0][] [][0] [][] [][] [][] [][0] [][] [][] [][] mierz w pmięi liiowej (wektor) mierz Pmięć podręz (he memory) Rok kdemiki 0/0, Wykłd r 6 /4 Rok kdemiki 0/0, Wykłd r 6 4/4 Możeie mierzy przez mierz Biliotek umeryz BLAS Algorytm r for (k0; k<k; k++) for (j0; j<m; j++) C[i][k] + A[i][j] * B[j][k]; Algorytm r for (j0; j<m; j++) for (k0; k<k; k++) C[i][k] + A[i][j] * B[j][k]; [0][0] [0][] [0][] [0][] [][0] [][] [][] [][] [][0] [][] [][] [][] C A B C A B BLAS - Bsi Lier Alger Suprogrms Ziór proedur służąyh do wykoywi operji podstwowyh oiekth lgery liiowej: sklrh wektorh mierzh Stro głów: http://www.etli.org/ls Rok pulikji: 979 Orygilie pis w języku Fortr 77 Osługuje lizy: rzezywiste pojedyzej i podwójej preyzji zespoloe pojedyzej i podwójej preyzji

Rok kdemiki 0/0, Wykłd r 6 5/4 Rok kdemiki 0/0, Wykłd r 6 6/4 Biliotek umeryz BLAS Wyróżi się poziomy strkji lgorytmów BLAS BLAS Level operje typu wektor-wektor (dodwie wektorów, ormy wektor, ilozy sklry wektorów) y α + y BLAS Level operje typu mierz-wektor (możeie mierzy przez wektor) y αa + y BLAS Level operje typu mierz-mierz (możeie mierzy przez mierz) C αa B + C BLAS - Nzwy proedur Struktur zwy: <hrter> <me> <mod> ( ) <hrter> - ozz preyzję (typ dyh): S - pojedyz, lizy rzezywiste (rel, sigle preisio) C - pojedyz, lizy zespoloe (omple, sigle preisio) D - podwój, lizy rzezywiste (rel, doule preisio) Z - podwój, lizy zespoloe (omple, doule preisio) <me> - w BLAS ozz typ operji: COPY - kopiowie wektorów ( vetor opy) DOT - ilozy sklry wektorów ( vetor dot produt) ROT - orót wektor ( vetor rottio) SWAP - zmi wektorów ( vetor swp) Rok kdemiki 0/0, Wykłd r 6 7/4 Rok kdemiki 0/0, Wykłd r 6 8/4 BLAS - Nzwy proedur <me> - w BLAS i ozz typ mierzy: GE - mierz ogól (geerl mtri) SY - mierz symetryz (symmetri mtri) TR - mierz trójkąt (trigulr mtri) <mod> - dodtkowe iformje o operji - w BLAS : MV - możeie mierzy przez wektor (mtri-vetor produt) SV - rozwiązie ukłdu rówń liiowyh (solvig system of lier equtios with mtri-vetor opertios) <mod> - dodtkowe iformje o operji - w BLAS : MM - możeie mierzy (mtri-mtri produt) SM - rozwiązie ukłdu rówń liiowyh (solvig system of lier equtios with mtri-mtri opertios BLAS - Nzwy proedur Przykłdy zw: DGEMV - możeie mierzy przez wektor, mierz i wektor zwierją lizy rzezywiste podwójej preyzji y α A + β y lu T y α A + β y SGEMM - możeie mierzy przez mierz, mierze zwierją lizy rzezywiste pojedyzej preyzji y α op( A) op( B) + β C op( X) X, op( X) X, op( X) ojg( X SSWAP - zmi wektorów zwierjąyh lizy rzezywiste pojedyzej preyzji T y T )

Rok kdemiki 0/0, Wykłd r 6 9/4 Rok kdemiki 0/0, Wykłd r 6 0/4 BLAS - Implemetje GPGPU i CUDA Stro głów: http://www.etli.org/ls Stro głów zwier iezoptymlizową iliotekę BLAS MKL (Itel) Itel Mth Kerel Lirry (Itel MKL) v http://softwre.itel.om/e-us/itel-mkl ACML (AMD) AMD Core Mth Lirry http://developer.md.om/tools/pu-developmet/md-ore-mthlirry-ml/ ATLAS (ope soure) Automtilly Tued Lier Alger Softwre http://mth-tls.soureforge.et/ GPGPU - Geerl Purpose omputig o Grphis Proessig Uits CUDA (Compute Uified Devie Arhiteture) hrdwre - rówoległ rhitektur olizeiow GPU softwre - kompiltor v, ilioteki i ie rrzędzi NVIDIA Corportio (USA) Pierwsz wersj: luty 007 Stro WWW: http://www.vidi.pl/ojet/ud_home_ew_pl.html Liej: freewre Rok kdemiki 0/0, Wykłd r 6 /4 Rok kdemiki 0/0, Wykłd r 6 /4 CUDA - Jk używć? CUBLAS Sprwdzić zy krt grfiz w komputerze osługuje CUDA wszystkie owe krty grfize NVIDIA są komptyile z CUDA Śiągąć oprogrmowie CUDA The CUDA Driver - zitegrowy ze sterowikiem krty grfizej The CUDA Toolkit - zwier rzędzi potrzee do kompilowi plikji z wykorzystiem Mirosoft Visul Studio (rzędzi, ilioteki, pliki główkowe, ie zsoy) The GPU Computig SDK - przykłdowe progrmy Zistlowć CUDA driver (jeśli jest to koieze) Zistlowć oprogrmowie CUDA - Toolkit, SDK Użyć szlou (templte projet) do stworzei włsego progrmu wykorzystująego CUDA Biliotek CUBLAS - implemetj BLAS (Bsi Lier Alger Suprogrms) dl krt grfizyh NVIDIA i środowisk CUDA Zstosowie CUBLAS w progrmie wymg: iijlizji ilioteki CUBLAS: ulsiit() przydzielei pmięi GPU mierze i wektory: ulsallo() przesłi mierzy i wektorów do pmięi GPU: ulssetmtri() wywołi odpowiedih fukji CUBLAS: ulssgemm() przesłi wyików olizeń z pmięi GPU do pmięi RAM komputer: ulsgetmtri() zwoliei pmięi GPU: ulsfree() zkońzei pry ilioteki CUBLAS: ulsshutdow()

Rok kdemiki 0/0, Wykłd r 6 /4 Rok kdemiki 0/0, Wykłd r 6 4/4 Normy wektor i mierzy Normy wektor orm jest lizą, stowiąą w pewym sesie mirę wektor lu mierzy ormy wektorów: m i i [ K K ] i i i i i mksimum pierwsz drug (euklidesow) Przykłd: [ ] dy jest wektor: 5 4 6 8 wrtośi orm wyoszą: orm mksimum: m i i 8 ormy mierzy: A m ij i j A m j i ij A E ij i j ieskońzoość pierwsz euklidesow orm pierwsz: i i orm drug (euklidesow): i i + 5 + 4 + 6 + 8 + + 9 + 5 + ( 4) + 6 + ( 8) + + 55,45 Rok kdemiki 0/0, Wykłd r 6 5/4 Rok kdemiki 0/0, Wykłd r 6 6/4 Przykłd r - ormy wektor (/) Przykłd r - ormy wektor (/) #ilude <iostrem> #ilude <stdli> #ilude <mth> usig mespe std; #defie N 7 it mi() /* Wektor */ flot [N], 5, -4, 6, -8,, ; flot orm_m, orm, orm; it i; /* Norm mksimum */ orm_m fs([0]); for (i; i<n; i++) if (orm_m < fs([i])) orm_m fs([i]); /* Norm pierwsz */ orm 0; orm orm + fs([i]); /* Norm drug(euklidesow) */ orm 0; orm orm + [i]*[i]; orm sqrt(orm); Norm mksimum: 8 Norm pierwsz: 9 Norm euklidesow:.4499 /* Wyswietleie wyikow */ out << "Norm mksimum: " << orm_m << edl; out << "Norm pierwsz: " << orm << edl; out << "Norm euklidesow: " << orm << edl;

Rok kdemiki 0/0, Wykłd r 6 7/4 Rok kdemiki 0/0, Wykłd r 6 8/4 Normy mierzy Przykłd: 5 4 wiersz + 5 + 4 A 6 9 A m ij wiersz + 6 + 9 7 A i j 7 5 wiersz 7 + 5 + 5 7 5 4 kolum + + 7 A 6 9 A m 5 + 6 + 5 6 6 ij kolum A j i 7 5 kolum 4 + 9 + 6 5 4 A 6 9 A E ij A i j 7 5 E + 5 + 4 + + 6 + 5,97 + 9 + 7 + 5 + Przykłd r - ormy mierzy (/) #ilude <iostrem> #ilude <stdli> #ilude <mth> usig mespe std; #defie N it mi() flot A[N][N], -5, 4,, 6, -9, 7, 5, ; flot orm_if; flot orm; flot orm_euk; flot sum; it i, j; Rok kdemiki 0/0, Wykłd r 6 9/4 Rok kdemiki 0/0, Wykłd r 6 40/4 Przykłd r - ormy mierzy (/) Przykłd r - ormy mierzy (/) /* Norm ieskozoos */ orm_if 0; sum 0; for (j0; j<n; j++) sum sum + fs(a[i][j]); if (sum > orm_if) orm_if sum; /* Norm pierwsz */ orm 0; for (j0; j<n; j++) sum 0; sum sum + fs(a[i][j]); if (sum > orm) orm sum; /* Norm euklidesow */ orm_euk 0; for (j0; j<n; j++) Norm ieskozoos: 7 Norm pierwsz: 6 Norm euklidesow: 5.974 orm_euk orm_euk + A[i][j]*A[i][j]; orm_euk sqrt(orm_euk); /* Wyswietleie wyikow */ out << "Norm ieskozoos: " << orm_if << edl; out << "Norm pierwsz: " << orm << edl; out << "Norm euklidesow: " << orm_euk << edl;

Rok kdemiki 0/0, Wykłd r 6 4/4 Koie wykłdu r 6 Dziękuję z uwgę!