ParallelDo

ParallelDo[expr,{imax}]

exprimax回並列評価する.

ParallelDo[expr,{i,imax}]

1から imaxまでの値を(刻み幅1で)連続して取る変数 iexpr を並列評価する.

ParallelDo[expr,{i,imin,imax}]

i=iminから始める.

ParallelDo[expr,{i,imin,imax,di}]

刻み幅 di を使う.

ParallelDo[expr,{i,{i1,i2,}}]

連続する値 i1, i2, を使う.

ParallelDo[expr,{i,imin,imax},{j,jmin,jmax},]

i について j 等の異なる値上で並列にループして expr を評価する.

詳細とオプション

  • ParallelDoDoの並列版で,expr の異なる評価を異なるカーネルとプロセッサ間に自動的に分配する.
  • 副次的作用が共有されていない変数を含む場合,その変数は一般にDoにおけるのとは異なる動きをする.
  • Parallelize[Do[expr,iter, ]]ParallelDo[expr,iter,]に等しい.
  • 次は,使用可能なオプションである.
  • Method Automatic並列化の粒度
    DistributedContexts $DistributedContexts並列計算にシンボルを分配するために使われるコンテキスト
    ProgressReporting $ProgressReporting計算の進捗報告を行うかどうか
  • Methodオプションは使用する並列化の方法を指定する.次は,その可能な設定である.
  • "CoarsestGrained"計算を使用可能なカーネル数まで分割する
    "FinestGrained"計算を可能な最小サブユニットまで分割する
    "EvaluationsPerKernel"->e計算をカーネルごとに最高で e 個まで分割する
    "ItemsPerEvaluation"->m計算をそれぞれ最大 m 個のサブユニットの評価に分割する
    Automaticオーバーヘッドと負荷分散の間で妥協する
  • Method->"CoarsestGrained"は多くのサブユニットを含みそれぞれの時間量が等しい計算に適している.オーバーヘッドは最小になるが負荷分散は提供しない.
  • Method->"FinestGrained"はサブユニット数が少ないがそれぞれの時間が異なる計算に適している.オーバーヘッドは高くなるが負荷分散が最大になる.
  • DistributedContextsオプションは expr 中のどのシンボルの定義を計算前に自動的に使用可能な全カーネルに配布するかを指定する.
  • デフォルト値はDistributedContexts:>$DistributedContexts$DistributedContexts:=$Contextであり,現行コンテキスト内の全シンボルの定義が配布されるが,パッケージからのシンボルの定義は配布されない.
  • ProgressReportingオプションは並列計算の進捗報告をするかどうかを指定する.
  • デフォルト値はProgressReporting:>$ProgressReportingである.

例題

すべて開くすべて閉じる

  (3)

ParallelDoは,並列である点を除いてDoと同じように働く:

ParallelDoは結果を返さない:

共有変数を使って求まった結果をマスターカーネルに伝える:

オプション  (9)

Method  (2)

ランタイムが大きく異なる計算はできるだけきめ細かく並列化しなければならない:

多数の簡単な計算は可能な限り少ないまとまりとして分配されるべきである:

DistributedContexts  (5)

デフォルトで,現行コンテキストの定義は自動的に配布される:

関数の定義を配布しない:

並列計算のすべてのコンテキストのすべての記号の定義を配布する:

指定されたコンテキストの定義だけを配布する:

DistributedContextsオプションの値をデフォルトに戻す:

ProgressReporting  (2)

一時的な進捗報告は表示しない:

Method"FinestGrained"を使って最も正確な進捗報告を行う:

アプリケーション  (1)

アニメーションのフレームをたくさん生成し,それらを個々のファイルに保存する:

ファイルを5つおきにインポートして表示する:

特性と関係  (2)

ParallelDoParallelTableと同じ反復を行うが,値は返さない:

並列化は最も外側(最初)のインデックスに沿って起る:

考えられる問題  (2)

並列カーネルにとって未知である関数は使っても影響しない:

関数をすべての並列カーネルに対して定義する:

これで,この関数が並列カーネルで評価されるようになった:

現行コンテキストの関数定義は自動的に配布される:

副次的な効果は個々の並列カーネルについて局所的である:

共有変数を使って大域的な副次効果をサポートする:

Wolfram Research (2008), ParallelDo, Wolfram言語関数, https://reference.wolfram.com/language/ref/ParallelDo.html (2021年に更新).

テキスト

Wolfram Research (2008), ParallelDo, Wolfram言語関数, https://reference.wolfram.com/language/ref/ParallelDo.html (2021年に更新).

CMS

Wolfram Language. 2008. "ParallelDo." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/ParallelDo.html.

APA

Wolfram Language. (2008). ParallelDo. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ParallelDo.html

BibTeX

@misc{reference.wolfram_2024_paralleldo, author="Wolfram Research", title="{ParallelDo}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/ParallelDo.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_paralleldo, organization={Wolfram Research}, title={ParallelDo}, year={2021}, url={https://reference.wolfram.com/language/ref/ParallelDo.html}, note=[Accessed: 17-November-2024 ]}