PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 電腦硬體討論群組 > 系統組件
帳戶
密碼
 

  回應
 
主題工具
foxtm
Power Member
 
foxtm的大頭照
 

加入日期: Jan 2002
您的住址: 台北苦命IT工人
文章: 586
Smile

引用:
作者----
沒有什麼最佳化 他只是把應用程式編譯後 加入那個指令集的opcode而已
喔..真的是這樣嗎...

讓我們來看個stackoverflow上平易近人的範例

當然怕有人只看的懂opcode看不懂程式
所以簡單說明一下那個問答的內容

發問者寫了一段簡單的程式,會將A陣列中亂數產生的32bit浮點數,開三次平方根後存到B陣列
使用了三種方法來進行計算..
1.傳統的x87 (一次處理一組32b浮點數)
2.SSE(一次處理四組32b浮點數) 及
3.AVX (一次處理八組32b浮點數)
而執行後SSE的確較傳統X87有可觀的效能增長,但AVX執行效能卻等同於SSE,為什麼呢?


原因是因為,程式編譯後分別是呼叫 SQRTPS(SSE) VSQRTPS(AVX)兩組opcode來執行
根據此份文件中 Page 98 所述,VSQRTPS 的 Latency 為 42 ,是 SQRTPS 的 Latency 21 的兩倍,
所以兩兩相抵之下沒有明顯的效能增益。

另外也提到了AVX指令集在除法跟開根號並沒有太大的效能增益,在加法及乘法上面就有了。

當然這是 2012年初 SB 的狀況,也許現在沒這情況了,但僅在提供一個簡單的範例而已。


故,壓根不是什麼編譯器加入opcode就是所謂的最佳化,
要如何使用AVX指令集去優化程式中的加乘法部分,甚至改變演算法減少除法及開根號的比重。
這些都是要靠開發人員用腦袋去安排思考的,最好是只靠編譯器加入opcode就好
     
      
舊 2015-05-05, 02:41 PM #61
回應時引用此文章
foxtm離線中  
csshih
*停權中*
 
csshih的大頭照
 

加入日期: Mar 2011
文章: 1,522
引用:
作者foxtm
喔..真的是這樣嗎...

