AMD CodeAnalyst

by syoyo

http://developer.amd.com/downloads.aspx

AMD のサイトには、パフォーマンスアナライザ CodeAnalyst というのがあります。
たぶんできることは VTune や Mac の Shark と同じなのですが、
ひとつそれらと違う特徴として、パイプラインシミュレーションの解析結果の視覚化ができます。

下記は、レイトレーシングのレイと三角形の交差判定部分のコードの
Athlon X2 上でのパイプライン結果です。

codeanalyst_thumb

fld でのロード待ちで、fcomip がストールしているのが見て取れます。
よってこの部分を最適化できれば高速化が期待できることが分かります。

現在の CPU はアウトオブオーダー実行、マイクロコード実行など複雑なことを行うようになっているので、
このパイプライン結果にその結果が含まれていたとしてもいなかったとしても、
そこから中身の実行の詳細を緻密に解析するのはちょっと骨の折れる作業になりますね。
(このインストラクションはあのインストラクションの結果待ちでストールしているとか)

Linux の方にはこのシミュレーション機能だけ抜き出したであろう、 Simulation Utilities があり、
個人的にはこのようなツールはコマンドラインで実行したほうが使いやすいので(それに Win版はすぐ落ちますし…)
こちらを使おうと試みたのですが、 Debian AMD64 な環境では残念ながらうまく動きませんでした…

PowerPC Mac には simg4 や simg5 というシミュレータがあり、
こちらもパイプラインシミュレーション結果を出力してくれます(テキスト出力ですが)。
Intel の場合は、少し探してみた感じではパイプラインシミュレータやソフトウェアシミュレータは提供していないようです。

Wald 先生はどうか分かりませんが、
MLRTLA の人は、きっとこのようなパイプライン解析まで行って、ガチガチに最適化しているんだろうなぁ。

Advertisements