Correr lizzie en Ubuntu con GPU
Así hice que corra lizzie en Ubuntu 18.04 con una nVidia GeForge 940mx, compilando y corriendo en un container de docker para que no me ensucie el resto del sistema.
Requisitos:
- Placa de video nVidia que banque opencl
- Tener instalado nvidia-docker2 y sus dependencias (incluyendo los drivers correctos).
- Tener nvidia como engine por default en docker. Para eso hay que agregar "default-runtime": "nvidia" a /etc/docker/daemon.json. Detalles acá.
FROM nvidia/opencl:runtime
RUN apt-get update --no-upgrade -yq && \
apt-get install --no-upgrade -yq curl git clinfo cmake g++ libboost-dev libboost-program-options-dev libboost-filesystem-dev opencl-headers ocl-icd-libopencl1 ocl-icd-opencl-dev zlib1g-dev qtbase5-dev
RUN mkdir /app && cd /app && \
git clone https://github.com/leela-zero/leela-zero.git . && \
git submodule update --init --recursive && \
mkdir build && cd build && \
cmake .. && cmake --build . && \
./tests && \
curl -O https://zero.sjeng.org/best-network
WORKDIR /app/build
RUN /app/build/leelaz --tune-only -w best-network
CMD /app/build/leelaz -g -w best-network
Una vez que hice el archivo, corrí:
$ docker build -f Dockerfile -t leela:gpu .
Y para ver que estaba todo bien después corrí la imagen así:
$ docker run --rm -it leela:gpu
Después me bajé lizzie-0.6 y lo corrí con:
$ java -jar lizzie.jar
La primera vez falló, pero generó un archivo de configuración config.txt. Edité ese archivo y cambié la entrada "engine-command" para que diga: "/usr/bin/docker run -i --rm leela:gpu /app/build/leelaz --gtp --lagbuffer 0 -w best-network". Eso hace que lizzie use la leela zero que compilamos antes adentro del docker.
Una vez hecho esto, volví a correr java -jar lizzie.jar y ahora anda :)