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

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