ParallelTable
ParallelTable[expr,{imax}]
expr の imax 個のコピーのリストを並列で生成する.
ParallelTable[expr,{i,imax}]
i が1から 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 に関連するリストは最も外側である.
詳細とオプション
- ParallelTableは expr のさまざまな評価を別々のカーネルとプロセッサに自動的に分配する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と同じように働く:
オプション (13)
Method (6)
DistributedContexts (5)
並列計算に現れるすべてのコンテキストのすべての記号の定義を配布する:
DistributedContextsオプションの値をデフォルト値に戻す:
ProgressReporting (2)
アプリケーション (5)
特性と関係 (10)
複数の反復指定を使うことはTable関数をネストさせることに等しい:
ParallelDoは一連の式をParallelTableと同じように評価する:
ParallelSumは事実上ParallelTableからの結果にPlusを適用する:
ParallelArrayは連続する整数に反復的に適用される:
Mapはリスト中の連続する要素に関数を適用する:
Tableはリスト中の連続する要素を式に代入することができる:
与えられたリスト上で反復するParallelTableはParallelCombineに等しい:
ParallelTableはWaitAllとParallelSubmitで実装することができる:
インタラクティブに定義された関数は必要となったときに自動的にすべてのカーネルに配布される:
パッケージからの関数にはDistributeDefinitionsではなくParallelNeedsを使うとよい:
考えられる問題 (3)
並列カーネルにとって未知の関数を使うと,評価が連続的に行われることがある:
現行コンテキスト以外のコンテキストからの定義は自動的には配布されない:
DistributeDefinitionsを使ってそのような定義を配布する:
あるいはすべてのコンテキストを含むようにDistributedContextsオプションを設定する:
テキスト
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