仮想化道場

APUとHSAでコンピューティングを変えるAMD (HSAで加速するビッグデータ活用)

HSAで加速するビッグデータ活用

 今回のAPU13では、Oracleが正式にHSAのContributorとして参加した。Oracleは、AMDなどのHSAを推進している企業と一緒に、Java言語をHSAに対応するために作業を行っている。

 具体的には、Java言語を並列プログラミング言語へと進化させようとしており、2014年に並列プログラミング機能を取り込んだJava 8をリリースし、2016年にはHSAをサポートしたJava 9をリリースする予定になっている。

昨年発表されたHSAは、順調に参加企業が拡大している。今回のAPU13では、OracleがHSAに参加した
Oracleでは、並列プログラミング化したJava 8を2014年にリリースする予定だ。当初2013年秋のリリースが予定されていたが、開発スケジュールが遅れていたため2014年にディレイした
Java 8では、HSAを限定的にサポートするが、Java 9ではHSAに本格対応していく

 またAMDとOracleは、Javaのオープンソースの実装であるOpenJDKにおいて、JavaをHSAに対応させるためにSumatraというプロジェクトを進めており、Oracleが正式にリリースするJavaよりも早く、各機能がサポートされている。Sumatraなども、OpenJDK 8に追加する機能として提供された。

 OracleがリリースするJavaは、エンタープライズサーバーでも標準的なフレームワークとして利用されているため、セキュリティや安定性といったことが重要視される。こうした理由から、OpenJDKよりも遅れてリリースされることになるのだろう。

AMDとOracleはOpenJDKでHSAをサポートするSumatraプロジェクトを進めている
Sumatraプロジェクトでは、JavaがHSAをサポートできるようにHSAILを内蔵していく

 今回OracleがHSAに参加したことで、将来のJavaはHSAを完全にサポートしたフレームワークになった。このことは、今後のエンタープライズアプリケーションにとっては大きな意味を持つ。

 例えば、Javaをフレームワークとして使用しているHadoopなどは、HSAの恩恵を大きく受けることになるだろう。現在Hadoopでは、GPUを利用するOpenCLを利用したHadoopCLの開発が行われている。HadoopCLを使えば、GPUが持つ膨大な演算ユニットをビッグデータ処理でも利用することが可能になる。CPUとGPUが融合したAPUを利用することで、今よりも簡単に、リアルタイムでビッグデータ処理が行えるようになるかもしれない。

Hadoopでは、OpenCLを使って処理を高速化するHadoopCLの開発が進んでいる
HadoopのDataNodeをHadoopCLでさらに分割してGPUなどの演算ユニットを使うことで、高速化を図っている

 またAPUを使えば、GPUの能力を生かして、データベースなどさまざまなアプリケーションで利用されるB+ Treeを高速に処理することも可能になる。実際、AMDのテストではAPUのKerveriを使用したB+ Treeのテストでは、CPUだけの処理に比べると約3~4倍の性能向上となっている。B+ Tree以外にも、テキスト検索などもGPUのパワーを利用することで、CPUよりも高速に処理を終えることができる。

 このように、APUとHSAというフレームワークにより、ゲームだけでなく、さまざまなビジネスアプリケーション、エンタープライズアプリケーションが高速化されることになるだろう。

HSAによりGPUの演算ユニットを使ってB+ Treeを高速化する
B/B+ Treeは、SQLite、CouchDBなどのデータベース以外に、ブラウザやメーラーなどさまざまなアプリケーションが使用している。HSAを使えば、これらのアプリケーションが劇的に性能アップする
HSAをサポートしたAMDのKaveri APUを使ったB+ Treeのテスト。1Mの検索でも、最大6倍のスピードアップが果たせる
HSAを使えば、テキスト検索も高速化できる

(山本 雅史)