イベント
【GTC 2013レポート】拡大するGPGPUの利用領域
(2013/3/25 06:00)
米国のサンノゼで3月19日から開催された「GPU Technology Conference 2013(以下GTC 2013)」は、NVIDIAが開催しているGPUに関する技術カンファレンスだ。
今回は、さまざまな領域で利用され始めたGPGPUに関して説明していこう。
GPGPUの利用領域が拡大
GPGPUといえば、従来はHPC(ハイパフォーマンス・コンピューティング)などで利用されていた。例えば、2010年に開発された東京工業大学のTSUBAME 2.0は、NVIDIAのTeslaを4000台以上搭載する、GPGPUを中心としたスーパーコンピュータとなっている。
また、2012年11月のTOP500でトップをとったのは、米国のオークリッジ国立研究所に設置されたTitanだった。Titanは、東工大のTSUBAME 2.0と同じようにNIVIDIAのTeslaを利用したGPGPUを利用したスーパーコンピュータだ。CPUには、AMD Opteron 6274が利用され、GPGPUにはTesla K20Xが採用されている。Titanには、Tesla K20Xが約1万9000台搭載されているが、このように、スーパーコンピュータにおいては、GPGPUによって性能を稼ぐアプローチは一般的になっている。
多くのスーパーコンピュータは、構造解析、気象予測、分子動力学、地震や津波のシミュレーションなどに使われているため、一般的な企業にとっては必要ないものと考えがちだ。しかし、GTC 2013を見てみると、少し状況が変化してきている。
GPGPUは、膨大な計算能力により、各種のシミュレーションの可視化(ビジュアル化)も行っている。東日本大震災時の地震シミュレーション、南海トラフ地震のシミュレーションの映像などを見たユーザーも多いだろう。こういったシミュレーションでは、計算結果はまず数値データとして出力されるが、有り余る計算能力を利用して数値データを映像化すれば、多くの人が分かりやすい状態で提示することができる。
また、コンマ数秒の取引で何億円もの金額が取引される金融の分野でも、GPGPUを利用したコンピューティング環境に注目が集まっている。
近年、銀行や証券会社、ヘッジファンドなど金融機関が扱う金融商品は複雑化し。複数の通貨のスワップ、デリバティブなど、特定の通貨や商品を取引するだけでなく、通貨や商品に関連する派生商品が出てきた。
このため、どの金融商品同士を組み合わせれば利益が最大限になるのか、もしくはリスクが最小限になるのか、といったことを既存のコンピュータで計算していると、計算に時間がかかりすぎて、結果が出た時には取引ができないことになってしまう。そこで、さまざまなデータを突き合わせて、コンマ数秒で最適な取引を作り上げるために、GPGPUの膨大な計算パワーが必要されている。
このように、多くの業界で使われるようになったGPGPUだが、GTC 2013を見ていると、さらに一般化してきそうだ、と感じた。
それは、データベースやデータマイニングなどへの適用だ。
検索の性能を向上させるGPGPU
基調講演においてNVIDIAのジェン・スン・フアンCEOが紹介したのが、Salesforceにおけるツイートの検索に関する事例だった。
SalesforceではTwitterと提携し、ツイートの内容を分析しているが、2009年には1日あたり数千万件だったツイートが、2011年には1日あたり2億ツイートを超え、2012年には1日あたり5億ツイートにまで達している。このまま増加していくと、2013年には1日で10億ツイートに達するのではといわれているほどだ。
これだけの大きなデータから、特定の企業に関するツイートを検索したり、ユーザーがどのようなトレンドを発しているのかを分析したりするには、膨大な演算能力が必要になる。
ここで問題になるのが、検索にかかる時間だ。1日のデータから検索するのに長い時間がかかるようでは、実際のビジネスとしては役に立たない。実際、Salesforceのサービスでは、5億件のツイートから抽出した8000件のツイートの検索に5分以上かかっていたという。またユーザーからは、1日のツイートだけでなく、複数日のツイートを瞬時に検索できるようにしてほしい、というリクエストも多くなった。
そこでSalesforceでは、GPGPUを利用した新たな検索システムを開発している。旧検索システムはJavaベースで構築されていたが、ZAPPと呼ばれる新しいシステムでは、JavaとPythonを採用した。検索エンジンは、Pythonで開発された「ZAPP Engine」が利用されている。
GPGPUはこのZAPP Engineの中で、さまざまなスレッドをCUDAユニットで動かしている。Salesforceでは、2台のNVIDIA GTX 580でツイートの検索処理を行うようにしたが、以前の20倍~30倍のスピードで検索できるようになったそうだ。
もう一つ紹介された事例が、音楽・音声検索サービスのShazamである。ユーザーがスマホに向かって、鼻歌や流れているメロディを聞かせると、どういった曲なのか、アーティストは誰なのかをクラウド側で検索してくれる。
昨年にバージョンアップしたShazamでは、CUDAを利用することで、最短1秒以内に曲を認識するようになった。さらに、これだけの性能向上を果たしても、GPGPUを中心にしているため、低コストでシステムが構築できたとしている。
基調講演ではこのほか、テキストや音声だけでなく、イメージ検索に関してもデモが行われた。Cortexica Vision Systemsが開発しているシステムは、雑誌などで有名モデルが着ている服をスマホなどで撮影すると、すぐにパターンマッチングを行い、その服を検索してくれるというものだ。
面白いのは、パターンマッチングを利用しているため、同じような柄の服を検索したり、布地を検索したりできる点だが、これも、GPGPUの膨大な計算能力を使って実現している。
データベースに応用されるGPGPU
検索ということを広くとらえると、データベースやビジネスインテリジェンス(BI)の分野でもGPGPUは使われ始めている。
Jedoxでは、自社のOLAPシステムの一部にGPGPUを採用している。OLAPのキューブ作成など、さまざまなシーンでGPGPUの性能が利用されており、CPUだけを使のプログラムと比べると、約10~30倍の性能アップを果たしている。一部の機能では、約70倍の性能アップを実現したという。
これ以外にも、研究レベルでは、IBMがデータウェアハウスのHashテーブルの作成やJoinなどにGPGPUを利用することで、約10倍~30倍の性能向上を果たしたとのこと。
またGROUPONでは、SQLデータベース自体をGPGPUに対応させ、データベースの高速化を目指している。テストでは、CPUだけの時に比べると、データベースのQueryが約10倍の性能になっているという。
さらに今回のGTC 2013ではないが、NTTデータがHadoopとGPGPUを組み合わせることで、性能が大幅に向上することを検証している。特に、データのクラスタリング(グループ分け)処理において、GPGPUを利用するメリットが大きく、テストでは、GPGPUを利用することで、使用しない場合に比べて約60倍の性能を実現しているとのことだ。
このようにデータベースや検索など、今後、シミュレーションだけでなく、一般的な用途にGPGPUが利用されてくるだろう。ビッグデータの解析などには、GPGPUはよりマッチしたソリューションなのかもしれない。
ただ、現在のGPGPUにも問題がある。データを処理するためには、GPU側のメモリにデータを転送する必要がある。多くの場合、PCI Expressを経由してGPUは接続されているため、大量のデータをGPUに転送していてはロスが大きい。また、GPU側では、最近のCPUのように大量のメモリが搭載されていない(GPU側のメモリとしては5GBほど)。
このため、メインメモリをGPUのメモリとしてマッピングするUnified Virtual Memoryの機能が必要になってくる。
現在、NVIDIAが提供しているKepler世代のGPUにも一部この機能は入っているが、本格的には次世代のMaxwell世代で完成する。ビッグデータの処理などで、データを分割して、GPU側にコピーしてから処理したりしなくても、メインメモリ上にあるデータをそのままGPUで処理できるようになれば、よりデータベースでのGPGPUの利用が進むだろう。
もしかすると、SAPのHANAのようなインメモリデータベースなどは、次世代のGPGPUを利用することで、相当なスピードアップを果たすようになるかもしれない。