Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica > システムインターフェースと配備 > 並列計算 > Parallelize >
Mathematica > コアとなる言語 > 調整とデバッグ > 並列計算 > Parallelize >

Parallelize

Updated In 8 Graphic
Parallelize[expr]
自動並列化を使って expr を評価する.
  • Parallelize[expr]expr の評価のさまざまな部分を使用可能な別々のカーネルとプロセッサに自動分配する.
  • Parallelize[expr]は,一般に,計算中の副産物を除き,expr の評価と同じ結果を返す.
  • Parallelizeは属性HoldFirstを持ち,式が並列化の前に計算されないようにする.
  • ParallelizeMethodオプションは,使用する並列化の方法を指定する.使用可能な設定値:
"CoarsestGrained"計算を使用可能なカーネルと同じ数に分割する
"FinestGrained"計算を分割可能な最小のサブユニットに分ける
"EvaluationsPerKernel"->e計算をカーネル当り最高で e 個の部分に分割する
"ItemsPerEvaluation"->m計算をそれぞれ最高で m 個のサブユニットの評価に分割する.
Automaticオーバーヘッドとロードバランス間の妥協を図る
  • Methodはどれもが同じ長さの時間がかかる多くのサブユニットを含む計算に適している.これはオーバーヘッドを最小化するが,ロードバランスはもたらさない.
  • Methodは評価時間の異なるいくつかのサブユニットを含む計算に適している.これを使うとオーバーヘッドは高くなるが,ロードバランスは最高になる.
  • ParallelizeDistributedContextsオプションは expr に現れるどの記号の定義を計算前に使用可能なすべてのカーネルに自動的に配布するか指定する.
  • デフォルト値はDistributedContexts:>$Contextで,これによると現行コンテキスト中のすべての記号の定義が配布されるが,パッケージからの記号の定義は配布されない.
関数を並列にマップする:
表を並列に生成する:
インタラクティブに定義された関数は直ちに並列計算に使うことができる:
関数を並列にマップする:
In[1]:=
Click for copyable input
Out[1]=
 
表を並列に生成する:
In[1]:=
Click for copyable input
Out[1]=
 
インタラクティブに定義された関数は直ちに並列計算に使うことができる:
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=
引数が1つのリスト可能な関数はすべて,リストに適用される場合は自動的に並列化される:
陰的に定義されたリスト:
リスト構造を保存する多くの関数型プログラミング構造は並列化できる:
結果が入力と同じ長さである必要はない:
関数がない場合,Parallelizeは単に要素を並列に評価する:
百万までの素数の数を数える:
93が最初の100の素数のリストの中にあるかどうか調べる:
リストに5が含まれていないかどうか確認する:
引数が明示的なListである必要はない:
内積は自動的に並列化される:
外積も自動的に並列化される:
反復子変数がある場合とない場合の表の並列評価:
配列を並列で生成する:
総和と積を並列評価する:
関数の評価は並列で行われる:
属性Flatを持つ関数は自動的に並列化される:
複数の引数を持つリスト可能な関数:
割当ての右辺だけが並列化される:
複合式の要素は次々に並列化される:
計算を可能な限り最小のサブユニットに分解する:
計算を使用可能なカーネル数に分割する:
1つのカーネルにつき最大で2つの評価になるようにジョブ全体の計算を分割する:
各評価の要素数が最高でも5つになるように計算を分割する:
デフォルトのオプション設定では評価のサイズと評価数のバランスが取られる:
ランタイムが大きく異なる計算はできるだけきめ細かく並列化しなければならない:
多数の簡単な計算は可能な限り少ないまとまりとして分配されるべきである:
デフォルトで,現行コンテキストの定義は自動的に配布される:
関数の定義は配布しない:
並列計算に現れるすべてのコンテキストのすべての記号の定義を配布する:
指定されたコンテキストの定義だけを配布する:
DistributedContextsオプションの値をデフォルトに戻す:
メルセンヌ(Mersenne)素数を検索する:
結果が求まるたびに現れるのを見る:
可視化の表全体を計算する:
極小値の範囲を並列で検索する:
最適のものを選ぶ:
共有関数を使って計時結果を生成されると同時に記録する:
計時結果付きの動的な棒グラフを設定する:
実行時間が大幅に異なる一連の計算を実行する:
データ並列関数に関しては,ParallelizeParallelCombineによって実装される:
並列によるスピードアップは所要時間が分かっている計算を行うことで確かめられる:
所要時間が分かっている多くのタスクを定義する:
一連のタスクの実行にかかる時間は個々のタスクの所要時間の合計である:
並列実行によるスピードアップを測る:
スケジューリングをきめ細かくするとロードバランスがよくなりスピードも速くなる:
最初に大きなタスクをスケジュールするとさらに結果がよくなる:
, , , から選んで算術式を形成する:
算術演算の各リストは簡単な計算を与える:
簡単に評価することができる:
0を与える算術演算のすべての列を求める:
対応する式を表示する:
インタラクティブに定義された関数は必要なときに自動的にすべてのカーネルに配布される:
手動で定義を配布し自動配布を無効にする:
パッケージからの関数の場合は,DistributeDefinitionsよりもParallelNeedsを使うとよい:
並列使用に適した乱数生成器を設定し各カーネルを初期化する:
並列化できない式は通常の方法で評価される:
並列にマップされている関数では副次効果は利用できない:
副次効果をサポートするために共有変数を使う:
使用可能なサブカーネルがない場合,結果はマスターカーネルで計算される:
使用された関数がまだ配布されていない場合でも,結果は正しく見えるかもしれない:
関数が配布された場合にのみ結果が使用可能な複数のカーネルで実際に計算される:
現行コンテキストの関数の定義は自動的に配布される:
デフォルトコンテキスト以外のコンテキストからの定義は自動的には配布されない:
そのような定義はDistributeDefinitionsを使って配布する:
すべてのコンテキストが含まれるようにDistributedContextsオプションを設定することもできる:
関数の定義を明示的に配布する:
定義を修正する:
修正された定義は自動的に配布される:
定義の自動配布を抑える:
サブカーネル上だけで定義された記号は自動的には配布されない:
$DistributedContextsの値はParallelizeでは使われない:
ParallelizeDistributedContextsオプションの値を設定する:
すべての設定をデフォルト値に戻す:
簡単な操作は並列化されるとより時間がかかることがある:
簡単ではないセルオートマトンを求まるたびに表示する:
バージョン 7 の新機能 | バージョン 8 での修正機能
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team
フォーマット:   HTML  |  CDF