UCI Configuration

Configure NIKOLA's engine settings for optimal performance on your hardware.

Overview

NIKOLA uses the Universal Chess Interface (UCI) protocol for communication with chess GUIs. Configuration is done through UCI options that can be set in your GUI or via the command line.

Setting Options via Command Line

nikola setoption name Hash value 4096

UCI Options Reference

Hashspin

Hash table size in megabytes. Larger values improve performance for longer analyses.

Default: 256
Range: 1-131072
Threadsspin

Number of CPU threads for search. Set to your CPU core count for best performance.

Default: 1
Range: 1-8192
GPUcombo

GPU backend for neural network inference. Auto-detects the best available option.

Default: auto
Range: auto, cuda, metal, rocm, oneapi, webgpu, cpu
GPUDevicesstring

Comma-separated list of GPU device IDs. Supports up to 1024 GPUs for HPC clusters.

Default: 0
Range: device IDs (0-1023)
GPUBatchSizespin

Positions per GPU batch for NNUE evaluation. Higher values improve throughput on modern GPUs.

Default: 64
Range: 1-4096
SearchModecombo

Search algorithm: alpha-beta, GPU MCTS, or SPTT hybrid (auto selects based on position).

Default: auto
Range: auto, alphabeta, mcts, sptt
MCTSSimulationsspin

Number of MCTS simulations per move when using MCTS or SPTT hybrid search.

Default: 800
Range: 100-100000
Contemptspin

Dynamic contempt value. Positive values avoid draws against weaker opponents.

Default: 24
Range: -100-100
NNUEPathstring

Path to a custom NNUE network file. Leave empty to use the built-in network.

Default: <builtin>
Range: file path
SyzygyPathstring

Path to Syzygy tablebase files (7-man DTZ/WDL or 8-man WDL).

Default:
Range: directory path
MultiPVspin

Number of principal variations to output. Higher values show alternative lines.

Default: 1
Range: 1-500
MoveOverheadspin

Time buffer in milliseconds to account for communication delay.

Default: 10
Range: 0-5000
Pondercheck

Enable pondering (thinking on opponent's time).

Default: true
Range: true/false

Recommended Settings

For Analysis

setoption name Hash value 8192
setoption name Threads value 16
setoption name MultiPV value 3

For Tournament Play

setoption name Hash value 4096
setoption name Threads value 8
setoption name Ponder value true
setoption name MoveOverhead value 50

Multi-GPU Setup

For systems with multiple GPUs (e.g., DGX GB200, GB300 NVL72):

setoption name GPU value cuda
setoption name GPUDevices value 0,1,2,3,4,5,6,7
setoption name GPUBatchSize value 256

SPTT Hybrid Search

Enable SPTT (Superparallel Tree Traversal) for best results on complex positions:

setoption name SearchMode value sptt
setoption name MCTSSimulations value 1600
setoption name GPUBatchSize value 128

HPC Cluster Configuration

For Vera Rubin or GB300 NVL72 clusters with 72+ GPUs:

setoption name Hash value 65536
setoption name Threads value 512
setoption name GPU value cuda
setoption name GPUDevices value 0-71
setoption name GPUBatchSize value 512
setoption name SearchMode value sptt

Performance Tip

For best performance, set Hash to approximately 50-70% of your available RAM, and Threads to match your physical CPU core count. On GPU systems, increase GPUBatchSize to 128-256 for RTX 5090, or 512+ for data center GPUs.

Getting StartedBuilding from Source