mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 09:13:08 +00:00

due to downclocking on current chips (tested up to cascade lake) supporting avx512 and vnni512, it is better to use avx2 or vnni256 in multithreaded (in particular hyperthreaded) engine use. In single threaded use, the picture is different. gcc compilation for vnni256 requires a toolchain for gcc >= 9. closes https://github.com/official-stockfish/Stockfish/pull/3038 No functional change
102 lines
4 KiB
YAML
102 lines
4 KiB
YAML
language: cpp
|
|
dist: bionic
|
|
|
|
matrix:
|
|
include:
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
packages: ['g++-8', 'g++-8-multilib', 'g++-multilib', 'valgrind', 'expect', 'curl']
|
|
env:
|
|
- COMPILER=g++-8
|
|
- COMP=gcc
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
packages: ['clang-10', 'llvm-10-dev', 'g++-multilib', 'valgrind', 'expect', 'curl']
|
|
env:
|
|
- COMPILER=clang++-10
|
|
- COMP=clang
|
|
|
|
- os: osx
|
|
osx_image: xcode12
|
|
compiler: gcc
|
|
env:
|
|
- COMPILER=g++
|
|
- COMP=gcc
|
|
|
|
- os: osx
|
|
osx_image: xcode12
|
|
compiler: clang
|
|
env:
|
|
- COMPILER=clang++
|
|
- COMP=clang
|
|
|
|
branches:
|
|
only:
|
|
- master
|
|
|
|
before_script:
|
|
- cd src
|
|
|
|
script:
|
|
# Download net
|
|
- make net
|
|
|
|
# Obtain bench reference from git log
|
|
- git log HEAD | grep "\b[Bb]ench[ :]\+[0-9]\{7\}" | head -n 1 | sed "s/[^0-9]*\([0-9]*\).*/\1/g" > git_sig
|
|
- export benchref=$(cat git_sig)
|
|
- echo "Reference bench:" $benchref
|
|
|
|
# Compiler version string
|
|
- $COMPILER -v
|
|
|
|
# test help target
|
|
- make help
|
|
|
|
# Verify bench number against various builds
|
|
- export CXXFLAGS="-Werror -D_GLIBCXX_DEBUG"
|
|
- make clean && make -j2 ARCH=x86-64-modern optimize=no debug=yes build && ../tests/signature.sh $benchref
|
|
- export CXXFLAGS="-Werror"
|
|
- make clean && make -j2 ARCH=x86-64-modern build && ../tests/signature.sh $benchref
|
|
- make clean && make -j2 ARCH=x86-64-ssse3 build && ../tests/signature.sh $benchref
|
|
- make clean && make -j2 ARCH=x86-64-sse3-popcnt build && ../tests/signature.sh $benchref
|
|
- make clean && make -j2 ARCH=x86-64 build && ../tests/signature.sh $benchref
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=general-64 build && ../tests/signature.sh $benchref; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-32 optimize=no debug=yes build && ../tests/signature.sh $benchref; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-32-sse41-popcnt build && ../tests/signature.sh $benchref; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-32-sse2 build && ../tests/signature.sh $benchref; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-32 build && ../tests/signature.sh $benchref; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=general-32 build && ../tests/signature.sh $benchref; fi
|
|
# workaround: exclude a custom version of llvm+clang, which doesn't find llvm-profdata on ubuntu
|
|
- if [[ "$TRAVIS_OS_NAME" != "linux" || "$COMP" == "gcc" ]]; then make clean && make -j2 ARCH=x86-64-modern profile-build && ../tests/signature.sh $benchref; fi
|
|
|
|
# compile only for some more advanced architectures (might not run in travis)
|
|
- make clean && make -j2 ARCH=x86-64-avx2 build
|
|
- make clean && make -j2 ARCH=x86-64-bmi2 build
|
|
- make clean && make -j2 ARCH=x86-64-avx512 build
|
|
- make clean && make -j2 ARCH=x86-64-vnni512 build
|
|
# requires gcc 9 or higher
|
|
- if [[ "$COMPILER" != "g++-8" ]]; make clean && make -j2 ARCH=x86-64-vnni256 build; fi
|
|
|
|
#
|
|
# Check perft and reproducible search
|
|
- make clean && make -j2 ARCH=x86-64-modern build
|
|
- ../tests/perft.sh
|
|
- ../tests/reprosearch.sh
|
|
|
|
#
|
|
# Valgrind
|
|
#
|
|
- export CXXFLAGS="-O1 -fno-inline"
|
|
- if [ -x "$(command -v valgrind )" ]; then make clean && make -j2 ARCH=x86-64-modern debug=yes optimize=no build > /dev/null && ../tests/instrumented.sh --valgrind; fi
|
|
- if [ -x "$(command -v valgrind )" ]; then ../tests/instrumented.sh --valgrind-thread; fi
|
|
|
|
#
|
|
# Sanitizer
|
|
#
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-64-modern sanitize=undefined optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-undefined; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make clean && make -j2 ARCH=x86-64-modern sanitize=thread optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-thread; fi
|