該來繼續承上篇了...
前情提要: 第一部份的文章只是把最表面顯著的評測數據列出來.
後面有點計畫想要看看的是這些:
1. Tournament 跟一般版的差距.
2. AVX2 和 SSE4.2 的差距. (需要可使用 AVX2 的 CPU)
3. 評估參數的差距: ShinYane/elmo/relmo8/yaselmo 預定.
4. MultiPV 的差距: MultiPV > 1 的時候, 單執行緒為 bench 1024 1, 多執行緒為 bench 4096 #t , 不考慮使用更深的深度的原因已經寫在爆增的記憶體需求當中.
5. Windows vs Linux: 除了本來就裝了 linux 的機器以外, i7-6700hq 雙系統, 其他的如果可以臨機, 就可以使用 linux live stick 測試 linux 環境下的表現.
在本篇中將會著眼於 1. 的比較. 不過有鑑於平台的限制, 目前 Windows 平台僅對有 AVX2 的 CPU 提供 tournament version, 尚未能編譯出針對於 SSE4.2 甚至是可能的 SSE2 的 tournament version. 所以大部分 SSE4.2 及以下的指令集對於是否開啟 tournament 的評測都受限於 linux 平台, 敬請見諒.
在此部份, 依然延續上一篇的預設評估參數設定和 bench 參數設定, 亦即
1. 單執行緒使用 bench 128 1, 亦即 benchmark 的標準是 RAM = 128 MB, 執行緒僅用一個, 深度限制預設為 17. 多執行緒時使用 bench 128 #t 19, #t 就是執行緒數目, 深度限制為 19.
2. 評估函數預設為 elmo(WCSC27).
所以以現有的資料分成 AVX2 區以及 SSE4.2 區的兩張列表如下:
AVX2 區, 但是目前本區以使用 Windows 作業系統的結果為主.
CPU |
kNPS |
threads |
clock |
Yane version |
OS |
i5-7200U |
880 |
1 |
2.5Ghz T 3.1Ghz |
4.77 64AVX2 T |
Win 10 Pro |
i5-7200U |
1324 |
2 |
2.5Ghz T 3.1Ghz |
4.77 64AVX2 T |
Win 10 Pro |
i5-7200U |
1569 |
4 |
2.5Ghz T 3.1Ghz |
4.77 64AVX2 T |
Win 10 Pro |
i5-7200U |
753 |
1 |
2.5Ghz T 3.1Ghz |
4.77 64AVX2 |
Win 10 Pro |
i5-7200U |
1308 |
2 |
2.5Ghz T 3.1Ghz |
4.77 64AVX2 |
Win 10 Pro |
i5-7200U |
1561 |
4 |
2.5Ghz T 3.1Ghz |
4.77 64AVX2 |
Win 10 Pro |
i7-6700hq |
965 |
1 |
2.6Ghz T 3.5Ghz |
4.77 64AVX2 T |
Win 10 Home |
i7-6700hq |
2455 |
4 |
2.6Ghz T 3.5Ghz |
4.77 64AVX2 T |
Win 10 Home |
i7-6700hq |
3196 |
8 |
2.6Ghz T 3.5Ghz |
4.77 64AVX2 T |
Win 10 Home |
i7-6700hq |
785 |
1 |
2.6Ghz T 3.5Ghz |
4.77 64AVX2 |
Win 10 Home |
i7-6700hq |
2248 |
4 |
2.6Ghz T 3.5Ghz |
4.77 64AVX2 |
Win 10 Home |
i7-6700hq |
2982 |
8 |
2.6Ghz T 3.5Ghz |
4.77 64AVX2 |
Win 10 Home |
在 Windows 環境中, 首先, 對於兩個 CPU 而言, 只有用一個執行緒的時候不使用 tournament 版都會造成超過 10% 的效能損失, 但是對於多執行緒程式而言, i5-7200U 不會因為非 tournament 版造成明顯的效能損失, 但是對於 i7-6700hq, 多執行緒時不使用 tournament 版本, 依然會發生無法忽視的 7-8% 的效能損失.
所以對於比較新穎的機器 (擁有 AVX2 指令集的 Intel CPU) 來說, tournament 版的確有其效能增進的可能性.
SSE 4.2 區, 這邊只能是 linux 作業系統方可比較.
CPU |
kNPS |
threads |
clock |
Yane version |
OS |
i7-2600 |
812 |
1 |
3.4Ghz |
4.77 64SSE4.2 T |
Xubuntu 16.04.3 |
i7-2600 |
2256 |
4 |
3.4Ghz |
4.77 64SSE4.2 T |
Xubuntu 16.04.3 |
i7-2600 |
2275 |
8 |
3.4Ghz |
4.77 64SSE4.2 T |
Xubuntu 16.04.3 |
i7-2600 |
698 |
1 |
3.4Ghz |
4.77 64SSE4.2 |
Xubuntu 16.04.3 |
i7-2600 |
2136 |
4 |
3.4Ghz |
4.77 64SSE4.2 |
Xubuntu 16.04.3 |
i7-2600 |
2259 |
8 |
3.4Ghz |
4.77 64SSE4.2 |
Xubuntu 16.04.3 |
E5-2680 |
742 |
1 |
2.7Ghz T 3.5Ghz |
4.77 64SSE4.2 T |
Ubuntu 16.04.3 |
E5-2680 |
4478 |
8 |
2.7Ghz T 3.5Ghz |
4.77 64SSE4.2 T |
Ubuntu 16.04.3 |
E5-2680 |
5333 |
16 |
2.7Ghz T 3.5Ghz |
4.77 64SSE4.2 T |
Ubuntu 16.04.3 |
E5-2680 |
636 |
1 |
2.7Ghz T 3.5Ghz |
4.77 64SSE4.2 |
Ubuntu 16.04.3 |
E5-2680 |
4261 |
8 |
2.7Ghz T 3.5Ghz |
4.77 64SSE4.2 |
Ubuntu 16.04.3 |
E5-2680 |
5235 |
16 |
2.7Ghz T 3.5Ghz |
4.77 64SSE4.2 |
Ubuntu 16.04.3 |
對於單執行緒的場合所有前面 AVX2 表格所發生的效能差異, 在 SSE4.2 表格中亦存在著類似的效能差距. 但是對於多執行緒而言, 在使用一半的執行緒時大約會出現 5% 左右的效能差距. 若使用所有的執行緒的時候, 效能差距就變得不太明顯了.
然而, 在此處使用 4.77 的資料而不是 4.76, 因為 4.76 版的軟體在後續驗證評測時多次在 MultiPV 部份因為 segmentation fault 而無法完成測試, 故只好使用 4.77 版來進行後續的評測.
整理中的公開資料:
Google Doc剩下的部份只能下篇待續.