アーキテクチャ・ジャーナル

並列プログラムの開発

Ranjan Sen
2010/02/03
Page1 Page2 Page3 Page4

並列コンピューティングのプラットフォーム

 並列処理が登場した当初、アーキテクチャは高価で特殊なものでした。しかし、最近ではマルチコア プロセッサが、標準的なプロセッサ テクノロジになっています *1。このマルチコア現象は、2000 年の初めに、ソニーが PlayStation 2 でマルチ プロセッサを採用してゲーム ソフトウェア業界に大きなインパクトを与えたことから始まっています *2。同時に、パフォーマンスの点でも、ハイパフォーマンスのサーバー クラスター プログラムがスーパーコンピューターを凌駕しています *3。加えて、FPGA を始めとするゲート アレイ、GPU(Graphics Processor Units)、セル プロセッサなどの特殊なハードウェア トレンドの高まりを受けて、並列アーキテクチャを構築する新しい方法が登場しています。現在、分散システムのさまざまなシナリオで、リソースの使用率、スループット、信頼性、可用性を向上するために並列処理が使用されています。

 大規模な並列コンピューティング プラットフォーム テクノロジでは、オペレーティング システムがマルチコア プロセッサ向けに更新されており、コンパイラと開発システムを最適化する新機能や拡張機能が次々と開発されています。分散システムの分野では、メインストリームのエンタープライズ クラスのテクノロジが急速に統合されており、疎結合されたシステムが増加しています。このテクノロジに関連するソフトウェアおよびスイッチング テクノロジについては、後述します。

 Myrinet は、コンピューター クラスターで幅広く使用されている ANSI *4 規格です *5。ファームウェアを使用してプロトコルを処理し、ホストプロセッサの負荷を軽減するインターフェイス カードや、低遅延通信を実現する OS バイパスなどが搭載されています。10 ギガビット イーサネットとは IEEE 規格の 1 つで、イーサネットで最速の規格です。ギガビット イーサネット(毎秒 1 ギガビットのイーサネット フレームを伝送するテクノロジ)の 10 倍の速度を実現します。並列コンピューター アーキテクチャでは、InfiniBand *6 などのネットワーク スイッチ ファブリックが一般的に使用されています。

*1 ムーア
*2 Michael Copeland、「Faster Chips, Slower Computers?(チップが高速になっているのにコンピューターが低速になる理由)」、『Fortune Magazine』、2008 年 8 月 14 日
*3 TOP500 Supercomputing Sites
*4 米国規格協会。
*5 Myrinet の概要
*6  InfiniBand

コンピューター クラスター

 コンピューターおよびワークステーションのクラスターは、費用対効果の高い並列処理プラットフォームとして、広く普及しているハードウェア/ソフトウェア製品です(参考資料の [Sterling, 2002] を参照)。しかし、このようなクラスターの維持管理は、非常に複雑になる場合があります。Windows Server のクラスター(ここでは Windows HPC Server と呼びます)は、ハイパフォーマンス プラットフォームの実現という課題に加えて、これらの問題に取り組んでいます。Windows HPC Server は、Microsoft MPI、ジョブ スケジューラ、クラスター管理サービスなどの不可欠なクラスター サービスやツールを備え、さまざまなシナリオで強力なクラスター ソリューションを実現します。また、Windows HPCServer は、ハイパフォーマンス ランキング TOP 500 のトップ 10 にランクインしています *7。さらに、クラスター内の物理コンピューター間の超高速通信をサポートするために、MS MPI による次世代のネットワーク サービスが追加されています。

 ジョブ スケジューラは、従来のジョブ定義に加えて、SOA(サービス指向アーキテクチャ)で定義されているジョブを実行できます。それらのジョブは、クラスター ノード全体にわたってプログラムを実行するタスクの複合体として実行できます。さらに、ジョブ スケジューラは HPCBP サービス インターフェイスを介してジョブを受け付けることができ、グリッド インターフェイス プロトコルに準拠するさまざまなプラットフォームとの相互運用性が確保されています。

 Dryad *8 とは、クラスターやデータセンターでリソースを使用するためのインフラストラクチャです。プログラマーは、このインフラストラクチャを使用することで、逐次プログラムを作成し、それらを一方向の経路でつなぐという発想でプログラムを記述できます。Dryad は、MapReduce *9 や関係代数などの一般的なコンピューティングのフレームワークを表現することができます。さらに、ジョブの作成と管理、リソース管理、ジョブのモニタリング、可視化、フォールト トレランス、再実行、スケジューリング、アカウンティングを処理できます(図 3 を参照)。

