Skip to content

Releases: seniorfish/KataGo

KataGo ONNX Runtime backend (OpenVINO EP) for Intel GPU — v2

Choose a tag to compare

@seniorfish seniorfish released this 01 Aug 04:50

Prebuilt katago.exe with ONNX Runtime + OpenVINO 2026.2.1 execution provider.

~20% faster than v1 on transformer models due to a graph-pattern fix that enables OpenVINO RMSNorm kernel fusion (numStreams=2, 10 threads, 800 visits, 347.49 visits/s -> 416.52 visits/s).

Includes:

  • katago.exe (64-bit, ONNX backend)
  • OpenVINO 2026.2.1 runtime DLLs
  • ONNX Runtime 1.29.0 DLLs
  • gpu_optimized.cfg — preconfigured for Intel GPU with recommended settings

KataGo ONNX Runtime backend (OpenVINO EP) for Intel GPU — v1

Choose a tag to compare

@seniorfish seniorfish released this 31 Jul 04:50

KataGo — ONNX Runtime backend (OpenVINO EP) for Intel GPU

Windows x64 build of KataGo with a new ONNX Runtime neural-net backend, running inference on Intel GPU (or iGPU) via the OpenVINO execution provider. Built from a fork of lightvector/KataGo on top of v1.17.0.

  • katago.exe compiled with -DUSE_BACKEND=ONNX, plus the full ONNX Runtime + OpenVINO runtime DLLs bundled so it runs standalone on an Intel GPU.
  • Git revision: ff3c105fa717bfe0eb076bec8558537d94032689
  • Built against ONNX Runtime 1.29 (self-compiled with --use_openvino GPU) and OpenVINO 2026.2.

Quick start

  1. Place a KataGo .bin.gz model next to katago.exe (models: https://katagotraining.org/).
  2. In gtp_example.cfg (You can refer to the comments for more details.):
    onnxProvider = openvino
    onnxOpenVINODeviceType = GPU
    
  3. katago.exe gtp -config gtp_example.cfg -model <your_model>

Success log: ONNX backend: OpenVINO execution provider enabled, device_type=GPU and session created, inputs=3 outputs=5.

Performance

There are some newly added options in the config file that affect performance, see gtp_example.cfg for detail. Some test results are pasted below.
Device: Intel Arc B580
backend: opencl
model: b11c768h12nbt3tflrs-fson-silu.bin.gz
-visits 60

numSearchThreads = 2: 10 / 10 positions, visits/s = 14.61 nnEvals/s = 14.11 nnBatches/s = 14.06 avgBatchSize = 1.00 (41.7 secs) (EloDiff baseline)
numSearchThreads = 4: 10 / 10 positions, visits/s = 15.39 nnEvals/s = 15.12 nnBatches/s = 7.76 avgBatchSize = 1.95 (40.9 secs) (EloDiff -4)
numSearchThreads = 8: 10 / 10 positions, visits/s = 16.74 nnEvals/s = 16.72 nnBatches/s = 4.67 avgBatchSize = 3.58 (40.0 secs) (EloDiff -20)

backend: onnxruntime(openvino)
model: b11c768h12nbt3tflrs-fson-silu.bin.gz
config:
onnxOpenVINONumStreams = 2
onnxTransformerNHWC = true

numSearchThreads = 4: 10 / 10 positions, visits/s = 273.22 nnEvals/s = 216.37 nnBatches/s = 108.51 avgBatchSize = 1.99 (29.4 secs) (EloDiff baseline)
numSearchThreads = 8: 10 / 10 positions, visits/s = 362.81 nnEvals/s = 290.80 nnBatches/s = 73.26 avgBatchSize = 3.97 (22.2 secs) (EloDiff +87)
numSearchThreads = 12: 10 / 10 positions, visits/s = 394.78 nnEvals/s = 321.04 nnBatches/s = 54.35 avgBatchSize = 5.91 (20.5 secs) (EloDiff +102)

model: kata1-zhizi-b40c768nbt-s11472M-d5982M.bin.gz

numSearchThreads = 4: 10 / 10 positions, visits/s = 122.82 nnEvals/s = 96.05 nnBatches/s = 48.20 avgBatchSize = 1.99 (65.4 secs) (EloDiff baseline)
numSearchThreads = 8: 10 / 10 positions, visits/s = 156.49 nnEvals/s = 125.23 nnBatches/s = 31.55 avgBatchSize = 3.97 (51.6 secs) (EloDiff +62)
numSearchThreads = 12: 10 / 10 positions, visits/s = 169.99 nnEvals/s = 134.65 nnBatches/s = 22.75 avgBatchSize = 5.92 (47.7 secs) (EloDiff +66)

model: b11c768h12nbt3tflrs-fson-silu.bin.gz
config:
onnxOpenVINONumStreams = 1
onnxTransformerNHWC = true

numSearchThreads = 12: 10 / 10 positions, visits/s = 126.72 nnEvals/s = 103.04 nnBatches/s = 17.42 avgBatchSize = 5.91 (63.9 secs) (EloDiff baseline)

model: b11c768h12nbt3tflrs-fson-silu.bin.gz
config:
onnxOpenVINONumStreams = 2
onnxTransformerNHWC = false

numSearchThreads = 12: 10 / 10 positions, visits/s = 185.39 nnEvals/s = 150.18 nnBatches/s = 25.43 avgBatchSize = 5.91 (43.7 secs) (EloDiff baseline)

So onnxOpenVINONumStreams = 2,onnxTransformerNHWC = true performs best on my machine.

Requirements

  • Windows 10/11 x64, Intel GPU (Arc / Iris Xe) with latest drivers.

Caveats

  • This build only includes the OpenVINO execution provider. Switching onnxProvider to cuda/tensorrt/migraphx/coreml requires an ORT build with that provider.
  • Raw .onnx model files are not supported; use KataGo .bin.gz models.

Licenses

Provided as-is, without warranty.