Founderのポジショニング

Photo02と、以前の記事を見比べていただくと判るが、FounderにQualcommとSamsungが加わっている。この理由を確認したところ、そもそもHSA Foundationの設立にあたり、当初からこの2社には声を掛けていたが、調整に時間が掛かったためLaunchには間に合わない、という話だった。

HSAのFounderの場合、例えばIP AgreementにはPatentも含まれており、HSAの実現に必要なIPあるいはPatentをそれぞれHSAに提供することが義務となっており、お互いにクロスライセンスを結ぶことで訴訟を避けるということになっているが、この調整に手間取った(Qualcommの方が、若干調整に時間が余分に掛かったそうだ)との話であった。では今後もまだ増えるのか? というと、法的にはすでにFounderを追加する期間は終っているそうで、なので基本は現在の7社のみがFounderということになる。ただ、終っているのはFounderだけで、PromoterやSupporter、Contributorはまだ募集しており、ここに参加することは可能という話であった。

ここからFounderのポジショニングがはっきり判る。要するに、HSAを展開してゆく際に必要になるIP、あるいは特許を持った企業を巻き込むのが必須ということである。ARMのSoCを作っている会社は沢山あるが、その中で自前でIPや特許を持っている会社はごく少ない。大半はARMからIPを購入して、これを組み合わせてSoCを構成しているだけであり、こうした会社を別にFounderとして迎え入れる必要はなく、Promoter以下のポジションで構わない訳だ。こうしてみると、Intel、NVIDIA、Appleが入っていない理由も明白である。もちろん、これらの会社はそれぞれIPや特許を持っているが、HSAの展開に欠かせない特許などは特に持ち合わせていないからだ。例えばNVIDIAは優れたGPUコアを持ってはいるが、それをIPの形では外部に提供しておらず、結果市場では大半のメーカーがImagination Technologies(IMG)のPowerVR、これにARMのMaliが続く形でほとんどのシェアを抑えているから、IMGとARMがFounderに居ればIPや特許の問題はクリアになるという訳だ。

もっとも氏によれば、AppleがHSA Foundationに加盟する可能性は無いと思うが、IntelやNVIDIAは可能性があるとの事。理由はというと、HSA FoundationはOpen StandardなOSの上でOpen StandardのAPIを使う形で環境を作るが、AppleのそれはiOSという閉じた世界であり、これがHSAをサポートする可能性はないと思われるからとの事。逆にIntelやNVIDIAはOpen StandardなOSをサポートしているわけで、技術的には可能性があるとのことだった。ちなみにIntelやNVIDIAと話をしたことはあるそうだが、流石にその内容については教えてくれなかった。

開発・動作環境

HSAの動作環境として現在提示されているものは、Photo09の様な構図である。HSA Runtime Stackであるが、従来型のアプリケーション(図中の水色)は、OS経由で直接CPUのみをアクセスする。これに対してHSAではCPUとGPUをシームレスに扱えるようにする。このため、一部OSの上にかぶさる形でHSA Runtime Infrastructureを構築するわけだが、この際に利用される道具とでもいうべきものがHSAILである。先のPhoto08でも出てきたHSAILだが、Photo09と絡んでちょっとHSAILのポジションを説明する。

Photo09:これはこちらのWebサイトに示されるものからの抜粋

例えばユーザーがHSA環境のプログラミングをする場合、まず高レベルコンパイラ(HCL:High Level Compiler)を使ってプログラムを作成することになる。このHCLは、内部でHSAILで記述されたコードを生成する。このHSAILのコードがターゲットマシンに渡されると、今度はSecond Compiler、あるいはFinalizerと呼ばれる2番目のコンパイラが動き、このFinalizerがHSAILのコードをそのハードウェアのネイティブコードに変換する。最終的にはこのネイティブコードが動作する形だ。要するに、HSA向けにいわゆるLLVM(Low Level Virtual Machine)の仕組みを取り入れたのがHSAILと考えれば良い。

最終的にはこのHSAILはOpenCLコンパイラの一部として取り込まれることになり、これとは別にHSAIL Finalizerがプラットフォーム側に用意されるという仕組みになる。これにより、OpenCLを使ってプログラミングを行うことで、物理的な構成(つまりそれがARM CPUなのかx86 CPUなのか、あるいはMali GPUなのかPowerVRなのか、など)を意識する必要が無くなるというのがこの方式のメリットと説明された。もちろん現実問題として完全に意識する必要が皆無になる、なんてことはありえないのだろうが、共通のエンジンとかライブラリを用意するなんてケースではかなりメリットになるだろうし、しかも現実にそうした使われ方をしそうである。

