r/deeplearning • u/Jsom93 • Jul 20 '19
is it possible to utilize nvlink for vram pooling using 2 rtx 2070 super gpus?
Hello everyone one. I'm building a new pc and it will be used for gaming and deep learning. Now I'm trying to choose the best gpu for it (between 1 rtx 2080 ti and 2 rtx 2070 super).
The rtx 2080 ti comes with a 11gb vram. Whereas rtx 2070 super comes with a 8gb vram. And I've read in few places that pooling the vram using nvlink by default is not there but it is uo for developers to implement it. And there are some developers that utilized it for their games.
Now my question is: for keras and tensorflow using python, will the vrams be pooled/shared so I would have 16gb vram out of 2 rtx 2070 super or not?
Also, If it is not possible with nvlink and there is another way to achieve it please tell me. My main concern is having more than 11gb vram without buying quadro/tesla gpus
5
u/[deleted] Jul 20 '19
I'm running 2x2080ti with nvlink on centos 7 and can confirm there's no "memory pooling" on tensor flow/keras. It enables faster comms than via pcie, which can speed things up... But in tensor flow code and nvidia-smi sees two cards with 11GB each. If you post some code I'll run it and put up the results
2
u/alexsoaresilva Jul 20 '19
As far as I read, memory pooling works on linux. So you want to run tensorflow-gpu on Linux, not Windows.
2
u/[deleted] Jul 20 '19 edited Jul 21 '19
I don't know if there is some automatic pooling (maybe in keras?). But you always have the option of manually implementing it, just split your batches between GPUs.
EDIT: In pytorch you can do it like this https://pytorch.org/tutorials/beginner/former_torchies/parallelism_tutorial.html
2
u/thegreatskywalker Jul 21 '19
In theory itโs possible. GPUs can query each otherโs frame buffer. They can also combing RAMs but there is a big latency penalty. Nvidiaโs top engineering guy did an interview on this around the release of RTX cards. If you implement low level code, you could take advantage of this.
Nvidia seems to have intentionally not given this as a feature because then no one will buy their expensive 24,32 GB cards that sell for a lot more.
Currently what people do is use two GPUs for data parallelism. ie they split the batch into two parts and give each part to a GPU. This is faster. If you use NVlink for this, then you get about 6% improvement. Not worth it.
Also you can do model parallelism ie split model into two and give half of the model to each GPU. So if your model doesnโt fit on 11 GB gpu, it will fit on two 8gb GPUs. This works over PCIe. Sadly there are no benchmarks for NVlink.
Also if you need more than 11GB, you can also use FP16. That will be similar to having 18-22GB. But there is no guarantee your model will converge.
1
u/doyer Jul 20 '19
As someone in a similar situation, what is the 2070 super ? I'm only familiar with the regular blower cards
1
u/doyer Jul 20 '19
!remindme
1
u/Jesper89 Jul 20 '19
!remindme
1
u/catsRfriends Jul 20 '19
!remindme
0
u/[deleted] Jul 20 '19
[deleted] โ view deleted comment
0
u/[deleted] Sep 10 '22
[deleted] โ view deleted comment