Array Dask

Pemrograman Paralel dengan Dask di Python

James Fulton

Climate informatics researcher

Memecah array menjadi chunk

Menampilkan sebuah array sebagai satu kesatuan

Pemrograman Paralel dengan Dask di Python

Memecah array menjadi chunk

Menampilkan sebuah array yang dipecah menjadi beberapa chunk

Pemrograman Paralel dengan Dask di Python

Array NumPy vs. Dask

Menampilkan sebuah array sebagai satu kesatuan

import numpy as np

x = np.ones((4000, 6000))
print(x.sum())
24000000.0
  • Butuh 740 milidetik untuk berjalan

Menampilkan sebuah array yang dipecah menjadi beberapa chunk

import dask.array as da

x = da.ones((4000, 6000), chunks=(1000,2000))
print(x.sum().compute())
24000000.0
  • Butuh 60 milidetik untuk berjalan
Pemrograman Paralel dengan Dask di Python

Grafik tugas array Dask

Menampilkan bagaimana cabang grafik tugas bertemu untuk memberi jawaban akhir.

Pemrograman Paralel dengan Dask di Python

Metode array Dask

Array Dask memiliki hampir semua metode yang dimiliki array NumPy.

  • x.max()
  • x.min()
  • x.sum()
  • x.mean()
  • dll.
print(sum_down_columns.compute())
array([1000., 1000., 1000., 1000., 
    1000., 1000., 1000., 1000., 1000.,
    1000.])
Pemrograman Paralel dengan Dask di Python

Memperlakukan array Dask seperti array NumPy

# Operasi matematika malas dengan array Dask
y1 = x**2 + 2*x + 1

# Lazy slicing
y2 = x[:10]

# Menerapkan fungsi NumPy juga bersifat lazy
y3 = np.sin(x)
print(y1)
dask.array<add, shape=(1000, 10), ...
print(y2)
dask.array<getitem, shape=(10, 10), ...
print(y3)
dask.array<sin, shape=(1000, 10), ...
Pemrograman Paralel dengan Dask di Python

Memuat array gambar

import dask.array as da

import da.image
image_array = da.image.imread('images/*.png')
print(image_array)
dask.array<imread, shape=(40000, 256, 256, 3), dtype=uint8, 
    chunksize=(1, 256, 256, 3), chunktype=numpy.ndarray>
Pemrograman Paralel dengan Dask di Python

Menerapkan fungsi kustom per chunk

def instagram_filter(image):
    ...
    return pretty_image

# Terapkan fungsi ke tiap gambar secara independen pretty_image_array = image_array.map_blocks(instagram_filter)
print(pretty_image_array)
dask.array<instagram_filter, shape=(40000, 256, 256, 3), dtype=uint8, 
    chunksize=(1, 256, 256, 3), chunktype=numpy.ndarray>
Pemrograman Paralel dengan Dask di Python

Ayo berlatih!

Pemrograman Paralel dengan Dask di Python

Preparing Video For Download...