Programowanie współbieżne... (10) Andrzej Baran 2010/11

Podobne dokumenty
Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Metody Obliczeniowe w Nauce i Technice

Algorytmy numeryczne 1

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 7. Karol Tarnowski A-1 p.

Programowanie w C++ Wykład 10. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 10) Programowanie w C++ 1 / 21

Laboratorium nr 5: Mnożenie wektorów i macierzy

Zad. 3: Układ równań liniowych

PWSZ w Tarnowie Instytut Politechniczny Elektrotechnika

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

Programowanie Proceduralne

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Historia Kompilatory Podstawy składni Zastosowanie. Język Fortran. Bartosz Radliński. Poznań, 2015

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Programy użytkowe (utilities)

Schemat konstrukcja pliku Makefile

Kompilacja i uruchamianie zadań na klastrach Perszeron i Mustang.

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Wprowadzenie do środowiska

Programowanie Współbieżne. Algorytmy

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Optymalizacja R dlaczego warto przesi ± si na Linuxa?

Zad. 5: Układ równań liniowych liczb zespolonych

Programowanie Niskopoziomowe

Kompilacja i scalanie programów w linii poleceń gcc i make

Systemy Operacyjne. Ćwiczenia

Język ludzki kod maszynowy

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Algorytm. a programowanie -

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Automatyzacja kompilacji. Automatyzacja kompilacji 1/28

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Programowanie komputerów

Zad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Modelowanie danych hodowlanych

Zad. 4: Rotacje 2D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Język programowania C C Programming Language. ogólnoakademicki

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Z-0085z Algebra Liniowa Linear Algebra. Stacjonarne wszystkie Katedra Matematyki Dr Beata Maciejewska. Podstawowy Obowiązkowy Polski Semestr pierwszy

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Podstawy programowania. Wprowadzenie

Operatory zmiany sposobu przypisania standardowych strumieni >,<,>> Jeżeli pierwsze polecenie powiodło się to wykona drugie

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Programowanie współbieżne i rozproszone

Laboratorium nr 4: Arytmetyka liczb zespolonych

Ćwiczenia z wyliczania wartości funkcji

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Kompletna dokumentacja kontenera C++ vector w -

Podstawy Programowania

Programowanie w języku C++ Grażyna Koba

Tworzenie języków specyfikacji dla zagadnień numerycznych

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

Fragment wykładu z języka C ( )

Symulacja obliczeń kwantowych

WEKTORY I MACIERZE. Strona 1 z 11. Lekcja 7.

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

Tworzenie oprogramowania

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

PRZEWODNIK PO PRZEDMIOCIE

Paradygmaty programowania

Praca dyplomowa magisterska

PRZEWODNIK PO PRZEDMIOCIE

Technologie informacyjne lab. 3

Bibliotek grid została stworzona aby wykorzystywać funkcje programu R ( oraz wprowadzone do programu R) do tworzenia odwzorowań typu grid oraz siatek

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Algebra liniowa (ALL010) 2. KIERUNEK: MATEMATYKA. 3. POZIOM STUDIÓW: I stopnia 4. ROK/ SEMESTR STUDIÓW: I/1

Here comes the sun. Wyk lad niesystematyczny. Marcin Makowski. 24 października Zak lad Chemii Teoretycznej UJ

DOS Podstawowe komendy Przygotowanie dyskietki do pracy Praca z katalogami w systemie DOS Operacje kopiowania

Instalacja

Metody i analiza danych

Wprowadzenie do biblioteki klas C++

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

Zadanie nr 3: Sprawdzanie testu z arytmetyki

2. Układy równań liniowych

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Z-ID-103 Algebra liniowa Linear Algebra

Środowisko dla Fortrana

Algebra Liniowa. Transport I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Konsolidacja (linking)

Programowanie Obiektowe i C++

Kernel Kompilacja jądra

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

Programowanie współbieżne... (4) Andrzej Baran 2010/11

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

MATLAB tworzenie własnych funkcji

Zadanie nr 2: Arytmetyka liczb zespolonych

Podstawy Programowania.

Transkrypt:

Programowanie współbieżne... (10) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html

Biblioteki Biblioteki podstawowe BLACS (Basic Linear Algebra Communication Subprograms) BLAS (Basic Linear Algebra Subprograms), ATLAS (patrz sieć) Biblioteki złożone LAPACK (Linear Algebra PACKage) ScaLAPACK (Scalable Linear Algebra PACKage) Inne MKL LINPACK (Linear PACKage) IMSL (matematyka + statystyka) gsl Gnu Scientific Library (patrz sieć) Sposoby używania bibliotek Programowanie współbieżne... 2

Biblioteki sekwencyjne BLAS zawiera podstawowe procedury operacji na wektorach i macierzach (tablicach) Mnożenie przez liczbę, iloczyn skalarny, kopiowanie Dodawanie wektorów, macierzy Kopiowanie z mnożeniem i dodawaniem itp BLAS posiada 3 poziomy złożoności Mnożenia wektor op wektor BLAS1 (op = operator) Mnożenia macierz op wektor BLAS2 Mnożenia macierz op macierz BLAS3 Wszystkie operacje sa zoptymalizowane dla danej architektury procesorów (patrz też GOBLAS) Programowanie współbieżne... 3

Biblioteki sekwencyjne Adres internetowy źródeł biblioteki BLAS: http://www.netlib.org/blas/ Ze źródeł można utworzyć kod dla dowolnej platformy; nie jest on optymalny Najlepsze implementacje: gotowe kompilaty przygotwane na konkretne platformy, np. biblioteka MKL Intel Fortran (ifort) Programowanie współbieżne... 4

