MathWorksは11月26日、都内にて同社「MATLAB/Simulink」に関するテクノロジーカンファレンス「MATLAB EXPO2010」を開催。同イベントにおいて、2010年9月にリリースされた「R2010b」より、正式サポートがなされたMATLABのGPUコンピューティング(GPGPU)活用に関するプレスブリーフィングが行われたので、その模様をお伝えしたい。

MathWorksのVice President of MarketingであるRichard Rovner氏

GPUコンピューティングに関しては、Top500の2010年11月版で世界1位を獲得した中国の「Tianhe-1A」や同4位の東京工業大学の「TSUBAME2.0」が採用していることが知られているが、こうした計算速度の向上に関して、MathWorksのVice President of MarketingであるRichard Rovner氏は、「さまざまなデジタル機器が登場することによりデータ量の増加は進むが、それを処理する人間の数はそれほど増えておらず、効率的な演算を行い、負担を減らす必用がある」と指摘、そうした計算速度の向上を実現するのに向いているのが並列処理であり、クラスタ化であり、クラウド化であるという。

これまでもMathWorksでは、さまざまな並列処理環境に対応するために1つのPCでの並列処理向けに「Parallel Computing Toolbox」を、クラスタ環境向けに「MATLAB Distributed Computing Server」を提供してきた。

MathWorksが提供してきた並列演算のソリューションと並列演算のメリット

R2010bでは、並列処理のさらなる効率化を目指し「Parallel Computing Toolbox」のGPUコンピューティング対応が行われたわけだが、「基本的に3つのサポートが行われた」(同)という。1つ目は「GPUの既存の配列の組込関数を呼び出す」、2つ目は「GPUで実行させるためのシンプルなMATLAB関数を変換」、そして3つ目はMATLABからCUDAコードを呼び出す」というもの。

これまでも多様な並列演算の環境に対応しており、今回GPUコンピューティングへの対応を正式に果たした

MathWorks JapanのAEテクニカルコンピューティング部アプリケーションエンジニアである吉田剛士氏

これだけだと分かりづらいが、NVIDIAのGPU(Tesla世代以降)を、CUDAを知らないエンジニアでもMATLABを知っていればGPUコンピューティングとして活用できるようにしたということで、「R2010b以前でもMATLABでGPUコンピューティングはできたが、それはC言語を覚え、かつCUDAも覚える必用があった」(MathWorks JapanのAEテクニカルコンピューティング部アプリケーションエンジニアである吉田剛士氏)という手間を経ることなくより簡単に活用することが可能となった。

このため、基本は3つのMATLABの関数を用いるだけで、GPUコンピューティングが可能となる。

例えば2次元フーリエ変換では、まずGPUのメモリ上にデータを送信する関数「gpuArray」を用い、次に2次元フーリエ変換の実行関数「fft2」をGPU上で実行するように指定、そしてその結果をメインメモリへ回収する関数「gather」で完了となる。

各種並列プログラミングとその難易度の目安

MATLABでは3行書くだけでGPUコンピューティングが利用可能となる

MATLABの関数は現在1000程度、その内200程度がビジュアル向けなので、残り800個の内、123個の関数がGPUコンピューティングに対応しており、今後、ニーズに応じて、対応関数は増えていくとの見方を同社では示している。

現在GPUコンピューティングに対応しているMATLABの関数は123個となっている

また、自分で対応した関数を組み合わせることで、ユーザ定義関数として用いることも可能だ。その場合は「arrayfun」関数を用いることで、やはり3行で処理を終えられる。

より複雑な処理の場合はどうしてもCUDAの知識が必要となるが、基本的な部分はMATLABの関数だけで処理ができるほか、単精度、倍精度についても気にせずに実行することが可能となっている。

対象とするユーザーとしては、実際の開発現場でモデルベース設計を用いており、各種の処理を高速化したい人などが想定されている。

また、GPUコンピューティングとしてはCUDAのほかにOpenCLがあるが、「OpenCLでサポートをしてくれれば、我々としても対応を図っていくつもり」(Richard氏)としており、テクノロジーサイドからのニーズ次第との答えであった。

なお、11月15日(米国時間)にNVIDIAがAmazonのElastic Compute Cloud(EC2)経由でエンタープライズおよびスタートアップ各社に提供することを発表したが、同サービスにおいてもMATLABを活用することが可能となっている。ただし、利用者側で「Parallel Computing Toolbox」と「MATLAB Distributed Computing Server」のライセンスを用意していないと利用ができないとのこと。ただし、「3カ月や6カ月の期間限定ライセンスも用意している」(吉田氏)とのことなので、開発の最終段階でのみ、といった活用が可能となっているという。クラウド活用ということで、1週間や1日といった単位での利用はどうか、という質問をしてみたが、それについては今後の検討事項とのことであった。