Python w zastoswaniach Naukowych
Miękkie rozpoczęcie
- Zajęcia będą zaczynały się od
mało-konkretnej pogadanki - Myślę że brakuje Wam takiego miękkiego
informatycznego obycia - Można się z tymi tezami nie zgadzać!
Wydajność kodu
Czyli czemu nie warto się starać
Python jest
- Interpretowany (?)
- Dynamiczny
- Wielo-paradygmatowy
- Tworzony z naciskiem na prostotę i wygodę programisty

Wydajność Pythona
- Wydajność pythona jest niższa niż wydajność programu napisanego w C++
- Szczególnie w przypadku problemu który obciąża procesor (cpu-bound), w przypadku kodu obciążającego system IO (io-bound) jest lepiej
- Po co więc uczyć się języka w którym jest wolniej?
Quiz:
- Program musi być możliwe najszybszy
- Mnożenie jest wielokrotnie droższe od dodawania
- Dzielenie jest kilka razy droższe do mnożenia
- Wąskim gardłem dla mnożenia macierzy, na typowym CPU, jest ilość mnożeń
- Wydajność jest najważniejszą cechą kodu wykonującego obliczenia
Quiz
- Program musi być możliwe najszybszy
- Mnożenie jest wielokrotnie droższe od dodawania
- Jest niecałe 2x droższe od dodawania (na nowych Intelach)
- Dzielenie jest kilka razy droższe do mnożenia
- Wąskim gardłem dla mnożenia macierzy, na typowym CPU, jest ilość mnożeń
- Jest nią czas pobierania danych z pamięci RAM
- Wydajność jest najważniejszą cechą kodu wykonującego obliczenia
Godzina pracy programisty
Minimalna płaca w UK: ~ 60 zł za godzinę.
Godzina pracy komputera
Godzina pracy komputera: ~30 gr za godzinę
(google compue cloud)
Godzina pracu komputera: 0
(Klaster w CIŚ :))
Kto z Was napisał program który wykonywał się dłużej niż go pisaliście
Jeśli godziną pracy przyśpieszę wykonanie programu, tak że przez miesiąc zacznie zużywać 20h mniej
Nakład pracy zwróci się roku
Jest gorzej
- 20% kosztu systemu to koszt napisania
- 80% koszt utrzymania
- Dla mniejszych systemów jest to 50/50
- Koszty pracy programisty z poprzedniego slajdu
trzeba pomnożyć przez współczynnik A o wartości (2;5)
- Jeśli kod wydajny jest mniej czytelny koszt
utrzymania rośnie
Jakie cechy ma mieć wasza praca dyplomowa
- Obliczenia są być poprawne
- Macie kod testowy pokazujący że obliczenia są poprawne
- Rozumiecie kod napisany przed miesiącem
- Możecie przekazać kod komuś innemu i ten ktoś go zrozumie
- Program jest najwydajniejszy jak to możliwe
Python
- Jest kompromisem między wydajnością pisania,
kosztem utrzymania a wydajnością wykonania - Postaram się pokazać, że warto pójśc na ten kompromis
Wydajny Python
Jak?
Kolejna zasada kciuka
- 90% czasu wykonania programu zajmuje 10% tego programu
- Starczy przyśpieszyć te 10%
- Zawsze można łatwo przepisać do C
- Narzędzia do przyśpieszania pokażę na zajęciach
Po co Python
czyli: Zastosowania
Analiza danych
- Python ma bardzo fajne biblioteki do
analizy danych. - Ładowanie i przetwarzanie danych jest
bardzo wygodne. - Pokażę narzędzia do tego.
Uruchamianie modeli
- Modele Jądrowe/Pogodowe często są
napisane w Fortranie/C/C++ - Często do ich uruchomienia potrzebne są
skomplikowane pliki konfiguracyjne - Fajnie jest móc stworzyć takie pliki i odpalić
kilkaset instancji modelu (dla różnych parametrów)
na raz
Praca z WWW
- Tworzenie stron WWW
(strona przedmiotu powstała
w Pelicanie) - Pobieranie danych ze stron WWW
- Na przykład dane satelitarne NASA
Kod masywnie wieloprocesowy
- Integracja z Cuda/OpenCL
- Obliczenia na klastrze
- Obliczenia na Waszym laptopie z
wykorzystaniem wszystkich rdzeni - Wieloprocesowość pokażę :)
Koniec wstępu
Python w zastoswaniach Naukowych
By Jacek Bzdak
Python w zastoswaniach Naukowych
- 1,774