Ce este calculul paralel

Introducere în Data Engineering

Vincent Vankrunkelsven

Data Engineer @ DataCamp

Ideea din spatele calculului paralel

Baza instrumentelor moderne de procesare a datelor

  • Memorie
  • Putere de procesare

Idee

  • Împărțiți sarcina în subsarcini
  • Distribuiți subsarcinile pe mai multe calculatoare
  • Lucrați împreună pentru finalizarea sarcinii

Diagramă a sarcinii împărțite în subsarcini

Introducere în Data Engineering

Croitoria

Diagramă reprezentând croitoria

Conducerea unui atelier de croitorie

Obiectiv: 100 de cămăși

  • Cel mai bun croitor termină o cămașă în 20 de minute
  • Ceilalți croitori termină o cămașă în 1 oră

 

Mai mulți croitori împreună > cel mai bun croitor

Introducere în Data Engineering

Beneficiile calculului paralel

  • Putere de procesare
  • Memorie: partiționarea setului de date

 

Cip de memorie RAM: Imagine a unui cip de memorie RAM

Introducere în Data Engineering

Riscuri ale calculului paralel

Suprasarcină datorată comunicării

 

  • Sarcina trebuie să fie mare
  • Sunt necesare mai multe unități de procesare

 

Încetinire paralelă: Grafic care ilustrează încetinirea paralelă

Introducere în Data Engineering

Un exemplu

 

Diagramă ilustrând exemplul cu evenimentele olimpice

Introducere în 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)
Introducere în 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()
Introducere în Data Engineering

Să exersăm!

Introducere în Data Engineering

Preparing Video For Download...