What is the magical incantation to make LC0 use both?

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

Dann Corbit
Posts: 12541
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

What is the magical incantation to make LC0 use both?

Post by Dann Corbit »

It's rather embarrassing, because I had it working before, but I cannot seem to figure it out with the new binaries.
On the other hand, the new binaries are so much better than I am getting the same NPS on a single card.
On the other other hand, when I see one card sitting idle in performance monitor, I think of what should be.
I tried:
(backend=cudnn-fp16,gpu=0),(backend=cudnn-fp16,gpu=1)
in the backend options slot in the Arena GUI popup, but then LC0 does not start.
I have two 2080 super cards.
I am using the latest 26.3 cudann version of LC0.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
User avatar
Laskos
Posts: 10948
Joined: Wed Jul 26, 2006 10:21 pm
Full name: Kai Laskos

Re: What is the magical incantation to make LC0 use both?

Post by Laskos »

Dann Corbit wrote: Wed Nov 04, 2020 10:03 pm It's rather embarrassing, because I had it working before, but I cannot seem to figure it out with the new binaries.
On the other hand, the new binaries are so much better than I am getting the same NPS on a single card.
On the other other hand, when I see one card sitting idle in performance monitor, I think of what should be.
I tried:
(backend=cudnn-fp16,gpu=0),(backend=cudnn-fp16,gpu=1)
in the backend options slot in the Arena GUI popup, but then LC0 does not start.
I have two 2080 super cards.
I am using the latest 26.3 cudann version of LC0.
cudnn might have problems. Try cuda-fp16. It's faster anyway.
Dann Corbit
Posts: 12541
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: What is the magical incantation to make LC0 use both?

Post by Dann Corbit »

I have tried several attempts from the command line to see what is going on.

Code: Select all

C:\Users\dannc\chess\lc0\26-3-cudnn>lc0.exe -t 2 --backend=demux "--backend-opts=(backend=cuda-fp16,gpu=0),(backend=cud-fp16,gpu=1)" --nncache=2000000 --minibatch-size=1024
       _
|   _ | |
|_ |_ |_| v0.26.3 built Oct 10 2020
Detected 32 core(s) and 64 thread(s) in 1 group(s).
Group 0 has 32 core(s) and 64 thread(s).
 go nodes 5000000
Found pb network file: C:\Users\dannc\chess\lc0\26-3-cudnn/703810.pb.gz
Creating backend [demux]...
Creating backend [cuda-fp16]...
CUDA Runtime version: 10.0.0
Latest version of CUDA supported by the driver: 10.2.0
GPU: GeForce RTX 2080 SUPER
GPU memory: 8 Gb
GPU clock frequency: 1815 MHz
GPU compute capability: 7.5
Creating backend [cud-fp16]...
But I get no output.

With the cuda version I get this:

Code: Select all

C:\Users\dannc\chess\lc0\26-3-cud>lc0.exe -t 2 --backend=demux "--backend-opts=(backend=cuda-fp16,gpu=0),(backend=cud-fp16,gpu=1)" --nncache=2000000 --minibatch-size=1024
       _
|   _ | |
|_ |_ |_| v0.26.3 built Oct 10 2020
Detected 32 core(s) and 64 thread(s) in 1 group(s).
Group 0 has 32 core(s) and 64 thread(s).
 go nodes 5000000
Found pb network file: C:\Users\dannc\chess\lc0\26-3-cud/703810.pb.gz
Creating backend [demux]...
Creating backend [cuda-fp16]...
error CUDA driver and/or runtime could not be initialized
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
Dann Corbit
Posts: 12541
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: What is the magical incantation to make LC0 use both?

Post by Dann Corbit »

I guess part of the problem is that my display drivers were old.
I upgraded to the latest drivers.
Then I fiddled around until I found the right syntax for backend options:
cuda-fp16,gpu=0,cud-fp16,gpu=1

If you put parenthesis around them like the instructions tell you to, lc0 simply crashes and vanishes from memory.