Procedury BLAS Biblioteka BLAS posiada trzy poziomy. Poziom 1 biblioteki BLAS zawiera procedury, których czas wykonania jest O(n) (czytaj: rzędu n). Kolejne dwa poziomy 2 i 3 zawierają procedury czasu O(n 2 ) i O(n 3 ) Nazwy procedur są skrótami wyrażeń postaci scalar alpha x plus y (iloczyn, produkt skalara alpha przez wektor x plus wektor y). W tym przypadku nazwa procedury (funkcji) jest: saxpy. Inny sposób nazywania procedur to nazwy znanych operacji, np. dot(x,y) oznacza iloczyn skalarny wektorów (dot product) x i y. Programowanie współbieżne... 5

Procedury BLAS1 Poziom 1. Operacje na wektorach. Przykłady działań: c=dot(x, y) ( c = c + x(i)y(i), i=1, 2,...) z=saxpy(alpha, x, y) ( z(i) = alpha*x(i) + y(i), i=1,...n ) W zależności od typu argumentów, przed nazwą procedury może występić dodatkowa litera d (od double precission), c (od complex) np. ddot(), cdot() Łatwo sprawdzić, że szybkość wykonywania operacji BLAS jest o wiele większa niż szybkość realizacji wewnętrznych (intrinsic) operacji macierzowych dostępnych w FORTRAN 95 (nie mówiąc już o własnych realizacjach takich działań). Zadanie. Sprawdź praktycznie powyższe stwierdzenie. Programowanie współbieżne... 6

Procedury BLAS2, 3 Poziom 2: O(n 2 ) Mnożenie macierz x wektor z = y + A x; z = gaxpy(a, x, y) ( Tutaj: dim(a) = m x n, dim(x) = n, dim(y) = m) Nazwa gaxpy pochodzi od wyrażenia general A x plus y Poziom 3: O(n 3 ) Mnożenia typu macierz x macierz (C = A B) Mnożenie można zrealizować na sześć różnych sposobów używając procedur niższych poziomów (Zadanie: wykonaj te mnożenia) Odpowiadający poziom to BLAS3 Zarówno dokładny jak i skrótowy opis procedur BLAS w wersji FORTRAN jak i C, C++ można znaleźć w internecie Programowanie współbieżne... 7

LAPACK Rozwiązywanie układów równań liniowych Wartości własne i wektory własne macierzy Linear least-square fitting Programowanie współbieżne... 8

BLACKS Podstawowe operacje związane z przekazywaniem danych między procesami Organizacja sieci procesów (gridy) Programowanie współbieżne... 9

Biblioteki Hierarchia bibliotek matematycznych ScaLAPACK PBLAS Globalne LAPACK BLACS Lokalne BLAS PVM/MPI Programowanie współbieżne... 10

Kompilacja z BLAS, LAPACK Kompilacja programów z użyciem bibliotek zewnętrznych (spec) Dokładne omówienie na ćwiczeniach (Lab) W czasie łączenia obiektów w wykonywalny program linker () dołącza procedury biblioteczne Programowanie współbieżne... 11

Co robi make? Program make wykonuje program zapisany w pliku Makefile Makefile zawiera polecenia dla powłoki systemu. Polecenia mogą dotyczyć wieloetapowego procesu kompilacji programu (wiele plików, modułów, procedur) Długie polecenia kontynuujemy w następnej linii po znaku \ (tylko on) Polecenia wpisujemy po znaku <tab> (wcięte linie) Linie ze znakiem : podają zależności między różnymi plikami (np. %.o:%f oznacza, że pliki z rozszerzeniem.o zależą of plików z rozszerzeniem.f) make clean usuwa zbędne pliki # Plik makefile/makefile # Definicje zmiennych OBJECT = global.o main.o funct.o subr.o COMP = ifort # kompilator OPT = -O3 # opcje kompilacji # Makefile exe: $(objects) $(COMP) -o exe $(OPT) $(OBJECT) global.mod: global.o global.f90 $(COMP) -c $(OPT) global.f90 global.o: global.f90 $(COMP) -c $(OPT) global.f90 main.o: global.mod main.f90 $(COMP) -c $(OPT) main.f90 funct.o: global.mod funct.f90 $(COMP) -c $(OPT) funct.f90 %.o: %.f90 $(COMP) -c $(subr) $< # Czyszczenie clean: rm global.mod rm $(OBJECT) # Koniec makefile Programowanie współbieżne... 12

Zyski z make Makefile tworzymy raz! Aby wykonac wszystkie polecenia z Makefile piszemy tylko make lub make etykieta Po poprawkach dokonanych w dowolnym pliku wydajemy polecenie make co powoduje kompilację tego tylko pliku oraz powoduje wykonanie tych poleceń z makefile, które od tego pliku zależą Skraca się przez to czas pracy i nie musimy za każdym razem mozolnie wystukiwać na klawiaturze wszystkich potrzebnych poleceń Wygodnie jest mieć w danym katalogu programy z jednego projektu i tylko jeden makefile Programowanie współbieżne... 13

Zyski z make Jeśli używamy bibliotek definiujemy je w makefile Podbnie, definiujmy w makefile ścieżki do plików, których używamy w projekcie lub ścieżki do bibliotek Program make rozpoznaje sam pliki makefile lub Makefile Z make można robić wiele rzeczy w łatwy sposób! Więcej o make i Makefile znajdziesz pod adresem www: http://www.gnu.org/software/make/manual/make.html Programowanie współbieżne... 14

Problemy...? Programowanie współbieżne... 15