CodeXL CPU/GPU統合プロファイラ+デバッガ

AMD CodeXLは従来バラバラに提供されていたAMDのプロファイラ/デバッガ群、CodeAnalyst(CPU向け)やgDEBugger(GPU向け)を統合するアプリケーションで、QtベースのWin32/Linux版とVSプラグインが提供されている。現在はパブリックベータ。
Intelのような他のCPUベンダにはGPUの良いデバッガ環境が無いが、gDEBuggerはもともとはAMDから独立したGPUデバッガ製品だったのをAMDが買収したものなのでそれなりによくできている。DirectCompute/OpenCLの常識的なデバッグ機能を提供する。
VerySleepyやCodeTuneのような単純な時間的プロファイラの代替にも使えなくはないが、重すぎる。あと、細かいシステム要求も微妙に上昇していて、要するにOpenCLをサポートしたGPUとAVXをサポートしたOS(7以降)が必要。
興味深いのは、GPUパフォーマンスグラフのレンダリングにQtWebKitとjqPlotを使っている点。そんなにグラフの描画って実装面倒だろうか。。
CodeXLに"欠けて"いる重要な機能は、CPUソフトウェアのチューニングに掛かる部分だろう。例えばIntelのVTuneは同期(lock)オブジェクトの解析機能が有るが、CodeXLには相当する機能はない。細粒度のロックを用いたプログラミングはGPUで行われることはほぼ無いが、CPUでは依然重要な性能解析ポイントと言える。

競争が熱いのはハードウェア機能を使用したプロファイリングで、Intelはスタックのハードウェアサンプリングをサポートしたり、AMDIBSなど微妙に便利なパフォーマンスカウンタの拡充を図っている。AMDGPU部分のパフォーマンスカウンタも自社のツールでサポートしている。
いわゆるマネージドコード(Javaや.netなどVM上のコード)はIntel/AMDともに弱い。IntelのVTuneはJavaの解析を最近サポートした。AMD CodeAnalystはJavaの解析を大昔はサポートしていたが、最近のバージョンではサポートしていない。この点は今後の競争に期待したい部分と言える。
ユーザコードとプロファイラとの統合は意識されつつある。例えばCodeXLはGPUタイムラインに対してマーカを挿入するためのAPIを提供している。