*7 TOP500.org は世界中のクラスターを含む並列コンピューターのパフォーマンスをランク付けする際、LINPACK ベンチマークを使用しています。
*8 Dryad の概要
*9 Google MapReduce

図 3: Dryad アーキテクチャ

 SQL Server 2005 Integration Service(SSIS)は、Dryad 上に構築されています。このサービスは Microsoft SQL Server の多数のインスタンスをそれぞれ Dryad 上で実行し、Dryad のフォールト トレランスとスケジューリング サービスを利用します。現在、このサービスは、AdCenter *10 のログ処理パイプラインの一部として使用されています。

 関連プロジェクトの DryadLINQ *11 の目的は、大規模コンピューター クラスターでの分散コンピューティングを、一般的なプログラマー向けに簡略化することです。DryadLINQ は、LINQ プログラムを分散型 Dryad 計算に変換し、それらの計算をクラスター内のさまざまなノードに分散します。DryadLINQ には、宣言型プログラミング、自動並列化(ワークステーション上のマルチコア間およびクラスター間の両方)、Visual Studio との統合(IntelliSense、コード リファクタリング、統合デバッグ、ビルド、ソース コード管理)、自動シリアル化、静的な項書き換えおよび動的なクエリ プラン最適化によるジョブ グラフの最適化などの機能に加えて、簡潔さという特徴もあります。

*10 Microsoft adCenter
*11 DryadLINQ の概要

DSS(Decentralized Software Services)

 DSS ランタイムは、CCR(Concurrency and Coordination Runtime)*12 上に構築され、高度な同時実行性を備えたメッセージ指向プログラミング モデルです。CCR には、強力なオーケストレーション プリミティブが備わっており、手動のスレッド、ロック、セマフォなどを使用しなくても、メッセージの調整が可能です。CCR は、非同期操作の管理、同時実行の処理、並列ハードウェアの使用、部分的な障害の処理を可能にするプログラミング モデルを提供することで、サービス指向アプリケーションのニーズに応えています。

 CCR および DSS のランタイム ファイルは、Microsoft .NET Framework および .NET Compact Framework に含まれています。DSS プロトコルは、現在 Microsoft Open Specification Promise *13 プログラムの下で配布されています。このプロトコルが提供されることで、さまざまなハードウェアやソフトウェア間の通信がさらに簡単になるでしょう。また、バイナリ シリアル化により、さらに高速なスループットも実現できます。VPL 開発ツールは、通常の開発とモバイルの開発の両方をサポートします。さらに、DSS サービス生成ツールの Visual Simulation Tool もあります。

 大規模なクラスターや次世代統合テクノロジには、Microsoft Windows Azure *14、Amazon *15、Eco-Science Analysis プロジェクト *16 などで提供されているクラウド コンピューティング アーキテクチャがあります。生態学的なデータは膨大になります。データ処理には、さまざまなデータベース、データ キューブ、Web サービスが使用されています。コンピューターを活用した科学(e-サイエンス)では、Excel、MATLAB、ArcGIS、S-PLUS などが使用されています。課題は、クラウドに含まれるデータをすべてダウンロードすることなく、デスクトップの分析ツールで扱えるようにすることです。

*12 MSRS(Microsoft Robotics Studio)、CCR、および DSS
*13 Microsoft Open Specification Promise
*14 Microsoft Windows Azure
*15 Jinesh Varia、「Cloud Architectures(クラウドアーキテクチャ)」、Amazon Web Services、2008 年 7 月。
*16 Catharine van Ingen、Jay Gupchup、「Enabling Eco-Science Analysis with MatLab and DataCubes in the Cloud(MatLab および DataCubes によるクラウドでのエコサイエンス分析の実現)」、Microsoft Research Publications、2008 年 5 月


 INDEX
  [アーキテクチャ・ジャーナル]
  並列プログラムの開発
    1.並列プログラムのパフォーマンス
  2.並列コンピューティングのプラットフォーム
    3.並列プログラムの開発
    4.次世代のツール

インデックス・ページヘ  「アーキテクチャ・ジャーナル」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間