前言
我對HFSS在運算設定上還滿好奇的,以前花了一些時間做相關測試,也和學校的AMD工作站做些比較。那時的結論差不多在四核心之後效率提升不佳。而超執行緒則沒什麼用,同時脈的i5與i7一樣快。事實上我只有i5-4670K,既沒有六核又沒有HT,只能借別人電腦測試或看一些數據判斷。最近工作因緣際會「獨佔」了雙路Intel E5-2650v2的主機,趁這個機會好好測一測。測試過程有點長,文末有結論。有些現象我目前沒結論,希望各位能互相討論。
測試環境與方法
HFSS 15.0.3
一號機
CPU: Intel E5-2650v2 2.6GHz *2
RAM: DDR3-1600 256GB
OS: Windows Server 2012 R2
二號機
CPU: Intel i5-4670K 3.4GHz
RAM: DDR3-1333 16GB
OS: Windows 7
皆開啟Turbo Boost及省電相關功能。這樣會造成測試上的誤差,因為用的核心數少頻率會比較高,但我沒時間再測了。i5至少boost頻率我可以掌控(3核4核都boost到3.6GHz),E5頻率跳來跳去我抓不準。
運算的核心數可至Tools-Options-HFSS Options-Solver調整。
記錄方式以HFSS匯出的log為準。(對左邊Analysis-Setup點右鍵選Profile)。
所有的log在這,有興趣者自行分析。命名方式幾core就是設定多少核心運算,HT或noHT就是開關超執行緒(i5-4670K沒得開就不標了),有註名fast or interpolation是有跑frequency sweep的數據,有標proj1 proj2是我同時開兩個專案讓HFSS一起跑。建議先看完我的分析再看這些檔案不然容易混亂。數據殘缺如前面所說我時間不太夠,只能跟各位說抱歉了。
首先要了解HFSS在切mesh的時候只會用單核心,多核心主要用在解反矩陣上,這點看real time和cpu time就可以知道。由於mesh花了不少時間,如果比總運算時間其實多核心吃虧,所以我會多比較最後一個adaptive pass解反矩陣的時間。另一個議題是Frequency sweep是否要納入比較。我認為Discrete和Interpolating的運算行為類似最後一個pass,有興趣者去看"8core_HT_interpolating","4core_fast&interpolation_4670"。Fast似乎對多核心運用效率更差,而且real time和cpu time的時間比例顯示很多核心在偷懶,請參閱"6core_HT_fast", "8core_HT_fast", "16core_noHT_fast"。Fast太詭異先不談。
最後我採用的方法是比較總adaptive pass time及最後pass中解反矩陣的時間。以下表格可以看出當運算量愈來愈大的時候,mesh所佔的時間愈來愈少,也就是說看解矩陣的時間較可以代表大專案解起來的狀況,若您剛好選擇Discrete和Interpolating,最後運算總時間會更趨於這樣的比較。
solving是該pass內解反矩陣花的real time,other是該pass內其餘real time。%time是solving佔該pass的時間比例。
核心數對效能的影響
#core: 設定的核心數
%cpu: 最後一個pass中解矩陣時cputime/realtime
adaptive time: 總adaptive花的real time
solver time: 最後一個pass中解矩陣的時間
HT: 超執行緒開關與否
六核和四核是開著HT測的,但我認為關著測不會有差異。看solver time大概在六核後效率就沒什麼成長了。看adaptvie time就知道多核心有多吃虧,如果專案不大的話(RAM需求<16GB)用個人電腦算就好了,因為mesh只能用單核心切,比的是CPU的時脈,server的時脈通常較低。從這表格也可以看出,多核心上場%CPU雖然高但實際計算時間沒少多少,這代表多核運算「浪費」了很多工夫在交換訊息上。核心數再多下去可能會算比較慢。
HT開關對效能的影響
這表格有趣的點很多,先看第一行和第三行。開啟HT下,分別設定16核和32核運算的結果,可以發現HT對HFSS沒有用。奇妙的是第二行關掉HT反而快很多!但隨著核心數減少開關HT就沒什麼差別了。手邊有i7的朋友可以試試看,開啟HT設4核或8核、關掉HT設4核。時間應該幾乎一樣。我不確定是核心數太多還是雙路問題...
多專案
接下來要測多專案同時跑的狀況,但這些結論不太適合個人電腦,因為記憶體很容易不夠XD
#proj是同時跑的專案數量,2-1的意思是跑兩個專案中的其中之一記錄檔
前三行是關掉HT下的測試,若兩專案同時都吃滿CPU的資源(設16核),的確會大幅拖慢速度,但輪流跑似乎不會比較快。中間三行開啟HT就神了,同時跑兩專案竟然可以讓工作管理員中CPU使用率達到100%,而且兩專案所花的時間和單專案花的時間是一樣的!發現這個現象後我請朋友用i7-2600跑小專案做測試。開啟HT不論設4設8核或關掉HT設4核跑一個專案總時間都是110秒。但開啟HT設4核同時跑兩個專案只花了145秒。這邊有幾點和我的想像不一樣:
1.HT過於強大。
2.設滿實體核心的狀態下,跑單專案時i7和E5的表現不同。開啟HT後,i7不會變慢;E5會變慢。HT開啟的狀態下跑雙專案和單專案所花的時間比較,i7會略慢;E5不變。
3.雙專案設滿核心一起跑會搶資源,系統為了交換執行權會浪費時間,之前在學校測有類似的結論,這邊感覺還好。
最後兩行是開啟HT下設8核跑起來的狀況,雙專案感覺慢了一點但我覺得這樣的比較是不公平的。因為設8核的時候跑單專案的速度不論開關HT都差不多,雙專案用上了16執行序可能觸碰了開啟HT後運算變慢的機制。
多專案這邊真的是數據不足,我覺得還有一些項目要測才能釐清狀況:
1.關HT,設8核跑雙專案
2.開HT,設16核跑四專案與設8核跑四專案
3.開HT,設6核跑雙專案
第一點是為了解決我最後兩排數據的疑問。第二點能決定該怎麼壓榨工作站的效能,也能確認互搶資源是不是會浪費時間。第三點純好奇會怎樣。
結論
1.多核心運算的效率差不多在6核之後就沒什麼突破。
2.如果只跑單專案,i5和i7沒有差別。想要發揮i7的能力就得一次跑兩個專案壓榨出超執行緒的效能,採用self-distributed的方式一次跑兩個參數,對於急著出數據的人頗有幫助。
3.這台主機暫時我會建議設8核,因為8核不太會受開關HT影響,有台支援HT的CPU卻把它關掉真的很怪。再說也不是無時無刻都跑多專案,跑單專案八核可說是非常優秀。
4.我自豪的小專案模擬機i5-4670K終於被幹掉了,Intel非消費級CPU真的好強...