0Pricing
Mojo Academy · レッスン

処理のチャンク分割

負荷が均等になるよう範囲を分割します

「処理のチャンク分割」はCoddyKit上の無料Mojo Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはMojo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Mojo Academyコースには全4レッスンが含まれています。

なぜチャンクに分けるのか

要素ごとにスレッドを起動するのは非効率です。代わりに、範囲をいくつかの大きなチャンクに分け、各ワーカーに1つずつ割り当てます。

チャンクはスライス

各チャンクは、0から99や100から199のような、インデックスの連続したスライスです。1つのワーカーが1つのスライスを担当します。

チャンク数を選ぶ

一般的には、コアごとに1つのチャンクを割り当てます。num_physical_coresを使って、その数をマシンに問い合わせます。

var workers = num_physical_cores()

チャンクサイズを計算する

全体の長さをワーカー数で割ると、各ワーカーが処理する項目数を求められます。

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

チャンクの開始位置を求める

処理関数内では、チャンクのインデックスから開始位置がわかります。その値にチャンクのサイズを掛けます。

var start = c * chunk

末尾を制限する

最後のチャンクはデータの範囲を超える場合があるため、範囲内に収まるよう、minで末尾を全体の長さに制限します。

var end = min(start + chunk, n)

チャンク内をループする

各ワーカーは、自分の範囲だけを通常のループで処理します。チャンク内では、通常のコードを実行します。

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

チャンクに対してparallelizeを使う

ここでは、要素数ではなくチャンク数を指定してparallelizeを呼び出します。各呼び出しが1つのチャンク全体を処理します。

parallelize[do_chunk](workers)

負荷を分散する

同じ大きさのチャンクにすると、すべてのコアを均等に使えます。1つのチャンクだけが大幅に大きいと、そのワーカーの完了が遅くなります。

コア数より多くのチャンクを使う

項目によって処理コストが異なる場合は、より多くの小さなチャンクを使うと、処理の速いワーカーが追加の仕事を引き受け、稼働し続けられます。

測定して調整する

最適なチャンク数は、データとマシンによって異なります。いくつかのサイズを試し、ベンチマークで最もよい結果になったものを選びます。

簡単な確認

長さnの配列を、ワーカーごとに1つのチャンクへ分割します。

まとめ

範囲をバランスの取れたチャンクに分け、各末尾をminで制限し、チャンク内をループします。そしてチャンク数を指定してparallelizeを呼び出し、負荷を均等にします。 🚀

よくある質問

「処理のチャンク分割」レッスンは無料ですか?

はい。「処理のチャンク分割」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Mojo Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Mojo Academyコースには全4レッスンが含まれています。

「処理のチャンク分割」で何を学びますか?

負荷が均等になるよう範囲を分割します ブラウザで直接実行するハンズオンコードでMojo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Mojo Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのMojo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「処理のチャンク分割」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このMojo Academyレッスンでコードを書いて実行できますか?

はい。すべてのMojo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. parallelize関数
  2. 処理のチャンク分割
  3. 並列処理とベクトル処理の組み合わせ
  4. データ競合の回避
← Mojo Academyに戻る