Re: [請益] 請問Haswell集顯效能提升的問題

看板PC_Shopping作者 (BL2400PT真不錯)時間12年前 (2012/05/09 00:52), 編輯推噓36(3607)
留言43則, 40人參與, 最新討論串1/2 (看更多)
※ 引述《ericfriendex (艾力克斯朋友)》之銘言: : → Khadgar:Virtual MVP不是會有把某些frame skip的狀況嗎 04/26 02:31 : → Khadgar:仔細想想就知道那根本形同作弊 04/26 02:31 : → Khadgar:跟那些加速器的差別只是他只Skip少一些而已... 04/26 02:33 : → Khadgar:話說的好聽,說如果兩個frame沒有明顯改變就不re-render 04/26 02:33 : → Khadgar:這種"看起來智慧式的"東西最容易出問題 04/26 02:34 現在對於這個作弊事件只有兩個"旁證",但是這兩個目前還算不上直接證據. 這兩個證據是..... 1.奇數和偶數frame,相隔時間很短,但是這不只是Virtu,還有SLI和Crossfire 都會發生的,這個現象叫作micro-stuttering,很多網站都有解釋.Tom's hardware, Anandtech,3D甚麼的....網路搜尋一下可以作個基本了解 但等等底下會解釋為甚麼大家都會發生micro-stuttering. 以FPS的觀點來看,micro-stuttering則會上下跳動 * * * * * * / \ / \ / \ / \ / \ / \ 雙GPU * * * * * * * ----------------------- 單GPU 2.藉由API攔截,發現call "draw a frame"的命令數只有一半 不過我看不懂法文所以除了看截圖判斷,沒辦法重現他的測試方式...... 所以我不確定這是否是很強的證據 因為Lucid Virtu就算是個黑盒子 他也一定是 使用前 使用後 | | [ X } [ A ] | / \ [B] [C] \ / [ D ] | 這樣的拆法,那麼原本攔截API的方法,要確定攔截到A或者是D,而如果攔截到B或者是C. 那麼本來數量就會只有一半了...... "為甚麼會發生micro-stuttering,以及,SLI/Crossfire/Virtu等多GPU系統的共通問題" 多重GPU系統下,必須要作的事情是把工作分攤到不同的gpu上.基本上會採用的方法有 1.AFR (Alternate Frame Rendering) AFR就是把每個frame,依序分配給不同的GPU 原先是: 111111111 22222222 3333333 44444444 111111111 22222222 3333333 44444444 111111111 --> 22222222 --> 3333333 --> 44444444 111111111 22222222 3333333 44444444 AFR就分配成: AAAAAAAAA BBBBBBBB AAAAAAA BBBBBBBB AAAAAAAAA BBBBBBBB AAAAAAA BBBBBBBB AAAAAAAAA --> BBBBBBBB --> AAAAAAA --> BBBBBBBB AAAAAAAAA BBBBBBBB AAAAAAA BBBBBBBB AFR的好處是相鄰的FRAME計算量都差不多,所以有最好的負載平衡. 在賽豬公的時候分數會很好看,可是micro-stuttering的問題就是AFR造成的 目前各種系統,2GPU的幾乎都預設用AFR,3/4GPU就未必是 2.SFR 同一個Frame切割成上下兩半或者左右兩半,然後交給各個GPU執行 基本上像是: AAAAAAAAA AAAAAAAA AAAAAAA AAAAAAAA AAAAAAAAA AAAAAAAA AAAAAAA AAAAAAAA BBBBBBBBB --> BBBBBBBB --> BBBBBBB --> BBBBBBBB BBBBBBBBB BBBBBBBB BBBBBBB BBBBBBBB 這樣會有甚麼問題呢?由於任何遊戲的上下半部的計算量都不均等. 所以實際上他有很嚴重的負載不平衡,很容易拖慢FPS,driver中會因應 計算量大小而調整分配畫面的比率. SFR有沒有好處?喔,有...除了不發生micro-stuttering之外,畫面上半段 和畫面下半段所用的貼圖通常不太一樣.所以AFR會爆貼圖記憶體量的,SFR 會節約一點貼圖.怎麼說呢?當你計算畫面上半段,就不需要載入地面的貼圖, 計算畫面下半段 就不需要載入天空的貼圖這意思 但SFR在賽豬公上非常吃虧,所以除非特定遊戲不然預設多半不是SFR 3. SFR/AFR混血 用於超過2個GPU的場合.通常用在4 GPU的場合,可以分為AFR in SFR或者是 SFR in AFR這兩種.簡單說原理和前面AFR/SFR一樣,差別在先分割畫面成兩塊 還是先分奇偶frame...反正最後結果就類似 AAAAAAAAA BBBBBBBB AAAAAAA BBBBBBBB AAAAAAAAA BBBBBBBB AAAAAAA BBBBBBBB CCCCCCCCC --> DDDDDDDD --> CCCCCCC --> DDDDDDDD CCCCCCCCC DDDDDDDD CCCCCCC DDDDDDDD 4.區塊分割,Tile Based(有正式命名嘛?) 比較類似SFR,但不是以一條線分割開來,而是把畫面切成非常多個區塊,這些區塊 分給兩個GPU計算 AABBAABBA AABBAABB AABBAABB AABBAABB AABBAABBA AABBAABB AABBAABB AABBAABB BBAABBAAB --> BBAABBAA --> BBAABBAA--> BBAABBAA BBAABBAAB BBAABBAA BBAABBAA BBAABBAA 這是ATI的獨門方法.優點在負載平衡會比SFR好,也沒有AFR的micro-stuttering 缺點.當然也不會節約多少顯示記憶體啦. 5.由兩張顯示卡分別計算fsaa的MULTI-sample,再組合起來 可以稱為SLI-AA or Crossfire-AA 因為SFAA是在同一個pixel內取多個sample點計算 再把顏色混合起來, 所以這多個sample點會分給兩個gpu計算. 大概是這樣吧 |--------------------| | | PIXEL放大版本 | 1 2 3 | | | 假定沒開FSAA,那麼取樣點就是O,開了就會是四週的 | O | sub-sample 1~6不等,那麼就平均分配給這些gpu計算 | | 不同的sub-sample...不過實際的位置不是在我畫的地方 | 4 5 6 | | | ---------------------- 不過SLI-AA or Crossfire-AA大多數是用來提高最大的AA支援數量,極少用在 提昇效能方面 6.SLI-multiview nVidia Quadro的獨家方法.說起來沒甚麼...就是SLI的時候兩個gpu的螢幕都可以輸出, 畫面範圍在哪個gpu上就由誰計算.只有cad程式比較有意義. 7.每個物件分開給不同的GPU畫 Lucid 的獨家技術 有展示過 有沒有拿來用就不知道了 基本上同一個畫面可能背景給GPU 1畫,前面人給GPU2畫之類 然後,為甚麼AFR會造成micro-stuttering?? 基本上單一gpu的時候,fps相對很穩定,前面的圖重新看一次,就如同 * * * * * * / \ / \ / \ / \ / \ / \ 雙GPU * * * * * * * ----------------------- 單GPU 不幸一點的時候會發生 * * * * * * / \ / \ / \ / \ / \ / \ 雙GPU --------------------------- 單GPU * * * * * * * 雙GPU的最低FPS還低於單GPU. 改用時間軸而且拉長來看,上面的圖則會變成是: 單GPU 1--------2-------3-------4-------5 雙GPU 1--2-----3--4----5--6-----7--8-----9--10 為什麼這樣喔?因為AFR下,第二個gpu要把整個framebuffer... 雙GPU AFR的理想 GPU2 ------2----------4-----------6------------8------- GPU1 1-----------3-----------5------------7------------9 合成後 1-----2-----3----4------5----6-------7----8-------9 實際上 GPU2 -------22-----------44-----------66-----------88------- GPU1 / cmd leg \ copy回來的延遲 1-----------3-----------5------------7------------9 合成後 1-------2---3--------4--5---------6--7---------8--9 由於繪圖指令分給第二個GPU的時候可能會比較慢.加上GPU2畫好之後. 還要把frame複製回gpu1 (在上圖中以22,44,66,88表示這過程) 所以合成後,2-3間比較短,3-4間卻很長.如果計算每個frame之間的 時間差,會發現有一半的時間差只比單gpu的時候好一點.這個現象即為 micro-stuttering. 那這個會對玩遊戲有甚麼影響呢? 基本上....單gpu的時候假如通常兩個frame都相隔20ms,但是雙gpu的時候 兩個frame有一半相隔18ms,一半相隔6ms,那麼FPS賽豬公,雖然雙GPU的fps會是 單gpu的170%, 可是體感的結果,雙gpu只比單gpu最快快10%.因為是以最糟糕的兩個差距 (18ms:20ms)來算的. 而且實際上.由於這個是交互出現的間隔,所以frame之間以18-6-18-6-.... 的間隔,視覺上也可能比20-20-20-20....還慘.因為 (1)人眼會注意到最差的地方 (2) 3D Game的時候,物體的移動量都是以兩個相隔的frame差多少時間去算的, 可是micro-stuttering的誤差,會造成應用程式誤判你每個frame的移動量,以這個例子. 他會當作要以12-12-12-12(ms)去計算移動量. 那麼每個frame的移動量: 18- 6-18- 6-18 -6 ......... 12-12-12-12-12-12 快 慢 50 50 % % 每個單數frame計算的移動量多了50%,偶數的frame少了50%,本來平順的3D遊戲 的移動就會變成在抖啊抖的.........冏 總之,AFR不但讓你的眼睛體感沒有比單GPU好上多少,操作體感 更有可能退化到不如單GPU,所以採用雙 GPU SLI/Crossfire的要有認知, 如果能改最好避免這種只有賽豬公有用的AFR,不過AMD driver沒得改,nVidia 以前可以強制SFR現在不行.但是3 GPU/4GPU 通常就不採用純AFR了(理論上可以 實際上弄下去會更慘),所以micro-stuttering的現象會減輕. 而且,我也很認真的相信,真的要享受遊戲,多GPU絕對不是個好方案 一般來說雙GPU建議專業使用比如程式開發者要了解雙GPU有甚麼慘劇, 或者你電腦有產值可以藉由顯示卡或者是GPGPU程式產生產值再說. 3~4 GPU嘛.....以這東西的實用性應該是GPU廠商付錢請我們測試, 才不需要由使用者花錢來用好嗎(應該沒有廠商會鳥你XD) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.78.54