Strike that, once I corrected the spelling error it stopped working.
From:
cuda-fp16,gpu=0,cud-fp16,gpu=1
To:
cuda-fp16,gpu=0,cuda-fp16,gpu=1
No output again.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
Dann Corbit
Posts: 12541
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: What is the magical incantation to make LC0 use both?

Post by Dann Corbit »

I am forced to conclude that you cannot use two GPUs with Arena. At least, you clearly cannot do that by following the directions on the LC0 site or following the blog they point to because they admit their own instructions are too old.

I am not sure why I wanted it to work so badly anyway. SF with NNUE is much stronger (though I will never know how much since I cannot get it to work).
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
User avatar
Laskos
Posts: 10948
Joined: Wed Jul 26, 2006 10:21 pm
Full name: Kai Laskos

Re: What is the magical incantation to make LC0 use both?

Post by Laskos »

Dann Corbit wrote: Thu Nov 05, 2020 2:00 am I am forced to conclude that you cannot use two GPUs with Arena. At least, you clearly cannot do that by following the directions on the LC0 site or following the blog they point to because they admit their own instructions are too old.

I am not sure why I wanted it to work so badly anyway. SF with NNUE is much stronger (though I will never know how much since I cannot get it to work).
Dann, ask on Lc0 discord. Do you really need Arena?
Dann Corbit
Posts: 12541
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: What is the magical incantation to make LC0 use both?

Post by Dann Corbit »

Laskos wrote: Thu Nov 05, 2020 8:40 am
Dann Corbit wrote: Thu Nov 05, 2020 2:00 am I am forced to conclude that you cannot use two GPUs with Arena. At least, you clearly cannot do that by following the directions on the LC0 site or following the blog they point to because they admit their own instructions are too old.

I am not sure why I wanted it to work so badly anyway. SF with NNUE is much stronger (though I will never know how much since I cannot get it to work).
Dann, ask on Lc0 discord. Do you really need Arena?
I have other GUIs but if it is too hard to configure in Arena I expect trouble in the others,


I use arena for engine/engine contests, and I have found other GUIs are also problematic\
I guess cutechess cli would probably be a logical alternative, but I have decided just to run SF vs SF to get the data I want,
Having a different opinion would have been nice, but I can live without it.
I do not want to make yet another account, even though I know discord is popular.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
corres
Posts: 3657
Joined: Wed Nov 18, 2015 11:41 am
Location: hungary

Re: What is the magical incantation to make LC0 use both?

Post by corres »

At first you should watch the "Device Manager" in your PC to check your PC use or not use the two card.
At second you should use GPU-Z to monitor the working the two GPU.
At third you should set the parameters of Leela:
-if you use the version of cudnn:
backendoptions = (backend=cudnn-fp16,gpu=0),(backend=cudnn-fp16,gpu=1)
-if you use the version of cuda: (~10% faster)
backendoptions = (backend=cuda-fp16,gpu=0),(backend=cuda-fp16,gpu=1)
brianr
Posts: 536
Joined: Thu Mar 09, 2006 3:01 pm

Re: What is the magical incantation to make LC0 use both?

Post by brianr »

This was just posted on the Discord:
TilpsToday at 6:09 AM
!2gpus
Little TeapotBOTToday at 6:09 AM
To run Lc0 on 2 GPUs:

Specify the following UCI parameters:
Backend: multiplexing
BackendOpts: backend=cudnn-fp16,(gpu=0),(gpu=1)
Threads: 3

OR

add the following in command line:
--backend=multiplexing "--backend-opts=backend=cudnn-fp16,(gpu=0),(gpu=1)" --threads=3

OR

Add this to your lc0.config:

backend=multiplexing
backend-opts=backend=cudnn-fp16,(gpu=0),(gpu=1)
threads=3
corres
Posts: 3657
Joined: Wed Nov 18, 2015 11:41 am
Location: hungary

Re: What is the magical incantation to make LC0 use both?

Post by corres »

What is your new experience, Dan?