米The MathWorks(マスワークス)社は2008年7月3日、報道機関に向けた説明会を開催し、主力製品であるソフトウエア・ツール「MATLAB」における並列計算への対応状況を説明した。2008年3月に出荷を始めた最新版「2008a」では、並列計算をユーザーが容易に利用できるようにすることを狙った改良を2つ施したという。「複数のコンピュータを接続して同時並行処理するクラスタリング・システムの普及が進む一方で、そのハードウエア性能を引き出すソフトウエア手法は十分に整備されていない。科学技術分野でも並列処理による演算性能向上のために、簡単に処理を並列化できるツールが求められている。そこでMATLABには、簡単に並列処理化する機能を用意した」(同社でMATLABのマーケティング・ディレクタを務めるLisa Kemper氏)。
同ツールはエレクトロニクス分野では、制御/信号処理/画像処理などのアルゴリズム開発に使われており、MATLABで開発したアルゴリズムをDSPやマイコンにソフトウエアとして実装したり、FPGAやASICにハードウエアとして実装したりする手法が普及している。並列計算を導入すれば、従来は多大な時間を要していた処理を短時間で実行可能だ。デジタル通信システムや画像処理アルゴリズムの開発・検証のほか、膨大な量の測定データを解析する車載制御装置の開発などを効率化できるという。
同社は2005年に、ネットワーク接続した複数のコンピュータにタスクを分散させて実行するアドオン・モジュール「Distributed Computing Toolbox / Distributed Computing Engine」を投入した。ただしこの時点ではユーザーが明示的に並列化コードを記述する必要があった。2008a版では並列化のための命令をあらかじめ用意したので、処理を簡単に並列化できる。なおこうした機能拡張を施したことから、2008a版ではアドオン・モジュールの名称を「Parallel Computing Toolbox / Distributed Computing Server」に変更した。
新たに搭載した機能はいずれも、複数の処理単位(タスク)をそれぞれ異なるコンピュータに割り当てて同時並行処理することで実行速度を高める、いわゆるタスク並列化を支援するものだ。1つ目は、繰り返し処理を自動的に並列化して実行する機能である。具体的には、繰り返しループ(forループ)内に記述されたタスクを並列化する。従来の「for〜end」命令の代わりに「parfor〜end」命令を使う。既存のMATLABコードを使う場合は、「for」を「parfor」に書き換えるだけで並列化可能だ。すなわち、並列処理に利用するコンピュータの数をユーザーが明示的に記述する必要はない。クラスタを構成するコンピュータの台数に応じて、MATLABが自動的に判断してタスクを割り当てる仕組みである。
マルチコア・プロセッサや、複数のプロセッサ・チップを搭載した単一のコンピュータを使う場合も、プロセッサ・コアやプロセッサ・チップの個数に応じた並列計算が可能だ。プロセッサが1個しか利用できない場合でも、並列化せずに逐次処理によって実行するため、エラーになることはない。
例えば、モンテカルロ法を使って確率分布を求める際に、まったく同じ処理を特定の回数だけ試行するループにparforを適用すれば、利用可能なプロセッサに試行回数を等分して処理できる。「デュアルコア・プロセッサを搭載したパソコンを使えば、実行時間をほぼ1/2に短縮できる」(同氏)という。ただし、ネットワークを介して接続した複数のパソコンを使うなど通信処理のオーバーヘッドが大きい場合や、並列化しにくい処理を含む場合は、プロセッサの個数を増やしても処理時間は必ずしも等比的に短くならないため注意が必要である。
2つ目は、最適化問題に対応するオプションの関数ライブラリ「Optimization Toolbox」において、制約付き非線形多変数関数の最小値を求める「fmincon」など、複数の関数の処理を並列化したことである。関数を呼び出す際に、「UseParallel」というパラメータを渡せばよい。従来版では、「ユーザーが手作業で並列処理を記述する必要があった」(同氏)という。
ライセンス価格は、Parallel Computing Toolboxが17万1000円、Distributed Computing Serverが並列実行可能なMATLABのセッション数によって異なり、102万1000円からである。
Copyright © ITmedia, Inc. All Rights Reserved.