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

SetSharedFunction

SetSharedFunction
シンボル を,下向きの値がすべての並列カーネルで同期される共通関数として宣言する.
  • 任意のカーネルで定義される共通関数の下向きの値は,マスターカーネルで保持されており,並列サブカーネルへのアクセスはすべてマスターカーネルを通して同期される.
  • 評価されない の形の式はNullを返す.
fs を(大域的な)共有関数にする:
各サブカーネルが同じ共有変数の定義を行う:
共有しないと,各サブカーネルがそれ自身の(局所的な)関数のコピーを持つことになる:
fs を(大域的な)共有関数にする:
In[1]:=
Click for copyable input
各サブカーネルが同じ共有変数の定義を行う:
In[2]:=
Click for copyable input
Out[2]=
In[3]:=
Click for copyable input
Out[3]=
共有しないと,各サブカーネルがそれ自身の(局所的な)関数のコピーを持つことになる:
In[4]:=
Click for copyable input
Out[4]=
In[5]:=
Click for copyable input
Out[5]=
関数を定義し共有にする:
各サブカーネルから呼ばれると,関数はマスターカーネルで next を更新する:
デフォルトの規則を使って共有関数を設定する:
サブカーネルについて追加の定義を行う:
この関数は共有されているので,マスターカーネルも追加の規則について認識している:
指標付きのデフォルト値を持った共有変数を保持する:
局所変数 results がマスターカーネルで操作できるように共有関数を定義する:
サブカーネルから関数を呼ぶ:
マスターカーネル上の変数が変更された:
マスターカーネル上の共有関数の遅延的定義:
このような定義は,どのカーネルがこれを評価しようとも,常にマスターカーネルで評価される:
並列カーネルで行われた共有関数の定義:
このような定義は常にその値を求めているカーネルで評価される:
共有関数は同期に使うことができる:
共有変数と危険域を使う方法では効率が低下する:
簡単な待ち行列データ型のコンストラクタ:
2つの共有待ち行列を作る:
入力待ち行列を埋める:
入力待ち行列内の要素を並列で処理し,結果を出力待ち行列に入れる:
単一の共有関数を使って入力と結果の両方を伝達する:
検索を設定し手動で放棄されるまで進行状況を表示する:
ここまでの結果,の因数の数のリスト:
共有関数は単なるコードの配布には効率的ではなく,連続評価の原因となる:
並列カーネルに必要な任意の関数定義を単に配布する:
共有変数上の別々の読み書き操作はスレッドセーフではない:
共有関数を使って(共有ではない)変数へのアクセスを同期する:
あるいはCriticalSectionを使ってコードセクション全体を原子的にする:
並列の動的プログラミング:
Sowの並列版:
バージョン 7 の新機能
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team
フォーマット:   HTML  |  CDF