Katago: Difference between revisions

From NixOS Wiki
imported>OmnipotentEntity
Update documentation to reflect the new CUDA 11 defaults.
imported>OmnipotentEntity
No edit summary
Line 1: Line 1:
Katago is a very strong go engine.
Katago is a very strong go engine.


There are several build options for Katago's derivation.  Katago can use either Eigen, OpenCL, or CUDA.  By default, it uses OpenCL.
There are several build options for Katago's derivation.  Katago can use either Eigen, OpenCL, CUDA, or TensorRT.  By default, it uses OpenCL. To use a different backend override the `backend` attribute, allowed values are "eigen", "opencl", "cuda", and "tensorrt".
 
TensorRT is currently suffering from a minor performance regression in v1.12.2, so it by default uses v1.12.1 instead.  You can override the version, and it should work if you'd rather use the newer tensorrt engine introduced in v1.12.2 that does not depend on cudnn.
 
OpenCL, on the other hand, is currently suffering from a performance regression in v1.12.1, and so you should use definitely use v1.12.2 instead if you're using the OpenCL backend.
 
For the eigen and cuda backends either version should be more or less functionally the same.
 
Changing versions:
 
    katago.override {
      version = "1.12.1";
    }


Using CUDA:
Using CUDA:


     katago.override {
     katago.override {
       enableCuda = true;
       backend = "cuda";
       cudnn = cudnn_cudatoolkit_10_2; # insert your favorite version of CUDA here (optional)
       cudnn = cudnn_cudatoolkit_10_2; # insert your favorite version of CUDA here (optional)
       cudatoolkit = cudatoolkit_10_2; # I recommend at least CUDA 10, because older versions suffer major performance penalties
       cudatoolkit = cudatoolkit_10_2; # I recommend at least CUDA 10, because older versions suffer major performance penalties
Line 15: Line 27:


     katago.override {
     katago.override {
       enableGPU = false;
       backend = "eigen";
     }
     }



Revision as of 19:55, 11 January 2023

Katago is a very strong go engine.

There are several build options for Katago's derivation. Katago can use either Eigen, OpenCL, CUDA, or TensorRT. By default, it uses OpenCL. To use a different backend override the `backend` attribute, allowed values are "eigen", "opencl", "cuda", and "tensorrt".

TensorRT is currently suffering from a minor performance regression in v1.12.2, so it by default uses v1.12.1 instead. You can override the version, and it should work if you'd rather use the newer tensorrt engine introduced in v1.12.2 that does not depend on cudnn.

OpenCL, on the other hand, is currently suffering from a performance regression in v1.12.1, and so you should use definitely use v1.12.2 instead if you're using the OpenCL backend.

For the eigen and cuda backends either version should be more or less functionally the same.

Changing versions:

   katago.override {
     version = "1.12.1";
   }

Using CUDA:

   katago.override {
     backend = "cuda";
     cudnn = cudnn_cudatoolkit_10_2; # insert your favorite version of CUDA here (optional)
     cudatoolkit = cudatoolkit_10_2; # I recommend at least CUDA 10, because older versions suffer major performance penalties
     stdev = gcc8Stdev; # If you specify CUDA 10 or below you must also override the gcc version, this is due to NVidia compiler support.
   }

Using Eigen:

   katago.override {
     backend = "eigen";
   }

If your processor support AVX2, you might want to enable it:

   katago.override {
     enableAVX2 = true;
   }

By default, katago uses the TCMalloc memory allocator. It is not recommended that you disable it due to severe fragmentation issues after running katago for a few hours. However, if you cannot use TCMalloc, and you do not plan on running katago for extended periods of time, you can disable it anyway.

   katago.override {
     enableTcmalloc = false;
   }

Katago also supports large boards (up to 29x29); however, there are no networks trained specifically on them, and enabling them slows down even normal sized board play, so it is disabled by default. If you want to enable support:

   katago.override {
     enableBigBoards = true;
   }

Enabling [1] contributions:

   katago.override {
     enableContrib = true;
   }