秘伝
マイクロソフトはこれまでに多くの製品を世に出し、大成功したものもあり、大失敗したものもありました。そのすべての製品に共通するのは、その製品を世に出す際にその製品の担当者がいて、その担当者の作ったマーケティングプランがあったことです。この製品を売る目的は何か、どんなお客様に売るのか、どうやってそのお客様にメッセージを伝えるのか、その製品の価値は何か、競合とどう戦っていくのか、そしてそのプランにいくら使うのか、等々です。このマーケティングプランはかなりの部分、その製品の担当者の思い入れや力量に依存します。そうした担当者によるばらつきをなくし、全体の底上げを図る目的でマーケティング部門では「秘伝」と題したトレーニングが時々行われています。今日はその「秘伝」があり、大変勉強になりました。もちろん「秘伝」なのでここでは明かせませんが
。
私の前のセッションで日本AMDの山野さんがAMDのプロセッサロードマップを示し、昨年末の Quad-core (4コア)に続き、来年には Octal-core (8コア)、再来年にはもっとたくさんという予定に明らかにされました。それを踏まえ、今年発売される Windows Server 2008, Visual Studio 2008, SQL Server 2008 では既にそうしたマルチコアからメニーコアに対応した製品作りをしていることを説明します、と最初にお話しました。というのもこれらサーバー製品はライフサイクルが長く、おそらく Windows Server 2008 では最低4年間はメジャーな製品ラインとして販売されます。つまり2012年までは売り続ける、ということになります。2012年のことを今から予測するのは難しいですが、かなり高い確率で、一台のサーバーには数十から100個程度のプロセッサコアが動作していることでしょう。ですからこれらの製品はそうした時代を見越した作りになっているのです。
メニーコアの時代にはトータルの計算パワーは非常に大きくなりますが、個別のアプリケーションの計算速度を上げていくためには並列プログラミングを行わなければなりません。並列プログラミングということに関しては現在 High Performance Computing がリードしているので、マイクロソフトの HPC への取り組みについて最初にお話しました。
マイクロソフトが対外的に HPC への取り組みを明らかにしたのは 2005年11月です。
シアトルで行われた HPC 業界最大のイベント Supercomputing で、マイクロソフト会長のビル・ゲイツが基調講演を行い、HPC分野への参入を発表しました。
日本での対外的は発表は2006年8月でした。
投入された製品は Windows Compute Cluster Server 2003 で、ユーザにも、システム管理者にも、開発者にも親切、という「三親切」が特徴です。
ちなみに「三親切」という言葉は幕末から明治にかけて活躍した歌舞伎の戯作者河竹黙阿弥が好んで使った言葉ですが、「役者に親切」、「お客に親切」、「座主に親切」の「三親切」です。つまり「名せりふを書いて役者が張り切れば、お客が喜び、客がたくさん入れば、座主(劇場オーナー)が喜ぶ」ということです。サウスウェスト航空のように従業員第一主義でやる気を起こさせれば、お客も満足し、会社も儲かる、というような話ですが、意味はちょっと違うんですが、「三親切」を使っています。
これまでの取り組みの説明をした後、今年投入予定の新製品である Windows Server 2008 をベースにした HPC 向き製品の Windows HPC Server 2008 の概要を紹介しました。この製品の第一の特徴は HPC クラスタのノードが Fat ノードになることへの対応です。これまで PC クラスタは Poor man's supercomputer と呼ばれるように安価な PC を大量に並べて使うことで、専用のスーパーコンピュータの性能を凌駕できる、というのが特徴で、各計算ノードは1プロセッサや、2プロセッサコアなど小規模なものが多く使われていました。しかし、メニーコアプロセッサが安価に供給されるようになると、各ノードのプロセッサコア数が増え、強力なパワーのあるノード、つまり Fat ノードになっていきます。そうするとクラスタとして性能を発揮する第一のポイントは各計算ノード内での性能の最適化で、つまりメニーコアを利用したノード内での共有メモリモデルでの最適化が重要になります。その部分に最大の注力をして開発したのが Windows HPC Server 2008 なのです。Windows HPC Server 2008 は現在 http://connect.microsoft.com からベータ版をダウンロードすることができます。
そして Windows HPC Server 2008 が活躍する時代にはメニーコアの時代になり、トータルの計算量は爆発的に増えますが、最初にも言ったように、並列化されていないプログラムはその計算パワーの増大を享受することはできず、並列化は不可避になります。これは HPC の世界に限らず、すべてのアプリケーションにも言えることです。
このようなメニーコアの時代、すなわち、すべてのプログラマが並列プログラマになる時代がもうすぐやって来ます。その時代に備え、マイクロソフトでは昨年11月に Parallel Computing Initiative を発表しました。すべてのプログラマが並列プログラマになる時代には、単に既存のプログラムを並列化する、というような話ではなく、メニーコアをサポートするライブラリや、より簡単に並列プログラミングができるプログラミング言語、それをサポートするランタイムシステム、OSなどが必要になります。マイクロソフトではこれらすべてをトータルにサポートし、来るべきメニーコアの時代に備えています。
クラスタシステムは前述のように Fat ノードクラスタになっていきます。従来このような Fat ノードのクラスタに対しては、ノード内では OpenMP を使った共有メモリタイプの並列化を用い、ノード間では MPI を使った分散メモリタイプの並列化を行うというハイブリッド型の並列化が行われています。しかしながら、このやり方は非常に高度な技巧を必要とするもので、すべてのプログラマが並列プログラマへなる時代のモデルとしては相応しくありません。HPC 系以外のアプリケーションへの対応なども含め、Parallel Computing Initiative の一環として、.NET Framework の並列拡張や C++ の並列拡張などが既に msdn の Parallel Computing Developer Center で公開されています。
またデータアクセスの統一的なプログラミングモデルである LINQ の並列拡張である PLINQ や、関数型言語 F# の提案もしています。数千コアや数万コアという時代に明示的に並列性をプログラマが記述していくのは極めて難しいことだと思います。並列性を明示的に記述せず、比較的容易に並列性を抽出できる関数型言語には個人的には非常に興味を持っています。関数型言語の勉強をしたことがある人は情報科学を専攻した一部の人だけかもしれませんが、もしかすると関数型言語が陽の目を見る日が来るかもしれません。
これらメニーコア時代への新しい取り組みをいち早く利用できるのは今月発売を開始した Visual Studio 2008 です。
Visual Studio 2008 では標準でAMD の最新 Quad-core プロセッサに最適化された実行形式を生成することができます。
また LINQ も Visual Studio 2008 で利用することができます。このモデルによって異なるデータに対するアクセスの統一的なプログラミングが容易にできるようになります。
2006年に発売を開始した Windows Compute Cluster Server 2003、そして今年発売する予定の Windows HPC Server 2008、そしてその後継となる Version 3、さらにその先に目指すのはビジネスアプリケーションとHPCアプリケーションの融合です。従来別々のプログラミングモデルで開発されたアプリケーションが、別々のシステムで実行されていたビジネス系とHPC系が融合され、Windows Server の標準機能となっていくこと、それが我々のゴールです。
既にマイクロソフトはメニーコア時代への準備ができています。どうぞ安心してマイクロソフト製品を使い続けてください、というのが今日の講演の内容でした。
メニーコアの時代って本当に楽しみですね。それに関数型言語 F# + PLINQ という新しいモデルで自分でもプログラミングしてみたいと思います。わくわくする時代がもうすぐ来ますよ!