Skip to content

KierenP/Halogen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,473 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Halogen Logo

Halogen

License GitHub release (latest by date) Commits since latest release GitHub Downloads (specific asset, all releases)

Halogen is a powerful, world-class program capable of analysing and playing chess. It has a peak rating of 16th on the international Computer Chess Rating List, and is the #1 strongest chess engine in Oceania.

How to download

The latest version of Halogen can always be downloaded from the releases page

Halogen is not a stand alone application and should be used with any popular chess GUI that supports the UCI protocol. Arena chess is a popular choice.

How to build

To build Halogen yourself, use the included Makefile in the src directory. The Makefile provides several build targets and configuration options.

Quick Start

For a basic optimized build with PGO (Profile-Guided Optimization):

cd src
make

This will build Halogen-pgo in the bin directory using your native CPU architecture.

Build Targets

  • make pgo (default) - PGO-optimized build for maximum performance
  • make release - Standard optimized release build with LTO
  • make debug - Debug build with symbols and no optimization
  • make sanitize-address - Build with AddressSanitizer for memory debugging
  • make sanitize-undefined - Build with UndefinedBehaviorSanitizer
  • make sanitize-thread - Build with ThreadSanitizer for race condition detection
  • make tune - Build for parameter tuning
  • make tournament - Tournament mode build with NUMA support

Architecture Options

You can specify the target CPU architecture using the ARCH parameter:

make ARCH=<architecture> <target>

Supported architectures:

  • native (default) - Auto-detect and optimize for your CPU
  • legacy - Basic build without SIMD instructions
  • sse4 - For Intel Nehalem (2008) and newer
  • avx - For Intel Sandy Bridge (2011) and newer
  • avx2 - For Intel Haswell (2013) and newer
  • avx2-pext - Haswell with BMI2 instructions
  • avx512 - For Intel Skylake-X (2017) and newer
  • avx512vnni - For Intel Cascade Lake (2019) and newer
  • neon - For ARM v8.0+ processors
  • neon-dotprod - For ARM v8.2+ with dot product support

Example:

make ARCH=avx2 release

Network File

Halogen uses a neural network for evaluation. The Makefile will automatically download the default network if needed. You can also specify a custom network file:

make EVALFILE=/path/to/network.nn release

Requirements

Halogen is officially supported on Windows, Ubuntu, and MacOS for both x86-64 and ARM64 platforms, when using compilers gcc-11 and clang-16 or newer.

Platform Build
Ubuntu x86-64 Ubuntu x86-64
Ubuntu ARM64 Ubuntu ARM64
Windows x86-64 Windows x86-64
Windows ARM64 Coming soon
MacOS x86-64 MacOS x86-64
MacOS ARM64 (M1) MacOS ARM64

Strength

Version CCRL 40/15 CCRL Blitz CCRL 40/2 FRC CEGT 40/20 CEGT 40/4 MCERL
15 3575 3695 3843 3552 - -
14 3553 3686 3838 3531 - -
13 3515 3632 - 3471 - -
12 3454 3534 3643 3376 3409 3438
11 3377 3434 - 3282 - 3422

Details

Written in C++, Halogen implements Null-move pruning, Late move reductions, Quiessence search and a Transposition table that uses Zobrist Hashing. The search routine is multithreaded using the SMP parallelisation technique.

Halogen development is currently supported on the Openbench framework. OpenBench (created by Andrew Grant) is an open-source Sequential Probability Ratio Testing (SPRT) framework designed for self-play testing of engines. OpenBench makes use of distributed computing, allowing anyone to contribute CPU time to further the development of some of the world's most powerful engines.

Since 2020, Halogen has used a neural network for its evaluation function. Halogen makes use of an incrementally updated architecture, inspired by the new NNUE networks in Stockfish. The neural networks were trained using a novel application of Temporaral Difference learning1, and then fine tuned using supervised learning on data generated through self-play games using the Bullet trainer2.

Footnotes

  1. https://github.com/KierenP/Halogen/pull/517

  2. https://github.com/jw1912/bullet

About

C++ chess engine

Resources

License

Stars

Watchers

Forks

Contributors 11

Languages