WOLFRAM

レガシー

Wolfram言語の並列計算機能は, Mathematica バージョン6まで利用できた Parallel Computing Toolkit に代るものである.「はじめに」で述べているように,この新機能には多くの利点があり,並列計算の使用を促進する手助けとなる.このセクションでは,Parallel Computing Toolkit のユーザのための変換方法を説明する.

並列計算の主な関数はすべてSystem`コンテキストのシンボルになっており,名前が変更された関数もあれば,新しく機能が加わったものもある.このような変更により起り得る問題を解決するため,レガシーパッケージが提供されている.

レガシーパッケージ

このレガシーパッケージは,Parallel Computing Toolkit バージョン2.1に含まれていた関数に対するサポートを加える.これは下に示すようにロードすることができる.パッケージをロードする際のシャドーイングの警告は,互換性のない変更点を知らせるために意図されたものである.

レガシーパッケージをロードする.
In[66]:=
Click for copyable input
Parallel Computing Toolkit で行ったのと同じようにカーネルを起動する.
In[3]:=
Click for copyable input
Out[3]=
これでRemoteEvaluate等のコマンドを使うと,動作する.
In[4]:=
Click for copyable input
Out[4]=
レガシーパッケージは$ContextPathに多数のコンテキストを加え,以前利用できた関数すべてに簡単にアクセスできるようにする.
In[22]:=
Click for copyable input
Out[22]=
多数の低レベル関数が別のコンテキストParallel`Developer`にある.
In[6]:=
Click for copyable input

Parallel`V2`をロードすると,互換性のある関数がすべて見付かるようにParallel`Developer`コンテキストが自動的に$ContextPathに置かれる.Parallel`V2`をロードしなかったら,これは自動的には起らない.

より低レベルの並列関数にアクセスする.
Click for copyable input

名前の変更

以下の表は名前が変更された関数のリストである.

古い名前新しい名前
LaunchSlavesLaunchKernels
LaunchSlaveLaunchKernels
ConnectSlaveParallel`Developer`LaunchKernel
ResetSlavesAbortKernels
ClearSlavesParallel`Developer`ClearKernels
CloseSlavesCloseKernels
$SlavesKernels[]
RemoteEvaluateParallelEvaluate
ParallelEvaluateParallelCombine, Parallelize
RemoteNeedsParallelNeeds
ExportEnvironmentDistributeDefinitions
WaitOneWaitNext
WaitWaitAll
QueueParallelSubmit
SharedVariablesSetSharedVariable
SharedDownValuesSetSharedFunction
$SharedDownValues$SharedFunctions
ClearSharedUnsetShared
$ProcessorID$KernelID

Parallel Computing Toolkit のレガシー名とそれに相当する現在の名前のリスト

不明瞭な点

ParallelEvaluateで提供されてきた機能は2つの関数ParallelCombineParallelizeに分割された.ParallelEvaluateは使い方によっては不明瞭で,正しい形式を選ぶのが可能ではないことがある.

ParallelEvaluateの引数が2つ,および3つの形式は,新しいParallelCombineのインスタンスであると解釈される.
In[18]:=
Click for copyable input
Out[18]=
In[7]:=
Click for copyable input
Out[7]=
引数が1つの場合は不明瞭である.ここでは新しいParallelizeであるとして扱われる.
In[20]:=
Click for copyable input
Out[20]=
In[8]:=
Click for copyable input
Out[8]=
Parallelizeによって扱われない場合,これはデフォルト関数Identityを伴ったParallelCombineのインスタンスであると判断される.
In[21]:=
Click for copyable input
Out[21]=
In[9]:=
Click for copyable input
Out[9]=

サポートされていない機能

$LoadFactorのより高い値は,現在利用できるようになっている仮想共有メモリと相容れないため,サポートされなくなった.

カーネルの設定

Parallel Computing Toolkit ではローカルカーネルの起動と,適切なOSコマンド(リモートログイン)でのリモートカーネルの起動がサポートされていた.

$RemoteCommandは互換性のためにサポートされている.
In[5]:=
Click for copyable input
Out[5]=

Mathematica 7では,使用するカーネルの設定は「評価」メニューから選べる並列環境設定を使うと最も簡単に行える.レガシーパッケージは既存の設定をサポートすることを試みるが,すべてのインスタンスでうまくいく訳ではない.

Mathematica 7はコンピュータにいくつのプロセッサコアがあるかを知っている.
In[67]:=
Click for copyable input
Out[67]=
レガシーパッケージはこの情報を使って計算コアと同じ数のカーネルを使うデフォルトの設定を提供する.
In[68]:=
Click for copyable input
Out[68]=