AMDのRadeonシリーズのブロガー勉強会に参加してきました 0.そして山田は会場へいった

AMDを入口から


というわけで、行ってきました。
http://peatix.com/event/6329

NVIDIAもいいけどAMDも、という山田をまるで呼んでいるかのように、そして関東GPGPU勉強会第二回を早く開け、とでもいうかのように、AMDさんに当選という通知を頂いたので、僭越ながらGPUといえば東の山田(自称) 会場に足を運んだのが9月13日のこと

条件として、本勉強会、並びにお土産としていただいたRadeon HD7770についての記事を一度以上書くということで、今回の記事を書いている次第です。
ただし、タイトルに0とついている通り、これは飽く迄取り急ぎの開催報告。7770のベンチを取ってちゃんと記事を書きますからね!!

はじめに

「これからのAMDはですね、ヘテロジニアスコンピューティングに舵を切っていきたいと思っています」
――と、冒頭でおっしゃっていたのが大変印象的でしたね
ここ数年のGTCでも、NVIDIAは口を酸っぱくして「これからはGPGPUにフォーカスしていく」と言っているし、時代はアクセラレータなのです
おぉ、俺の時代来た!GPGPU勉強会開いててよかった! #ステマ

大きく分けて、この勉強会は二つに分かれていまして、前半はマーケティングな話、後半はアーキテクチャな話になっていました
個人的には後半の比率をもっと取ってほしかったというか物足りなかったですね

前半

