PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   系統組件 (https://www.pcdvd.com.tw/forumdisplay.php?f=19)
-   -   現在組AMD 還行嗎 (https://www.pcdvd.com.tw/showthread.php?t=1076932)

foxtm 2015-05-05 02:41 PM

引用:
作者----
沒有什麼最佳化 他只是把應用程式編譯後 加入那個指令集的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就好 :o

csshih 2015-05-05 03:32 PM

引用:
作者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大溼
還是個編譯器大溼 :laugh:

bureia 2015-05-05 04:28 PM

那照這種邏輯Haswell的Core i3應該是最佳選擇
反正AMD全線CPU都不能跑AVX2
還談什麼執行效能 :o

foxtm 2015-05-05 04:32 PM

引用:
作者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最佳化的代碼,判斷根據環境來擇一執行,很難理解嗎?

wuciboy 2015-05-05 04:35 PM

引用:
作者BALAKILLER
...

http://blog.xuite.net/shichwan/know...%9B%9E%E4%B9%96

csshih 2015-05-05 04:43 PM

這段唸一下麻煩您
引用:
"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的公告還是你手上的破圖? :laugh: :laugh: :laugh:

foxtm 2015-05-05 05:01 PM

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

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

bureia 2015-05-05 05:05 PM

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

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

不然高階語言一般情況是會啊,新舊指令都會共存,
而且也不用自己寫10個舊指令Compiler會產生,
不然不支援新指令集的CPU不就不能跑

csshih 2015-05-05 05:06 PM

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

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


foxtm兄
他拿出來demo的CPU和mac都有問題,根本是不是正式版都是未知數
居然和AMD與apple公告完全不一樣
跟這個爭下去,只有浪費自己的時間而已 :jolin:

foxtm 2015-05-05 05:17 PM

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

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官方規格不妥當?


所有的時間均為GMT +8。 現在的時間是06:51 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。