2019-05-12

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á. 
Para eso creé un archivo Dockerfile  con los contenidos que explica en esta página:
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 :)

No hay comentarios.: