Parallel Computing Toolbox

Parallel Computing Toolbox
マルチコア コンピューター、GPU、およびコンピューター クラスター上での並列処理の実行
Parallel Computing Toolbox™ では、マルチコア プロセッサ、GPU およびコンピューター クラスターを
使用して、計算量の多いデータ集約型の問題を解くことができます。並列 for ループ、専用の配列型、
並列数値アルゴリズムなどの高度な機能を使用して、CUDA や MPI のプログラミングを行うことな
く、MATLAB® アプリケーションを並列化できます。また、このツールボックスを Simulink® と併用す
れば、1 つのモデルの複数のシミュレーションを並列して実行することができます。
このツールボックスでは、ローカルで実行されるワーカー (MATLAB 計算エンジン) 上でアプリケーシ
ョンを実行することにより、マルチコア デスクトップの処理能力をフル活用できます。また、コード
を変更することなく、同一アプリケーションをコンピューター クラスターやグリッド コンピューティ
ング サービスで実行することが可能です (MATLAB Distributed Computing Server™ が必要)。並列アプリ
ケーションは、対話形式あるいはバッチ ジョブとして実行することもできます。
主な機能
▪ パラレル for ループ (parfor) によるマルチプロセッサでのタスク並列アルゴリズムの実行
▪ CUDA に対応した NVIDIA GPU のサポート
▪ ローカルで実行されるワーカーを使用してデスクトップのマルチコア プロセッサをフル活用
▪ コンピューター クラスターおよびグリッドコンピューティングのサポート (MATLAB Distributed
Computing Server を使用)
▪ 並列アプリケーションの対話型処理およびバッチ処理
▪ 大規模データ セットの処理とデータ並列アルゴリズムに対応する分散配列および spmd (single
program multiple data) 構文
1
MATLAB による並列処理Parallel Computing Toolbox では、最大 12 のワーカーを使用して、マルチコア デスクトッ
プ上でアプリケーションを実行することができます。また、GPU を利用したり、クラスターに拡張したりすること
もできます (MATLAB Distributed Computing Server が必要)。
プログラミング並列アプリケーション
Parallel Computing Toolbox には、マルチコア プロセッサや GPU を備えたコンピューターの利点を生か
せるようにアプリケーションを変換する高度なプログラミング機能が用意されています。分散処理や
GPU 演算に対応したパラレル for ループ (parfor) や特殊な配列型などの機能は、MATLAB セッシ
ョンと計算リソースとの間での処理やデータの複雑な管理を軽減し、並列コードの開発を容易にしま
す。
プログラムを作成し直すことなく、さまざまな計算リソースで同じアプリケーションを実行すること
ができます。この並列処理機能は、マルチコア デスクトップ (Parallel Computing Toolbox を使用) やコ
ンピューター クラスターなどの大規模リソース (Parallel Computing Toolbox と MATLAB Distributed
Computing Server を使用) など、アプリケーションを実行するリソースに関係なく同じように機能しま
す。
他の MathWorks 製品に組み込まれた並列アルゴリズムの使用
いくつかの MathWorks 製品の主要な関数には、並列アルゴリズムが組み込まれているものがありま
す。Parallel Computing Toolbox と共にこれらの関数を使用すると、使用可能な並列処理リソースに処理
を分散することができます。これにより、MATLAB/Simulink ベースの解析やシミュレーション作業だ
けでなく、大規模な Simulink モデルのコード生成も高速化することができます。これらの関数を利用
するために、並列コードを記述する必要はありません。
2
MathWorks 製品に組み込まれた並列アルゴリズムの使用。組込み並列アルゴリズムによって、MATLAB/Simulink
の処理だけでなく、Simulink モデルからのコード生成も高速化することができます。
タスク並列アプリケーションの高速化
一部のアプリケーションは、独立した複数のタスク (処理単位) に分割し、それらのタスクを同時に実
行することによって高速化することができます。このようなタスク並列アプリケーションには、設計
の最適化のシミュレーション、BER テスト、モンテカルロ シミュレーション、大量のデータ ファイル
での反復解析などがあります。
このツールボックスには、parallel for loop 構文 (parfor) が用意されており、独立したタスクを複数
の MATLAB ワーカー (デスクトップの MATLAB セッションとは独立して実行する MATLAB 計算エン
ジン) に自動的に分配できます。この構文は、自動的にワーカーを検知し、ワーカーが起動していない
場合は、通常の動作を行います。また、ツールボックスの task オブジェクトの操作などの別の方法
を使用してタスクの実行を設定することもできます。
3
タスク並列アプリケーションへの parallel for loop の利用。parallel for loop を MATLAB スクリプトと 関数に用
い、対話的にもオフラインでも実行できます。
GPU による MATLAB 演算の高速化
Parallel Computing Toolbox では GPUArray が利用できます。GPUArray は、MATLAB から直接 CUDA 対
応の NVIDIA GPU 上で処理を実行できる、複数の関連した関数に対応した特殊な配列型です。これら
の関数には、fft や要素単位の演算のほか、lu や mldivide (バックスラッシュ演算子 (\) とも呼ばれ
ます) などの線形代数演算などがあります。またこのツールボックスには、MATLAB から既存の
CUDA ベースの GPU カーネルを直接利用できるようにするメカニズムも用意されています。
MATLAB による GPU 演算に関する詳細を見る。
4
MATLAB による GPU 演算GPUArray と GPU 対応の MATLAB 関数を使用することで、低水準の CUDA プログラミ
ングを行うことなく、MATLAB 演算を高速化することができます。
MATLAB Distributed Computing Server を使用したクラスター、グリッド、クラウドへの拡張
Parallel Computing Toolbox では、最大 12 のワーカーを使用して、1 台のマルチコア コンピューター上
で並列アプリケーションをローカルに実行できます。Parallel Computing Toolbox と MATLAB Distributed
Computing Server を組み合わせて使用することにより、コンピューター クラスターやグリッドおよび
クラウド コンピューティング サービスなどの大規模なコンピューティング リソース上でさらに多くの
ワーカーを使用してアプリケーションを実行することができます。MATLAB Distributed Computing
Server は、対話型ワークフローとバッチ ワークフローの両方をサポートしています。
5
MATLAB Distributed Computing Server を使用したクラスター上での遺伝子調節モデルの実行。MATLAB Distributed
Computing Server では、Parallel Computing Toolbox を使用して開発されたアプリケーションでコンピューター ク
ラスターを利用して、大規模な問題に対応することができます。
Parallel Computing Toolbox と MATLAB Distributed Computing Server によるデータ並列ア
プリケーションの実装
Parallel Computing Toolbox の分散配列は、デスクトップ コンピューターのメモリ (RAM) で保持できる
データの数倍のデータ量を保持する特殊な配列です分散配列では、コンピューター クラスター上で実
行される複数の MATLAB ワーカー プロセスにデータが割り当てられます (MATLAB Distributed
Computing Server が必要)。このため、分散配列を使用すれば、デスクトップ コンピューターのメモリ
の制約を受けることなく、大規模な行列の処理が必要な問題を解くことができます。
分散配列では 150 を超える関数を使用できるため、低水準の MPI プログラミングを行うことなく、
MATLAB 配列と同じようにこれらの配列を使用し、ワーカー上のデータをリモートから操作すること
が可能です。使用できる関数には、mldivide (バックスラッシュ演算子 (\) とも呼ばれま
す)、lu、chol などの ScaLAPACK に基づく線形代数ルーチンのほか、分散データの MAT ファイルへ
の書き出しや MAT ファイルからの読み込みを行うための関数などがあります。
このツールボックスには、並列化の構成をきめ細かく制御できるように、spmd (Single Program
Multiple Data) 構文と、MPI 標準ライブラリ (MPICH2) に準拠したメッセージパッシング ルーチンが用
意されています。spmd 構文を使用すれば、並列処理に参加しているワーカーで同時に実行するコード
のセクションを指定することができます。プログラムの実行中には、spmd 構文によってデータとコー
ドが自動的にワーカーに転送され、処理が完了すると MATLAB クライアント セッションに結果が返さ
れます。send、receive、broadcast、barrier、probe の処理に対応したメッセージパッシング機能が使用
できます。
6
分散配列を使用したプログラミングの例。分散配列や並列アルゴリズムにより、MPI を用いたプログラミングを行
わずに最小限のコードの変更で、並列 MATLAB プログラムを作成することができます。
対話形式およびバッチ ジョブとしての並列アプリケーションの実行
Parallel Computing Toolbox では、並列アプリケーションを対話形式およびバッチ ジョブとして実行で
きます。matlabpool コマンドを使用すれば、ユーザーの MATLAB セッションを、ローカルのデスク
トップ (Parallel Computing Toolbox を使用) またはコンピューター クラスター (MATLAB Distributed
Computing Server を使用) 上のいずれかで稼働する MATLAB ワーカー プールに接続して、専用の対話
的な並列実行環境をセットアップすることができます。任意の MATLAB セッションから、これらのワ
ーカー上で MATLAB プロンプトから並列アプリケーションを実行し、処理が終了次第、結果を受け取
ることができます。
対話形式でのアプリケーションの実行は、実行時間が比較的短い場合に適しています。アプリケーシ
ョンの実行に時間がかかる場合には、Parallel Computing Toolbox を使用してバッチ ジョブとして実行
するように実行環境をセットアップすることができます。これにより、大規模な MATLAB/Simulink ア
プリケーションの実行中でも、ユーザーの MATLAB セッションを他の処理に使用できるようになりま
す。
アプリケーションをバッチ ジョブとして実行する際には、ユーザーの MATLAB セッションをシャット
ダウンして、後から結果を取得できます。このツールボックスには、関数 batch や、job オブジェク
ト、task オブジェクトなど、並列プログラムのオフライン実行を管理するためのメカニズムが用意さ
れています。関数 batch や、job オブジェクトおよび task オブジェクトを使用すれば、デスクトッ
プの MATLAB セッションから、通常の MATLAB/Simulink アプリケーションを実行する負荷をオフロ
ードすることができます。
7
対話形式およびバッチ ジョブとしての並列アプリケーションの実行。Parallel Computing Toolbox を使用すると、
最大 12 のワーカーを使用してユーザーのワークステーション上でアプリケーションを実行できます。また、
MATLAB Distributed Computing Server では、さらに多くのワーカーを使用してコンピューター クラスター上でアプ
リケーションを実行することが可能です。
リソース
製品詳細、例、および動作環境
www.mathworks.com/products/parallel-computing
オンライン ユーザー コミュニティ
www.mathworks.com/matlabcentral
評価版ソフトウェア
www.mathworks.com/trialrequest
技術トレーニング サービス
www.mathworks.com/training
営業窓口
www.mathworks.com/contactsales
サードパーティ製品とサービス
www.mathworks.com/connections
テクニカル サポート
www.mathworks.com/support
世界各地のお問い合わせ先
www.mathworks.com/contact
© 2014 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarks
for a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders.
8