> umfangreichere Testläufe haben inzwischen gezeigt, dass meine VS-Kompilate nur 75%-80% der Geschwindigkeit der heruntergeladenen Dev-Stockfishe haben.
> Andererseits liefert mir das bunkbail-1.2.1-Stockfish-Kompilierpaket von Nabil Danial keine Kompilate mehr.
### 3.5 Optimization
ifeq ($(optimize),yes)
...
ifeq ($(comp),mingw)
CXXFLAGS += -mtune=native
# CXXFLAGS += -march=core2 -mtune=native
## EXPerimental
ifeq ($(comp_version),$(filter $(comp_version),vEXP))
CXXFLAGS += -O3
##
CXXFLAGS += -fira-algorithm=CB
CXXFLAGS += -fira-region=all
CXXFLAGS += -finline-functions
CXXFLAGS += -funswitch-loops
# CXXFLAGS += -fgcse -fgcse-lm -fgcse-sm -fgcse-las -fgcse-after-reload
# CXXFLAGS += --param allow-store-data-races=1
# CXXFLAGS += --param omega-eliminate-redundant-constraints=1
CXXFLAGS += --param predictable-branch-outcome=16
CXXFLAGS += -ftree-loop-ivcanon -ftree-loop-im
CXXFLAGS += -funroll-all-loops
CXXFLAGS += -funsafe-loop-optimizations
# CXXFLAGS += -Wunsafe-loop-optimizations
###########
# CXXFLAGS += -fno-early-inlining
# CXXFLAGS += -funroll-loops
# CXXFLAGS += -fipa-pta -fivopts
# CXXFLAGS += --param l1-cache-size=256 --param l2-cache-size=3072 --param l1-cache-line-size=64
# CXXFLAGS += -fvariable-expansion-in-unroller
# CXXFLAGS += -fbranch-target-load-optimize
# CXXFLAGS += -freschedule-modulo-scheduled-loops -fselective-scheduling -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops
# CXXFLAGS += -floop-interchange -floop-strip-mine
endif
## >4.7
ifeq ($(comp_version),$(filter $(comp_version),v473 v473p v474))
CXXFLAGS += -O3
CXXFLAGS += -funroll-all-loops
CXXFLAGS += -funswitch-loops
CXXFLAGS += -ftree-loop-im
CXXFLAGS += --param ipcp-unit-growth=75 --param inline-unit-growth=67 -finline-limit=256
CXXFLAGS += --param predictable-branch-outcome=17
CXXFLAGS += -fgcse-sm -fgcse-las
CXXFLAGS += -fgcse-after-reload
CXXFLAGS += -fira-algorithm=CB
CXXFLAGS += -fira-region=all
endif
## >4.8
ifeq ($(comp_version),$(filter $(comp_version),v483 v484p v484 v485))
CXXFLAGS += -O3
CXXFLAGS += --param predictable-branch-outcome=15
CXXFLAGS += --param ipcp-unit-growth=75 --param inline-unit-growth=67 -finline-limit=256
CXXFLAGS += -finline-functions
CXXFLAGS += -fno-early-inlining
CXXFLAGS += -fgcse-sm -fgcse-las -fgcse-after-reload
endif
## >4.9
ifeq ($(comp_version),$(filter $(comp_version),v490 v491 v491p v492 v492p v493))
CXXFLAGS += -O3
CXXFLAGS += -finline-functions
CXXFLAGS += --param predictable-branch-outcome=15
CXXFLAGS += -funsafe-loop-optimizations
CXXFLAGS += -Wunsafe-loop-optimizations
CXXFLAGS += --param ipcp-unit-growth=50 --param inline-unit-growth=34 -finline-limit=256
CXXFLAGS += -funswitch-loops
CXXFLAGS += -ftree-loop-im
CXXFLAGS += -fprefetch-loop-arrays
CXXFLAGS += -fvect-cost-model=unlimited
CXXFLAGS += -fno-tree-slp-vectorize
CXXFLAGS += -fno-tree-loop-vectorize
CXXFLAGS += -fgcse-sm -fgcse-las
CXXFLAGS += -fgcse-after-reload
CXXFLAGS += -funroll-all-loops
CXXFLAGS += -maccumulate-outgoing-args -minline-all-stringops
endif
## >=5.0
ifeq ($(comp_version),$(filter $(comp_version),v500 v510p))
CXXFLAGS += -Ofast
CXXFLAGS += -finline-functions
CXXFLAGS += -fdevirtualize-at-ltrans
CXXFLAGS += -fdevirtualize-speculatively
CXXFLAGS += -fgcse-sm -fgcse-las
CXXFLAGS += -fgcse-after-reload
CXXFLAGS += -funsafe-loop-optimizations
CXXFLAGS += -Wunsafe-loop-optimizations
CXXFLAGS += --param predictable-branch-outcome=17
CXXFLAGS += --param ipcp-unit-growth=50 --param inline-unit-growth=34 -finline-limit=256
CXXFLAGS += -funswitch-loops
CXXFLAGS += -funroll-all-loops
CXXFLAGS += -ftree-loop-ivcanon -ftree-loop-im
CXXFLAGS += -fprefetch-loop-arrays
CXXFLAGS += -maccumulate-outgoing-args -minline-all-stringops
endif
endif
...
comp_version
die gewünschten Optimierungen ausgewählt.@echo off
Setlocal EnableDelayedExpansion
SET PTH_BAK=%PATH%
CLS
ECHO ~~~~~~~~~~~~~~~~~~~~~
ECHO -- Es geht los ... --
ECHO ~~~~~~~~~~~~~~~~~~~~~
FOR %%I IN ( 473p 492p 510p ) DO (
SET VSN=%%I
SET PRG_NAME=Stockfish150729
IF EXIST C:\mingw64\!VSN!\mingw64\bin\. (
SET PATH=C:\mingw64\!VSN!\mingw64\bin;C:\MinGW\msys\1.0\bin;C:\WINDOWS;C:\WINDOWS\SYSTEM32;C:\WINDOWS\SysWOW64
SET PRG=!PRG_NAME![!VSN!].exe
REM del !PRG!
del *.o
del *.gcda
del syzygy\*.o
del syzygy\*.gcda
ECHO.
ECHO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ECHO make clean profile-build ARCH=x86-64-modern comp_version=v!VSN! COMP=mingw EXE=!PRG! strip
ECHO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ECHO.
ECHO.
make clean profile-build ARCH=x86-64-modern comp_version=v!VSN! COMP=mingw EXE=!PRG! strip
SET PRG=!PRG_NAME![!VSN!EXP].exe
make clean profile-build ARCH=x86-64-modern comp_version=vEXP COMP=mingw EXE=!PRG! strip
)
)
SET PATH=!PTH_BAK!
SET PTH_BAK=
CLS
ECHO ... . Nun zum Benchmark-Test ...
call benchmark.bat
C:\MinGW\msys\1.0\bin
.C:\mingw64\!VSN!\mingw64\bin
in den von der Variablen !VSN! gesetzten Unterverzeichnissen (473p, 492p und 510p) untergebracht. Deren Namensschema (Version ohne Punkt + 'p' für Posix-Bibliothek) dürfte einleuchten.benchmark.bat
aufgerufen.@ECHO off
PAUSE
SET SF=Stockfish150729
SET P1=stockfish_15072918_x64_modern.EXE
SET P2=SF150725.EXE
SET P3=%SF%[473p].EXE
SET P4=%SF%[492p].EXE
SET P5=%SF%[510p].EXE
SET P6=%SF%[473pEXP].EXE
SET P7=%SF%[492pEXP].EXE
SET P8=%SF%[510pEXP].EXE
FOR %%I IN ( %P1% %P2% %P3% %P4% %P5% %P6% %P7% %P8% ) DO (
cls
IF EXIST %%I (
start /B /WAIT /REALTIME /AFFINITY 0xF %%I bench >nul
ECHO Ergebnis für: %%I
PAUSE
)
)
pause
SF
auch übergeben. Dann lässt sich die Batchdatei aber nicht mehr standalone aufrufen.misc.cpp
die Variable Version
mit dem Datumsstring initialisiert werden. Sonst wird das Datum des Compilierens gesetzt. Da ich keine (anderen) Änderungen am Stockfish-Code vornehme, möchte ich das nicht.> Thanx an das SF-Team auch für die prima Vorbereitung für den Build, die man mit der Stockfish-Sourcenanlieferung erhält!
> Aber auch der profile-build klappt prima und ohne jedes eigene Zutun. Ungefähr satte 98% der Dev-Geschwindigkeit sehe ich dann in der nps-Anzeige.
SF150730 Lauf 1 Lauf 2 Lauf 3 Ø Diff. in % rel. zu abrok
abrok 6896 6875 6897 6889,33 22 0,3% ./.
473 -O3 6814 6747 6765 6775,33 67 1,0% 101,7%
484 -O3 6769 6720 6696 6728,33 73 1,1% 102,4%
492 -O3 6799 6840 6765 6801,33 75 1,1% 101,3%
510 -O3 6902 6970 6903 6925,00 68 1,0% 99,5%
473 -O2 6835 6760 6747 6780,67 88 1,3% 101,6%
484 -O2 6771 6777 6727 6758,33 50 0,7% 101,9%
492 -O2 6795 6732 6738 6755,00 63 0,9% 102,0%
510 -O2 6841 6842 6832 6838,33 10 0,1% 100,7%
gest. Mittel 6805,74 57 0,8%
SF150730 Lauf 1 Lauf 2 Lauf 3 Ø Diff. in % rel. zu abrok
abrok 3006 3015 3009 3010,00 9 0,3% ./.
473 -O3 2955 2947 2950 2950,67 8 0,3% 102,0%
484 -O3 2944 2945 2946 2945,00 2 0,1% 102,2%
492 -O3 2976 2979 2975 2976,67 4 0,1% 101,1%
510 -O3 2998 3001 3002 3000,33 4 0,1% 100,3%
473 -O2 2935 2921 2927 2927,67 14 0,5% 102,8%
484 -O2 2961 2961 2975 2965,67 14 0,5% 101,5%
492 -O2 2937 2936 2934 2935,67 3 0,1% 102,5%
510 -O2 2988 2985 3009 2994,00 24 0,8% 100,5%
gest. Mittel 2967,30 9 0,3%
Ply 1 Thread 2 Threads 4 Threads
9 619 399 530
10 1.096 774 822
11 2.119 1.317 1.414
12 4.002 2.154 2.291
13 6.712 3.619 3.929
14 10.275 5.357 6.121
15 16.528 8.946 9.386
16 30.243 13.615 14.898
17 44.137 21.859 21.795
Ply 1 Thread 2 Threads 4 Threads
9 622 456 600
10 1.102 850 976
11 2.130 1.501 1.642
12 4.037 2.520 2.729
13 6.765 3.849 4.225
14 10.316 6.236 6.708
15 16.587 9.591 10.392
16 30.358 15.231 16.371
17 44.562 24.130 24.432
Ply 1T 2T 4T
9 18% 145% 38%
10 15% 112% 52%
11 12% 52% 43%
12 8% 47% 36%
13 8% 49% 37%
14 4% 34% 57%
15 3% 36% 33%
16 4% 37% 51%
17 2% 73% 42%
> Mehrheitlich deuteten sie aber durchaus auf ein "Mit Nutzung des Hyperthreading ist die Engine stärker!" hin.
Ply 2T-2cores 2T-4HT rel.
9 459 586 128%
10 898 1.046 116%
11 1.499 1.730 115%
12 2.539 2.865 113%
13 4.126 4.546 110%
14 6.549 7.339 112%
15 10.179 11.438 112%
16 15.793 17.544 111%
17 24.222 26.826 111%
Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill