• 製品案内
  • 受託解析・開発
  • 実績・事例
  • セミナー
  • サポート
  • 資料ダウンロード
  • お問い合わせ

並列化とは

並列化とは

プログラムの並列化とは、複数のCPU、あるいはCPUやGPUのコアが作業を分担することになります。
例えば、荷物を運ぶことを考えた時、1人では時間がかかってしまっても、4人で運べば1/4の時間で終わることが期待できます(高速化)。
一方、1人では持てない荷物があった時に、4人かけて運べるようにする、ということもあります(大規模化)。

高速化と大規模化

しかし、実際のプログラムの中には並列化できる部分とできない部分があり、並列化する上で重要となります。
先ほどの続きで引越しを例に、トラックが家に向かい、荷物を積み、新しい家に向かう、という部分で考えてみます。
荷物を積む部分は先ほどと同様、人数をかけただけ、時間短縮がされます(並列できる部分)。
しかし前後のトラックの移動は、人が増えてもトラックが速く移動できるわけではなく、時間短縮できません(並列できない部分)。
プログラム中にこの並列できる部分が多いほど、並列化した時の効果が期待できます。

並列化できる・できない

並列化の流れ

では、実際プログラムを並列化するには何をすればいいのでしょうか。一般的な作業の流れを次に示します。

並列化の流れ

まずプログラムの時間計測を行い(あるいはプロファイラを用い)、サブルーチンなどどこに時間が費やされているかボトルネックを特定します。
次に並列化を行う前に、その部分をシリアルコードで最適化しておきます。これは、元のプログラムに無駄などがあり遅い場合、並列化を行う前に最適化をした方が並列化による効果と区別できるためです。
最適化が済みましたら、並列化を行いたいプログラムの並列化可能部分を見つけ出し、並列化を行います。
ここで再び計算時間を測り、効果に満足できなければ、まだ並列化していない部分も並列化する、並列化出来ない部分を並列化できるアルゴリズムに変更する、などさらに作業を進めていくことになります。

並列化環境

並列化環境

並列計算を行うにはその環境が必要となりますが、現在では複数コアを搭載したCPUが一般的であり、OpenMPを用いた並列計算では現在の環境のまま利用できる場合が多くなっています。
また、数年前から普及し始めたGPUを用いた計算(GPGPU)も、デスクトップなどのコンピューターにGPUボードを搭載するだけで計算可能となります。
一方、複数マシンを利用したMPIを用いた並列計算では、大規模計算に向きます。

弊社では、お客様のプログラム、環境に適した並列化方法をご提案いたします(高速化・並列化サービス)。

関連資料ダウンロード

お問い合わせ