ちなみにPhoto09に出てきたAQL(Architected Queuing Language)に関しては、氏も説明をしてくれなかったし、HSAのサイトにも一切説明がない。ただこれについてはなんとなく見当は付く。初期のHSAの環境では、GPU上でのTaskは常に1つで、これをCPU側から管理するという構図にならざるを得ない。Photo04で言えば、Architectural Integrationあたりまではこの仕組みのままであろう。ただ、その次のSystem Integrationの世代では、GPU側でTask Switch(GPU compute context switchとあるのがそれだ)が用意されることを想定している。

現時点ではこれをどうやって具体的に実現するか(OS側の対応も必要になるし、GPU側についてもアーキテクチャごとにこれは異なってくる)についての具体的な実装方法は明らかにされていないが、このレベルではGPUの上位(というか、HSAIL Finalizerの下位)に1レイヤ挟み込む形でTask Queuingの仕組みを盛り込もうと考えているようだ。Language、というあたりはHSAILなどと同様に、上位アプリケーションから中間コードの形でTask Switchingのリクエストを出し、これをFinalizeする形で実装といったアプローチを考えているのかもしれない。

さて、この仕組みそのものはすばらしいのだが、現状はあまり環境が揃っていない。例えば開発ツール、OpenCLのコンパイラそのものはすでにある、というか主要なベンダからはすでにOpenCLを利用するためのSDKを提供されており、これを既存のコンパイラと組み合わせればとりあえずOpenCLは使えるが、これは上述のHSAILに対応したものではない。このHSAILの標準化はまだWorking Groupで策定中の段階であり、HSAIL Finalizerは今のところ存在していない。デバッガとかプロファイラなどに関して、現状で唯一HSAに対応しているのはAMDのCodeXLのみで、当然ながらこれは現状x86のみの対応である。

またライブラリとしてはAMDがやはりBOLTをリリース予定(Preview版がAMD APP SDK 2.8の一部として提供中)で、こちらもARM版は今のところない。これに関して、例えばARMのDS-5で何かしらの提供予定は? と確認したのだが、残念ながら今のところこうしたプランはないとのこと。

基本的にはこうしたツール類は、サードパーティの役割とARMは考えているようだ。実はこうした話は他にもある。2012年12月にARM Tech symposium 2012が開催されたが、その前日に行われた記者説明会の折に同社のKeith Clarke氏(VP, Embedded Processor, Processor Division)がARM v8アーキテクチャを実装したCortex-A57/A53といったプロセッサでServer Marketを狙うと説明したので、「ではMemcachedをA57/A53に移植するといった形で普及を助ける予定は?」と聞いたところ、「それはサードパーティの仕事で我々はやらない」という返事を貰っている。このあたりが、IPをライセンスすることが仕事の会社と、実際にシリコンを売らないといけない会社の違いなのかもしれない。

ただ、現状では比較的早期にHSAをx86とARMの両方で利用しそうな会社が存在する。言うまでもなくソニーである。PS4はご存知の通り、AMDの8コアJaguar+GCNコアのGPUという構成になるし、その一方でPS Vitaは4コアCortex-A9+PowerVR SGXという構成である。現状のVitaはまだHSAが利用できないが、例えばこれがCortex-A15+PowerVR 6とかになればHSAに対応するのは難しくない。そもそもPS4からして、CPUコアの性能はそれほど高いものではないからHSAのスキームを使ってGPGPU的に活用するであろうことは明白だし、同じゲームをPS4とPS Vita後継機の両対応にするというニーズは当然あるわけなので、PS Vitaの後継機にはHSA向けのフレームワークが必要になる。それをSCEが開発するのか、それともサードパーティが独自にやるのかとかまでは現状見えないが、何も無しということは無いだろうし、そう考えるとPhoto02でソニーがControbutorに名前を連ねるのも判ろうというものだ。意外というのも失礼かもしれないが、SCEとその開発パートナーを中心に、比較的早期にHSA関係の開発環境が揃うかもしれない、というのがPS4の発表会を見ながらの筆者の率直な感想であった。