メディア
特集
» 2014年02月06日 14時45分 公開

新時代到来! ヘテロジニアス・コンピューティング最新動向【前編】プロセッサ/マイコン(3/4 ページ)

[本間文,EE Times Japan]

HSA

 Kaveri最大の特徴となるのは、やはりHSAのサポートだ。

  • 並列処理プログラムが、CPUやGPUを意識することなく動作できるようにするプログラミングモデルの整備
  • システムやアーキテクチャの違いを吸収する中間言語やランタイムの整備
  • CPUとGPUのメモリアドレス共有と、CPUーGPU間のメモリコヒーレンシ(整合性)の実現

 HSAでは、これらのことなどを標準化され、x86でもARMプラットフォームでも、そして、いかなるGPUアーキテクチャでも、プログラムを大きく変更することなく動作できるようにしようとしている。

 その基本的な仕組みは、HSAIL(HSA Intermediate Language)と呼ばれる中間言語によってGPU(またはCPUも含む)の命令セットの違いを吸収し、JIT(Just In Time)コンパイラまたはランタイム(各ハードウェアベンダーが用意するファイナライザ)がGPU(またはCPU)のネイティブ命令セットに変換するというもの。ただ、HSAILが抽象化するのは、主にGPUが得意とする並列処理命令であり、CPUで処理した方が効率的な演算処理や、GPU本来の役割であるグラフィックス処理は含まない。

 HSAファウンデーションでは、1つのプログラムコードで、全てのプラットフォームをサポートできるようにすることを最終的なゴールとしており、同ファウンデーションのメンバーのCPUアーキテクチャ、すなわちx86、ARM、そしてMIPS(2012年末にImagination Technologiesが買収)の間で、積極的にバイナリ変換ができる環境を整えるられるよう働きかける可能性も残されている。

HSAは、CPUの持つ柔軟な演算処理性能とGPUが持つ強力な並列演算処理性能をシームレスに利用できるようにすることで、より高性能かつ電力効率に優れたAPU/SoC環境を実現する (クリックで拡大)
HSAのソフトウェアスタック(クリックで拡大)
HSAIL(HSA Intermediate Language)によってGPUの命令セットの違いを吸収し、ランタイムなどがGPU(またはCPU)のネイティブ命令セットに変換する (クリックで拡大)

 HSAでは、HSAILの生成にC++AMPなどの高レベルコンパイラによるプログラミングの他、Open CLで書かれたプログラムは、ClangやEDG(Edison Design Group)のフロントエンドでOpen CLのSPIR(Standard Portable Intermediate Representation)に変換された後、LLVM(Low Level Virtual Machine)でHSAILに最適化される。また、Javaの並列プログラミングに関しては、OracleとAMDが共同開発したOpen CLアクセラレーションAPIのAPARAPI(A PARallel API)を利用することで、HSAでも汎用演算処理をGPUに割り当てることができるようになる。

 こうして、HSAILのバイナリコードを生成することで、各ハードウェアの命令セットアーキテクチャに近いレベルでアプリケーションを実行できるため、より効率的かつ高パフォーマンスが得られるというのが、HSA陣営の主張だ。

左=Open CL 2.0のキーフィーチャーとHSA。右=APARAPI、そしてProject Smatraで、JavaでもHSAが有効になる (クリックで拡大)

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.