05/09 00:56, , 1F
簡單易懂 推
05/09 00:56, 1F

05/09 00:58, , 2F
以前沒試過重點標色的方法 應該要改這樣比較好閱讀?
05/09 00:58, 2F

05/09 00:59, , 3F
快出來拜神
05/09 00:59, 3F

05/09 01:04, , 4F
還是單GPU比較實在。
05/09 01:04, 4F

05/09 01:09, , 5F
有神快拜!!! 這次的好像有點懂 又好像不太懂...
05/09 01:09, 5F

05/09 01:10, , 6F
Qrz 這篇比以前找到的英文討論容易懂點
05/09 01:10, 6F

05/09 01:16, , 7F
就是這樣 喵
05/09 01:16, 7F

05/09 01:30, , 8F
請教一下,NV新的 Adaptive VSync 有可能是解答嗎?
05/09 01:30, 8F

05/09 01:43, , 9F
05/09 01:43, 9F

05/09 01:49, , 10F
寫得太好了 以後買單卡就好!
05/09 01:49, 10F

05/09 01:53, , 11F
專業
05/09 01:53, 11F

05/09 01:58, , 12F
簡單易懂 推
05/09 01:58, 12F

05/09 02:02, , 13F
有神快拜....<(_ _)>
05/09 02:02, 13F

