フォト

Google AdSense

  • AdSense
無料ブログはココログ

« 大掃除 | トップページ | アセンブラシェーダ »

2004.05.03

GeForce FX 5200 (NV34)での肌色認識シェーダの最適化度

論文には書いて無いけど対象としたシェーダをNVShaderPerfにかけてみる。論文中で命令数を言ったので一応、質疑に困らないように調べるという意味もあります。

オプションでGeForce FX Go 5200は無いので近そうなGeForce FX 5200(NV34)を指定。その結果が下のリンクの先に書いた記事(アセンブラシェーダなんで長いです。コード載せちゃったけどどうせアセンブラシェーダ58行なんてまじめによまんでしょ。それにHLSL版は月末にも公開するし)。

コードが長いのをそのままコピペなんで講評は先に書いておきます。

とりあえず命令数は58なんで、PSで512までコードかけるGeForce FX Go 5200ではかなり余裕。

比較用にNV31(GeForceFX 5600)とNV38(GeForce FX 5950)の比較も載せてあります。

NV31は、うちの研究室DELLノートと近いスペックなんでためしに調べてみましたが、最適化率もサイクルも同じですね。と、いうことは両者の差はクロックだけ違うと考えるのがいいですね。

NV38はサイクルと最適化率が違いますね。サイクルは恐らくピクセルパイプライン数が素直にピクセルパイプライン4 +バーチャルパイプライン4 = 8がきいてるということでしょうかね。

NV31はNV34と差が小さいのでやはり実験でのCPUクロックの差の方が動作速度に影響が大きいというのは納得できるかも。

なお、このあたりの分析はあまり発表しても意味無い(上に分からない)のでここだけの話ということで。

C:\NVShPerf>NVShaderPerf -a NV34 ps.fx
--------------------------------------------------------------------------

Running performance on file ps.fx
**************************************************************************
Technique , Pass
PS Assembly Code:
//
// Generated by Microsoft (R) D3DX9 Shader Compiler 4.09.00.0904
//
// Parameters:
//
// sampler2D TextureSampler;
//
//
// Registers:
//
// Name Reg Size
// -------------- ----- ----
// TextureSampler s0 1
//

ps_2_0
def c0, 0.173999995, 0.606999993, 0.200000003, 0.587000012
def c1, 0.298999995, 0.143999994, 1.11199999, 0.0659999996
def c2, 1.01965904, 0.00885600038, 0.333333343, 0.845844805
def c3, 7.94008493, 0.137931034, 7.78700018, 6.58659315
def c4, 116, -16, 903.299988, 201.699997
def c5, 20, 0, 1, -80
def c6, 504.299988, 5, -25, -5
dcl t0.xy
dcl_2d s0
texld r0, t0, s0
mul r0.w, r0.y, c0.w
mad r0.w, r0.x, c1.x, r0.w
mad r0.w, r0.z, c1.y, r0.w
add r1.w, -r0.w, c2.y
pow r3.w, r0.w, c2.z
mad r2.w, r0.w, c3.z, c3.y
cmp r2.w, r1.w, r2.w, r3.w
rcp r1.w, r2.w
mad r0.w, r0.w, -r1.w, c2.y
mad r3.w, r2.w, c4.x, c4.y
mad r1.w, r2.w, c4.z, c4.y
cmp r1.w, r0.w, r1.w, r3.w
add r0.w, -r1.w, c5.x
add r1.w, r1.w, c5.w
cmp_pp r0.w, r0.w, c5.y, c5.z
cmp_pp r1.w, r1.w, c5.y, c5.z
mul_pp r0.w, r0.w, r1.w
mul r1.w, r0.y, c0.x
mad r1.w, r0.x, c0.y, r1.w
mad r3.w, r0.z, c0.z, r1.w
mul r1.w, r3.w, c2.x
pow r4.w, r1.w, c2.z
mad r1.w, r3.w, -c2.x, c2.y
mad r3.w, r3.w, c3.x, c3.y
cmp r1.w, r1.w, r3.w, r4.w
add r1.w, -r2.w, r1.w
mad r3.w, r1.w, -c6.x, c6.y
cmp_pp r3.w, r3.w, c5.y, c5.z
mul_pp r0.w, r0.w, r3.w
mad r3.w, r1.w, c6.x, c6.z
cmp_pp r3.w, r3.w, c5.y, c5.z
mul_pp r0.w, r0.w, r3.w
mul r3.w, r0.z, c1.z
mad r4.w, r0.y, c1.w, r3.w
mul r3.w, r4.w, c2.w
pow r5.w, r3.w, c2.z
mad r3.w, r4.w, -c2.w, c2.y
mad r4.w, r4.w, c3.w, c3.y
cmp r3.w, r3.w, r4.w, r5.w
add r2.w, r2.w, -r3.w
mul r3.w, r2.w, c4.w
cmp_pp r2.w, -r3.w, c5.y, c5.z
mad r1.w, r1.w, -c6.x, r3.w
mul_pp r0.w, r0.w, r2.w
add r2.w, -r1.w, c6.w
add r1.w, r1.w, c6.z
cmp_pp r2.w, r2.w, c5.y, c5.z
mul_pp r0.w, r0.w, r2.w
cmp_pp r1.w, r1.w, c5.y, c5.z
mul_pp r0, r0.w, r1.w
mov_pp oC0, r0

// approximately 58 instruction slots used (1 texture, 57 arithmetic)
-------------------- NV34 --------------------
Target: GeForceFX 5200 Ultra (NV34) :: Unified Compiler: v56.72
Cycles: 71 :: # R Registers: 2
GPU Utilization: 100.00%

-------------------- NV31 --------------------
Target: GeForceFX 5600 Ultra (NV31) :: Unified Compiler: v56.72
Cycles: 71 :: # R Registers: 2
GPU Utilization: 100.00%

-------------------- NV38 --------------------
Target: GeForceFX 5950 Ultra (NV38) :: Unified Compiler: v56.72
Cycles: 34 :: # R Registers: 2
GPU Utilization: 87.00%

« 大掃除 | トップページ | アセンブラシェーダ »

Programming」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2210/534086

この記事へのトラックバック一覧です: GeForce FX 5200 (NV34)での肌色認識シェーダの最適化度:

« 大掃除 | トップページ | アセンブラシェーダ »