讓我們來看個stackoverflow上平易近人的範例 (http://stackoverflow.com/questions/...prove-speed-why)

當然怕有人只看的懂opcode看不懂程式
所以簡單說明一下那個問答的內容

發問者寫了一段簡單的程式,會將A陣列中亂數產生的32bit浮點數,開三次平方根後存到B陣列
使用了三種方法來進行計算..
1.傳統的x87 (一次處理一組32b浮點數)
2.SSE(一次處理四組32b浮點數) 及
3.AVX (一次處理八組32b浮點數)
而執行後SSE的確較傳統X87有可觀的效能增長,但AVX執行效能卻等同於SSE,為什麼呢?


原因是因為,程式編譯後分別是呼叫 SQRTPS(SSE) VSQRTPS(AVX)兩組opcode來執行
根據此份文件 (http://www.agner.org/optimize/instruction_tables.pdf)中 Page 98 所述,VSQRTPS 的 Latency 為 42 ,是 SQRTPS 的 Latenc...


這位機乖騎士除了OS大溼
還是個編譯器大溼
 
舊 2015-05-05, 03:32 PM #62
回應時引用此文章
csshih離線中  
bureia
Golden Member
 

加入日期: Dec 2001
文章: 2,904
那照這種邏輯Haswell的Core i3應該是最佳選擇
反正AMD全線CPU都不能跑AVX2
還談什麼執行效能
舊 2015-05-05, 04:28 PM #63
回應時引用此文章
bureia離線中  
foxtm
Power Member
 
foxtm的大頭照
 

加入日期: Jan 2002
您的住址: 台北苦命IT工人
文章: 586
Smile

引用:
作者BALAKILLER
能不能正常跑跟效能好不好 根本是兩回事 http://s.blog.xuite.net/_image/emotion/shi1/m235.gif
不管你用什麼高階語言寫的程式碼 編譯之後最終的結果都是OPCODE
最怕的就是有些人只懂高階語言 不懂OPCODE 誤人誤己
應用程式執行時 會把每個區段包含代碼段 映射到記憶體空間
然後當執行到CPU不支援 也就是不認識的操作代碼
OS 核心會以 INVALID_OPCODE 來作處理 然後就是程式異常退出 也就是沒辦法跑
拿 AMD K10 處理器為例 指令集只支援到SSE3 SSE4A
以 SSSE3 phaddw m64 指令做範例
Opcode: 0x0f 0x38 0x01
例1 WinXP 沒有指令集軟模擬的情況下 CPU 不認識SSSE3的OPCODE指令
http://i142.photobucket.com/albums/...mg/winxp-op.png
例2 OS X 不認識SSSE3的OPCODE指令 但有軟模擬處理 INVALID_OPCODE
http://i142.photobucket.com/albums/...dimg/OSX-OP.png
...
喔..
所以你東拉西扯了老半天,到底有什麼合法軟體或作業系統一定要AVX才能執行咩?

同時存在著對AVX及SSE最佳化的代碼,判斷根據環境來擇一執行,很難理解嗎?
舊 2015-05-05, 04:32 PM #64
回應時引用此文章
foxtm離線中  
wuciboy
Junior Member
 

加入日期: Feb 2005
文章: 713
舊 2015-05-05, 04:35 PM #65
回應時引用此文章
wuciboy離線中  
csshih
*停權中*
 
csshih的大頭照
 

加入日期: Mar 2011
文章: 1,522
這段唸一下麻煩您
引用:
"Regor" (45 nm)

All models support: MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow!, NX bit, AMD64, Cool'n'Quiet, AMD-V[3]


還有mac develop forum
https://developer.apple.com/library...an7/SSE3.7.html

閣下手上的AMD Regor處理器有問題喔
人家公告說有
你跑出來卻沒有
你要我們相信AMD和apple MAC的公告還是你手上的破圖?
舊 2015-05-05, 04:43 PM #66
回應時引用此文章
csshih離線中  
foxtm
Power Member
 
foxtm的大頭照
 

加入日期: Jan 2002
您的住址: 台北苦命IT工人
文章: 586
Smile

引用:
作者BALAKILLER
你扯了老半天 "INVALID_OPCODE 程式當掉"跟 "效能最佳化" 什麼關係
最佳化的代碼 你是在說什麼鬼
這樣說好了
例如 一個新的指令 可以取代10個舊的指令
那你插入一個新的指令的OPCODE就好了 何必再寫10個舊的指令
新的指令本身就是 舊指令的最佳化了 還有什麼 SSE最佳化代碼
我看你再回去練10年 再來跟人瞎掰 什麼最佳化代碼 你個拔辣
喔?
就跟著你的例子來說咩
只要程式碼前端加上判斷,碰到新機器就跑新指令,舊機器就跑舊指令。
兩邊都可以相容有什麼不好理解的
該不會你連程式分支的概念都沒有吧

喔對了,請問哪些合法的系統或應用程式不能在沒有AVX上的機器執行,
不管我要不要去練十年,現實面人家都會做好相容阿
舊 2015-05-05, 05:01 PM #67
回應時引用此文章
foxtm離線中  
bureia
Golden Member
 

加入日期: Dec 2001
文章: 2,904
引用:
作者BALAKILLER
這樣說好了
例如 一個新的指令 可以取代10個舊的指令
那你插入一個新的指令的OPCODE就好了 何必再寫10個舊的指令
新的指令本身就是 舊指令的最佳化了 還有什麼 SSE最佳化代碼

除非你直接寫組合語言碼要玩死不支援的CPU

不然高階語言一般情況是會啊,新舊指令都會共存,
而且也不用自己寫10個舊指令Compiler會產生,
不然不支援新指令集的CPU不就不能跑
舊 2015-05-05, 05:05 PM #68
回應時引用此文章
bureia離線中  
csshih
*停權中*
 
csshih的大頭照
 

加入日期: Mar 2011
文章: 1,522
引用:
作者foxtm
喔?
就跟著你的例子來說咩
只要程式碼前端加上判斷,碰到新機器就跑新指令,舊機器就跑舊指令。
兩邊都可以相容有什麼不好理解的
該不會你連程式分支的概念都沒有吧

喔對了,請問哪些合法的系統或應用程式不能在沒有AVX上的機器執行,
不管我要不要去練十年,現實面人家都會做好相容阿


foxtm兄
他拿出來demo的CPU和mac都有問題,根本是不是正式版都是未知數
居然和AMD與apple公告完全不一樣
跟這個爭下去,只有浪費自己的時間而已
舊 2015-05-05, 05:06 PM #69
回應時引用此文章
csshih離線中  
foxtm
Power Member
 
foxtm的大頭照
 

加入日期: Jan 2002
您的住址: 台北苦命IT工人
文章: 586
Smile

引用:
作者BALAKILLER
問題是APP都是人家編譯好的 裡面有AVX的操作代碼 你的Intel閹割版就跑不動了啊
那Adobe AE 的原始碼你有嗎
你要怎麼在AE上加入
if 新機器 AVX
else 舊機器 SSE
你到底想說什麼鬼
喔~~
終於盼望到你舉例東西出來了,可是先生有問題耶~~

After Effects CC (2014) system requirements
引用:
作者After Effects CC (2014) system requirements and language versions Windows
Intel Core2 Duo or AMD Phenom II processor with 64-bit support
Microsoft Windows 7 with Service Pack 1, Windows 8, or Windows 8.1
4 GB of RAM (8 GB recommended)
5 GB of available hard-disk space; additional free space required during installation (cannot install on removable flash storage devices)
Additional disk space for disk cache (10 GB recommended)
1280 x 1080 display
OpenGL 2.0–capable system
QuickTime 7.6.6 software required for QuickTime features
Optional: Adobe-certifi ed GPU card for GPU-accelerated ray-traced 3D renderer
Internet connection and registration are necessary for required software activation, validation of subscriptions, and access to online services.*
正版的Adobe AE Windows 可以在沒有 AVX 的 C2D 跑耶?
還是你又要說adobe官方規格不妥當?
舊 2015-05-05, 05:17 PM #70
回應時引用此文章
foxtm離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是02:59 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。