HD7xxxのターゲット、OpenCLへの対応状況、AMDの取り組みをご紹介しましょう
PhotoshopがCUDAからOpenCLへのシフトを行ったり、OpenCLをサポートするソフトウェアが増えたり。GPGPUを取り巻く環境はかなり変わっているわけです
そして印象的であったのは、グラフィックスの話題っていうのは、今や二の次であったということ。
もはやGPUのパワーというのは画面を出すだけではなく、演算に振り分けられるものとして考えられているというのは、時代かーとか思ったりするわけですよ(ミサワ
……しかしながらですね、それにしては色々足りないものがありすぎるというか、なんというか。
でも、AMDOpenCLを推進したいんだな、というのは伝わってきました
ただし、個人的には、
http://pc.watch.impress.co.jp/docs/column/kaigai/20120620_541286.html
で紹介されている、HSAというフレームワークOpenCLをどうオーバーラップさせるのか、というのが不明確なのがイマイチという感じです。
HSA=OpenCLなのであれば、なぜKhronosではなくAMDが主導となってHSAというファウンデーションを作ったのか、というのがちょっと謎です。AMDは独自にOpenCLのようなフレームワークを創ろうとしているようにみえ、そうなればKhronosと対立――まではいかずとも、あまりKhronos的にいい気分ではないようなことになるのでは、という懸念があります
まだまだものが出ていないので判断できはしないんですけどね

後半

みんな大好きGCNのアーキテクチャの話
ただし、ほんのさわりぐらいなもので、後藤さんの記事に詳しくあったような話はない
特徴的なVLIWはやめました、というぐらいの感じで、では今までのアーキテクチャとどのように変化したのか、というような具体的な対比はなかった。
個人的にはその辺を簡潔にまとめてほしかっただけに、やや残念な気持ちがないではないです
GCNになってからというもの、NVIDIAGPUアーキテクチャが似た感じになっていて、しかし両者を決定的に分かつのは、GK104で捨てられたハードウェアスケジューラだと思うんです。そして、GCNではハードウェアスケジューラが採用されているわけで、今までとは両者の関係が逆転した感じ。
後藤さんの記事に詳しいので、あんまり僕が言うのと野暮ったいのだけど、ここら辺はやはり悩ましいところなのだろうなぁ、というのがAMDとしても、NVIDIAとしてもあるみたい。一方、Intelは無言でプロセスルールを一個進めた。
個人的にはVLIWも嫌いではなく、あれはあれでSIMD書いてるっぽい楽しさがあったので結構好きだったんだよねー

個人的に一番気になったのはShared Memoryの話ですね
GCNでは、Compute Unit全体が共有する領域が存在します。これはGlobal Share Data領域とよばれる。ところがこれ、CU全体から見え、CU全部が使う領域なのです。つまり、NVIDIAでいうところのSMごとに存在するShared Memoryのようなものはないってことになります。Instruction CacheとScala Data Cacheはあったけど、それは明示的にShared Memoryとして使用することは出来ないっぽい感じ。
GCDの容量は、見えるのが32KBまでらしく、それで何とかしなければならないっぽい
つまり、AMDGPUに最適化する際にはShared Memoryを結構絞らなければいけない。
……となると、Global Memoryへのアクセスは必然的に増えることになります?
GCNでちゃんと計測してないけど、NVIDIAではGlobal Memoryを見に行くと数百クロックは軽く飛ぶ。もっとも、スレッドスイッチをしてそれを見えないように隠ぺいはするとはいえ、数百!?と頭を抱えたくなる問題ですよコレ。というわけで、まず、Shared Memoryを活用できるものなら何とかして活用しよう、というのがNVIDIAGPUにおける基本的考え方。
GPUほどの演算性能になってしまうと、もはや足回りが足を引っ張るのは当たり前になってくるわけです。というか今は基本的にみんな足回りでなんとも、という感じ。そのためにFermiではキャッシュを搭載して、Shared Memoryの明示的なコントロールを避けても何とかなるように頑張ってみた。結果は結構効いてきたってカンジ。
もっとも、キャッシュに関してはGCNもFermi同様に積んであるため、それがいいかんじに効いてくるとは思うので、実際のところはそんなに頭を抱えることにはならなそうですが。

おわりに

「こんな感じの勉強会またやるんですか?」
「是非やりたいです」
――なんて、頼もしいお答えを頂けました。
色々とお話させていただいたんですが、面白い話も聞けました。とはいえ、これは書くことではないので、僕の心の中にしまっておきますわらい
割と勉強会というものの知名度が高くないのか、関東・関西GPGPU勉強会とか、x86最適化勉強会とか、その辺はわからない? という風におっしゃられていたかなぁ、というのがちょっと印象的です。
中々そういった勉強会に企業が絡むのは、それはそれでどうよ、という議論を巻き起こしたりはしますが、勉強会に来ている人たちっていうのはそれなりにそういったものが好きな人たちなので、状況調査、あるいは生の意見を聴くためにはとても重要だと個人的に思います。
実際、AMDヘテロジニアスコンピューティングに取り組みます!といいつつ、まだ取組みとして甘いところが多々あるわけです。OpenCLへの対応とか。NVIDIAのCUDAを打倒するには、OpenCLはまだ周辺環境が足りなすぎるなぁ、というのが率直なところなんです。もっとも、CUDAの先行優位性っていうのはやっぱりあるわけで、それを崩すのは容易じゃないっていうのはわかりますけども。
OpenCLによる開発需要が高い、というのはあるにせよ、それはプログラマがかなり頑張って、ノウハウないし内部ライブラリを作っている、という現状があります。それって結局、開発コストに跳ね上がりますよね? となると、なかなか体力のあるところでしかOpenCLをまともに使えなくなる、ということになります
ドキュメントない、ライブラリない、性能でるかどうか未知数――みたいなことになれば、そりゃ、ドキュメントある、ライブラリある、性能はでるかもしれない――なCUDAにいくのもむべなるかな、といった風情。
そういう意味で、OpenCL普及させるのであれば、もう少し周辺環境整備や、OpenCLerを抱き込むようなことをやる必要があるのではないかな、と思います。
なので、勉強会とかにももっと手を伸ばし、OpenCLerを発掘、ないしトレーニングしてあげるとかをやっていくべきではないでしょうか?
――っていうのが、今回思ったところです。
というわけで、関東GPGPU勉強会とかご協力願えませんか、AMDの方々 #ステマ


取りあえず、勉強会それ自体の記事は以上です。
いただいた7770は、これからモリモリ書いていきましょう。
今開発機のOSをFedora17に入れ替えたら大変なことになって哀しいレベルなので…はぁ…

闇鍋プログラミング勉強会に盛大ってレベルじゃないぐらい寝坊してごめんなさいした山田がお送りしました