ParallelTable

ParallelTable[expr,{imax}]

exprimax 個のコピーのリストを並列で生成する.

ParallelTable[expr,{i,imax}]

i1から imaxまでのとき,expr の値のリストを並列で生成する.

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

i=iminから始める.

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

刻み幅 di を使う.

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

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

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

ネストしたリストを与える.i に関連するリストは最も外側である.

詳細とオプション

  • ParallelTableexpr のさまざまな評価を別々のカーネルとプロセッサに自動的に分配するTableの並列版である.
  • ParallelTableは,評価中の副産物を除き,Tableと同じ結果を与える.
  • Parallelize[Table[expr,iter, ]]ParallelTable[expr,iter,]に等しい.
  • ParallelTable のインスタンスが並列化できない場合,そのインスタンスはTableを使って評価される.
  • 次は,使用可能なオプションである.
  • 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である.

例題

すべて開くすべて閉じる

  (6)

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

最初の10個の二乗の表:

i が0から20まで刻み幅2で並ぶ表:

4×3行列を作る:

表をプロットする:

長い計算のときは,進捗状況や計算終了までの推定時間についての情報が表示される:

スコープ  (5)

表の中の指標は逆方向に進んでもよい:

三角配列を作る:

3x2x4配列,あるいはテンソルを作る:

既存のリストを反復する:

既存のリストから配列を作る:

一般化と拡張  (1)

指標の表には記号値を入れることもできる:

オプション  (13)

Method  (6)

計算を可能な限り最小のサブユニットに分解する:

計算を使用可能なカーネル数に分割する:

1つのカーネルにつき最大で2つの評価になるようにジョブ全体の計算を分割する:

各評価の要素数が最高でも5つになるように計算を分割する:

デフォルトのオプション設定では評価のサイズと評価数のバランスが取られる:

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

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

DistributedContexts  (5)

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

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

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

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

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

ProgressReporting  (2)

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

Method"FinestGrained"を使って最も正確な進捗情報を得る:

アプリケーション  (5)

たくさんの初期条件のある微分方程式を解いてプロットし,結果のアニメーションを作る:

2つの空間次元で正弦Gordon方程式の異なるパラメータ値を調べてみる:

同じデータ集合に異なるアルゴリズムを適用する:

同じ画像に異なるフィルタのリストを適用し,結果を表示する:

効果のリストを適用することもできる:

アニメーションから10個のフレームを生成し,別々のファイルに保存する:

いくつかのバッチを並列で実行する:

それぞれが1つのフレームを返すので,正しいかどうかを別個に調べることができる:

生成されたファイルを削除する:

いくつかの簡単ではないセルオートマトンの評価を素早く示す:

特性と関係  (10)

並列化は最も外側(最初)の指標に沿って行われる:

複数の反復指定を使うことはTable関数をネストさせることに等しい:

ParallelDoは一連の式をParallelTableと同じように評価する:

ParallelSumは事実上ParallelTableからの結果にPlusを適用する:

ParallelArrayは連続する整数に反復的に適用される:

Mapはリスト中の連続する要素に関数を適用する:

Tableはリスト中の連続する要素を式に代入することができる:

与えられたリスト上で反復するParallelTableParallelCombineに等しい:

ParallelTableWaitAllParallelSubmitで実装することができる:

多次元の表の最も内側のレベルで並列化する:

インタラクティブに定義された関数は必要となったときに自動的にすべてのカーネルに配布される:

手動で定義を配布し自動配布を停止する:

パッケージからの関数にはDistributeDefinitionsではなくParallelNeedsを使うとよい:

考えられる問題  (3)

並列カーネルにとって未知の関数を使うと,評価が連続的に行われることがある:

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

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

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

現行コンテキスト以外のコンテキストからの定義は自動的には配布されない:

DistributeDefinitionsを使ってそのような定義を配布する:

あるいはすべてのコンテキストを含むようにDistributedContextsオプションを設定する:

簡単な操作は並列化することでより時間がかかることがある:

おもしろい例題  (2)

マンデルブロ(Mandelbrot)集合を可視化する:

ロジスティックマップのファイゲンバウム(Feigenbaum)図(すなわち分岐図)を計算し表示する:

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

テキスト

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

CMS

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

APA

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

BibTeX

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

BibLaTeX

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