Co je paralelní výpočet

Introduction to Data Engineering

Vincent Vankrunkelsven

Data Engineer @ DataCamp

Princip paralelního výpočtu

Základ moderních nástrojů pro zpracování dat

  • Paměť
  • Výpočetní výkon

Myšlenka

  • Rozdělit úkol na dílčí úkoly
  • Distribuovat dílčí úkoly mezi více počítačů
  • Spolupracovat na dokončení úkolu

Diagram rozdělení úkolu na dílčí úkoly

Introduction to Data Engineering

Krejčovská dílna

Diagram krejčovské dílny

Provoz krejčovské dílny

Cíl: 100 košil

  • Nejlepší krejčí ušije košili za 20 minut
  • Ostatní krejčí ušijí košili za 1 hodinu

 

Více krejčích dohromady > nejlepší krejčí

Introduction to Data Engineering

Výhody paralelního výpočtu

  • Výpočetní výkon
  • Paměť: rozdělení datové sady

 

Čip RAM paměti: Obrázek čipu RAM paměti

Introduction to Data Engineering

Rizika paralelního výpočtu

Režie kvůli komunikaci

 

  • Úkol musí být dostatečně velký
  • Je třeba více procesorových jednotek

 

Paralelní zpomalení: Graf znázorňující paralelní zpomalení

Introduction to Data Engineering

Příklad

 

Diagram ilustrující příklad olympijských disciplín

Introduction to Data Engineering

multiprocessing.Pool

from multiprocessing import Pool

def take_mean_age(year_and_group): year, group = year_and_group return pd.DataFrame({"Age": group["Age"].mean()}, index=[year])
with Pool(4) as p: results = p.map(take_mean_age, athlete_events.groupby("Year"))
result_df = pd.concat(results)
Introduction to Data Engineering

dask

 

import dask.dataframe as dd

# Partition dataframe into 4 athlete_events_dask = dd.from_pandas(athlete_events, npartitions = 4)
# Run parallel computations on each partition result_df = athlete_events_dask.groupby('Year').Age.mean().compute()
Introduction to Data Engineering

Pojďme cvičit!

Introduction to Data Engineering

Preparing Video For Download...