Mojo Academy · Lekcja

Dzielenie pracy na fragmenty

Podziel zakres, aby równomiernie rozłożyć obciążenie.

Lekcja 2 z 413 kroki

Dzielenie pracy na fragmenty to bezpłatna lekcja Mojo Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Mojo Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Mojo Academy zawiera 4 lekcji w sumie.

Po co w ogóle dzielić na fragmenty

Uruchamianie wątku dla każdego elementu jest nieefektywne. Zamiast tego należy podzielić zakres na kilka większych fragmentów, po jednym na pracownika.

Fragment to wycinek

Każdy fragment jest po prostu ciągłym wycinkiem indeksów, na przykład od 0 do 99 albo od 100 do 199. Jeden pracownik odpowiada za jeden wycinek.

Wybierz liczbę fragmentów

Typowym wyborem jest jeden fragment na rdzeń. Tę liczbę można pobrać z komputera za pomocą num_physical_cores.

var workers = num_physical_cores()

Oblicz rozmiar fragmentu

Podziel całkowitą długość przez liczbę pracowników, aby określić, ile elementów powinien obsłużyć każdy pracownik.

var chunk = (n + workers - 1) // workers

Znajdź początek fragmentu

W funkcji roboczej indeks fragmentu wskazuje miejsce rozpoczęcia. Pomnóż go przez rozmiar fragmentu.

var start = c * chunk

Ogranicz koniec

Ostatni fragment może wykraczać poza dane, dlatego ogranicz jego koniec do całkowitej długości za pomocą min, aby pozostać w zakresie.

var end = min(start + chunk, n)

Wykonaj pętlę wewnątrz fragmentu

Każdy pracownik wykonuje zwykłą pętlę tylko w swoim zakresie. Wewnątrz fragmentu jest to zwykły, prosty kod.

for i in range(start, end):
    out[i] = heavy(i)

parallelize po fragmentach

Teraz wywołaj parallelize z liczbą fragmentów, a nie elementów. Każde wywołanie przetwarza cały fragment.

parallelize[do_chunk](workers)

Zrównoważ obciążenie

Fragmenty o jednakowym rozmiarze zapewniają równomierne obciążenie wszystkich rdzeni. Jeśli jeden fragment jest znacznie większy, jego pracownik zakończy pracę później.

Więcej fragmentów niż rdzeni

Gdy przetwarzanie niektórych elementów kosztuje więcej, użycie większej liczby mniejszych fragmentów pozwala szybszym pracownikom przejmować dodatkową pracę i pozostawać zajętymi.

Dostrój, wykonując pomiary

Najlepsza liczba fragmentów zależy od danych i komputera. Wypróbuj kilka wartości i zachowaj tę, która daje najlepszy wynik w benchmarku.

Szybkie sprawdzenie

Dzielisz tablicę o długości n na jeden fragment przypadający na pracownika.

Podsumowanie

Dzielisz zakres na zrównoważone fragmenty, ograniczasz koniec każdego za pomocą min, wykonujesz pętlę wewnątrz fragmentu i wywołujesz parallelize z liczbą fragmentów, aby równomiernie rozłożyć obciążenie. 🚀

Bezpłatny start

Ucz się Mojo dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Dzielenie pracy na fragmenty” jest bezpłatna?

Tak — pełny tekst „Dzielenie pracy na fragmenty” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Mojo Academy, przejdź na CoddyKit PRO. Kurs Mojo Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Dzielenie pracy na fragmenty”?

Podziel zakres, aby równomiernie rozłożyć obciążenie. Ćwiczysz Mojo Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Mojo Academy?

Nie wymagamy żadnego doświadczenia. Mojo Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Dzielenie pracy na fragmenty”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Mojo Academy?

Tak. Każda lekcja Mojo Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Funkcja parallelize
  2. Dzielenie pracy na fragmenty
  3. Łączenie równoległości i wektorów
  4. Unikanie wyścigów danych
← Powrót do Mojo Academy