Parallel Computing Toolbox

主な機能

  • パラレル for ループ (parfor) によるマルチプロセッサでのタスク並列アルゴリズムの実行
  • CUDA に対応した NVIDIA GPU のサポート
  • ローカルで実行されるワーカーを使用してデスクトップのマルチコア プロセッサをフル活用
  • コンピューター クラスターおよびグリッドコンピューティングのサポート (MATLAB Distributed Computing Server を使用)
  • 並列アプリケーションの対話型処理およびバッチ処理
  • 大規模データ セットの処理とデータ並列アルゴリズムに対応する分散配列および spmd (single program multiple data) 構文
Parallel Computing with MATLAB.
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 モデルのコード生成も高速化することができます。これらの関数を利用するために、並列コードを記述する必要はありません。

Using built-in parallel algorithms in MathWorks products.
MathWorks 製品に組み込まれた並列アルゴリズムの使用。組込み並列アルゴリズムによって、MATLAB/Simulink の処理だけでなく、Simulink モデルからのコード生成も高速化することができます。

タスク並列アプリケーションの高速化

一部のアプリケーションは、独立した複数のタスク (処理単位) に分割し、それらのタスクを同時に実行することによって高速化することができます。このようなタスク並列アプリケーションには、設計の最適化のシミュレーション、BER テスト、モンテカルロ シミュレーション、大量のデータ ファイルでの反復解析などがあります。

このツールボックスには、parallel for loop 構文 (parfor) が用意されており、独立したタスクを複数の MATLAB ワーカー (デスクトップの MATLAB セッションとは独立して実行する MATLAB 計算エンジン) に自動的に分配できます。この構文は、自動的にワーカーを検知し、ワーカーが起動していない場合は、通常の動作を行います。また、ツールボックスの task オブジェクトの操作などの別の方法を使用してタスクの実行を設定することもできます。

Using parallel for-loops for a task-parallel application. You can use parallel for-loops in MATLAB scripts and functions and execute them both interactively and offline.
タスク並列アプリケーションへの parallel for loop の利用。parallel for loop を MATLAB スクリプトと 関数に用い、対話的にもオフラインでも実行できます。

GPU による MATLAB 演算の高速化

Parallel Computing Toolbox では GPUArray が利用できます。GPUArray は、MATLAB から直接 CUDA 対応の NVIDIA GPU 上で処理を実行できる、複数の関連した関数に対応した特殊な配列型です。これらの関数には、fft や要素単位の演算のほか、lumldivide (バックスラッシュ演算子 (\) とも呼ばれます) などの線形代数演算などがあります。またこのツールボックスには、MATLAB から既存の CUDA ベースの GPU カーネルを直接利用できるようにするメカニズムも用意されています。

MATLAB による GPU 演算に関する詳細を見る。

GPU computing with MATLAB.
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 は、対話型ワークフローとバッチ ワークフローの両方をサポートしています。

Running a gene regulation model on a cluster using MATLAB Distributed Computing Server. The server enables applications developed using Parallel Computing Toolbox to harness computer clusters for large problems. Compiled parallel MATLAB applications can also use the server.
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 (バックスラッシュ演算子 (\) とも呼ばれます)、luchol などの ScaLAPACK に基づく線形代数ルーチンのほか、分散データの MAT ファイルへの書き出しや MAT ファイルからの読み込みを行うための関数などがあります。

このツールボックスには、並列化の構成をきめ細かく制御できるように、spmd (Single Program Multiple Data) 構文と、MPI 標準ライブラリ (MPICH2) に準拠したメッセージパッシング ルーチンが用意されています。spmd 構文を使用すれば、並列処理に参加しているワーカーで同時に実行するコードのセクションを指定することができます。プログラムの実行中には、spmd 構文によってデータとコードが自動的にワーカーに転送され、処理が完了すると MATLAB クライアント セッションに結果が返されます。send、receive、broadcast、barrier、probe の処理に対応したメッセージパッシング機能が使用できます。

Programming with distributed arrays. Distributed arrays and parallel algorithms let you create data-parallel MATLAB programs with minimal changes to your code and without programming in MPI.
分散配列を使用したプログラミングの例。分散配列や並列アルゴリズムにより、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 アプリケーションを実行する負荷をオフロードすることができます。

Running parallel applications interactively and as batch jobs.
対話形式およびバッチ ジョブとしての並列アプリケーションの実行。Parallel Computing Toolbox を使用すると、最大 12 のワーカーを使用してユーザーのワークステーション上でアプリケーションを実行できます。また、MATLAB Distributed Computing Server では、さらに多くのワーカーを使用してコンピューター クラスター上でアプリケーションを実行することが可能です。

製品評価版の入手
または製品の購入

いまからはじめるMATLAB画像処理ワークフロー

Web セミナーを表示する