05/09 02:08, , 14F
我以前寫的東西都比今天這篇基礎更簡單啦.怎麼大家比較
05/09 02:08, 14F

05/09 02:09, , 15F
看的懂
05/09 02:09, 15F

05/09 02:10, , 16F
越吃越重鹹 (拖走
05/09 02:10, 16F

05/09 03:47, , 17F
推一個
05/09 03:47, 17F

05/09 05:29, , 18F
有神快拜
05/09 05:29, 18F

05/09 07:18, , 19F
有神快拜....<(_ _)>
05/09 07:18, 19F

05/09 09:01, , 20F
神抱歉 這次看到一半就END了 推
05/09 09:01, 20F

05/09 09:15, , 21F
功力太差~ 看不到兩句就推文了~
05/09 09:15, 21F

05/09 09:16, , 22F
看不懂end... 果然是神的境界啊
05/09 09:16, 22F

05/09 09:26, , 23F
推推~~深入淺出~
05/09 09:26, 23F

05/09 09:41, , 24F
嗯嗯 沒錯 就是這樣~
05/09 09:41, 24F

05/09 10:56, , 25F
有神快推
05/09 10:56, 25F

05/09 11:31, , 26F
恩...跟我想的差不多
05/09 11:31, 26F

05/09 11:55, , 27F
我剛跟牛魔王一起出來看上帝...
05/09 11:55, 27F

05/09 12:05, , 28F
推一個
05/09 12:05, 28F

05/09 13:07, , 29F
lol
05/09 13:07, 29F

05/09 13:17, , 30F
推 長知識
05/09 13:17, 30F

05/09 14:19, , 31F
好文推
05/09 14:19, 31F

05/09 14:38, , 32F
難得有篇看得懂的 快推!!
05/09 14:38, 32F

05/09 16:37, , 33F
快推 不然人家以為我們不懂
05/09 16:37, 33F

05/09 17:32, , 34F
看到一半就想到回頭看ID....快拜 <(_ _)>
05/09 17:32, 34F

05/09 22:21, , 35F
這次稍微看得懂給推
05/09 22:21, 35F

05/10 00:59, , 36F
push
05/10 00:59, 36F

05/10 10:34, , 37F
這篇淺顯易懂 了解
05/10 10:34, 37F

05/10 16:34, , 38F
好神~~ 雖然看不太懂~!! 還是希望能多有些這種文~XD
05/10 16:34, 38F

05/10 17:35, , 39F
神都放棄雙GPU了 大家快醒悟吧
05/10 17:35, 39F

05/10 17:43, , 40F
有神開示
05/10 17:43, 40F

05/12 12:15, , 41F
<(_ _)> 不過是lag不是leg呀
05/12 12:15, 41F

05/12 23:47, , 42F
樓上抓到神的失誤 給大功一隻XDD
05/12 23:47, 42F

05/13 00:33, , 43F
打完有看到 但不想留下修改記錄 XD
05/13 00:33, 43F
文章代碼(AID): #1FgKz4tA (PC_Shopping)
文章代碼(AID): #1FgKz4tA (PC_Shopping)