Main Content

並列計算とは

並列計算では、多数の計算を同時に実行できます。多くの場合、大規模な問題は小規模な問題に分割でき、小規模な問題は同時に解決されます。

並列計算の使用を検討する主な理由は次のとおりです。

  • タスクを分散して同時実行することで時間を節約

  • データを分散してビッグ データの問題を解決

  • デスクトップ コンピューターのリソースを利用してクラスターおよびクラウド コンピューティングにスケール アップ

Parallel Computing Toolbox™ では、以下ができます。

  • parforparfeval などの対話型並列計算ツールを使用してコードを高速化

  • distributedtalldatastoremapreduce などの対話型ビッグ データ処理ツールを使用して計算をスケール アップ

  • gpuArray を使用してコンピューターの GPU で計算を高速化

  • batch を使用して計算をコンピューター クラスターまたはクラウド コンピューティング機能にオフロード

次に示す並列計算の概念を覚えておくと便利です。

  • ノード: 1 つ以上の CPU/GPU を含むスタンドアロン コンピューター。ノードはネットワーク化されてクラスターまたはスーパーコンピューターを形成します

  • スレッド: スケジューラで個別に管理できる最小の一連の命令。GPU、マルチプロセッサまたはマルチコア システムでは、複数のスレッドを同時に実行できます (マルチスレッド)

  • バッチ: 関数スクリプトの実行をオフロードしてバックグランドで実行

  • スケーラビリティ: リソースの追加による並列実行速度の上昇

MATLAB® および Parallel Computing Toolbox が提供するツールには以下のものがあります。

  • "MATLAB ワーカー": グラフィカル デスクトップなしでバックグラウンドで実行される MATLAB 計算エンジン。関数を Parallel Computing Toolbox で使用すると、タスクが自動的に分割され、そのタスクがこれらのワーカーに割り当てられて、計算が並列実行されます。ローカル ワーカーを実行すると、マルチコア デスクトップ コンピューターのすべてのコアを活用できます。また、MATLAB Parallel Server™ を使用してスケール アップし、マシンのクラスターでワーカーを実行することもできます。操作する MATLAB セッションは "MATLAB クライアント" と呼ばれています。このクライアントは並列言語関数を使用してワーカーに指示します。

  • 並列プール: parpool または自動並列サポートがある関数を使用して作成された MATLAB ワーカーの並列プール。既定では、並列言語関数は必要に応じて自動的に並列プールを作成します。詳細については、並列プールでのコードの実行を参照してください。

    既定のローカル プロファイルでは、シングルの計算スレッドを使用する物理 CPU コアごとの既定のワーカー数は 1 つです。これは、各物理コアが複数の仮想コアをもつことができる一方で、仮想コアが共有浮動小数点単位 (FPU) などの一部のリソースを共有していることが原因です。MATLAB での計算の大部分は倍精度浮動小数点なので、この単位が使用されます。物理コアごとのワーカー数を 1 つに制限すると、各ワーカーは浮動小数点単位に排他的にアクセスすることになるため、通常は計算コードのパフォーマンスが最適化されます。コードの計算量が多くない場合、たとえば入出力 (I/O) が多い場合は、物理コアごとに最大 2 つのワーカーを使用することを検討してください。少なすぎるリソースで多すぎるワーカーを実行すると、マシンのパフォーマンスと安定性に影響が生じる可能性があります。

  • 高速化: コードを複数の MATLAB ワーカーまたは GPU で、たとえば parforparfevalgpuArray を使用して実行し、コードを高速化します。

  • データのスケール アップ: 複数の MATLAB ワーカーにまたがるビッグ データを、tall 配列と分散配列を使用して分割します。詳細については、ビッグ データの処理を参照してください。

  • 非同期処理: parfeval を使用して、完了を待たずに計算タスクをバックグラウンドで実行します。

  • クラスターおよびクラウドへのスケール アップ計算タスクがローカル コンピューターにとって大きすぎるまたは遅すぎる場合は、MATLAB Parallel Server を使用して、計算をオンサイトのクラスターまたはクラウドにオフロードできます。詳細については、クラスターとクラウドを参照してください。

関連するトピック