Como utilizar duas GPU em Notebook Optimus com drive legacy 390xx

O intuito desse artigo é obter uma funcionalidade semelhante a Notebooks Optimus com quarta geração de GPU em diante, que é o "prime_render_offload", e acredito que se você chegou a esse artigo é porque o "prime_render_offload" não funcionou para você por alguma falta de suporte.

[ Hits: 752 ]

Por: Eduardo Solano em 01/01/2024


COMO UTILIZAR DUAS GPUS EM NOTEBOOK OPTIMUS COM DRIVE LEGACY 390XX



Como utilizar bumblebee e nvidia-xrun com o mesmo bbswitch e ambos no mesmo sistema!

O intuito desse artigo é obter uma funcionalidade semelhante a notebooks optimus da quarta geração de GPU em diante, que é o "prime_render_offload", e acredito que se você chegou a esse artigo é porque o "prime_render_offload" não funcionou para você por alguma falta de suporte.

Nesse artigo irei ensinar a forma que uso a GPU nvidia em conjunto com a GPU Intel, para obter o melhor desempenho/economia em notebooks optimus com microarquitetura kepler (serie 6xx e 7xx) ou inferior. (3ª geração de gpus ou menor)

O que será mostrado aqui se aplica apenas ao drive legacy 390xx da nvidia ou inferior, ja que o mesmo não possui a funcionalidade "prime_render_offload" implementada a ele, apenas drivers da linha principal o possuem. Dado todos os avisos, continue acompanhando o artigo até o final para que tudo dê certo para você.

Sendo direto ao ponto, notebooks desse tipo não são muito compátiveis com distros como Ubuntu 20.04 LTS (Focal Fossa) ou maior, e derivados do Ubuntu também sofrem do mesmo problema, pois em seu kernel e servidor xorg o Ubuntu fez mudanças significativas em como o sistema lida com o drive da nVidia. Além disso, distros com soluções personalizadas para uso do "prime_render_offload", como OpenSuse e o "SusePrime" também tem sua forma específica de lidar com esses drivers, lesando assim notebooks optimus mais antigos.

Pelos motivos ditos anteriormente, recomendo fortemente que utilize distros Debian-Like, mas acredito que dê para adaptar o passo a passo para distros como Arch e SlackWare também.

Para esse passo a passo utilizaremos os seguintes pacotes:

  • bumblebee
  • nvidia-xrun (github)
  • bbswitch
  • virtualgl (sourceforge)
  • primus


Instale o drive legacy, caso não tenha instalado:

sudo apt install -y nvidia-legacy-390xx-driver

Instale o git, para instalar o nvidia-xrun do github:

sudo apt install -y git

Instale todos os pacotes com o comando abaixo:

sudo apt install -y nvidia-settings bbswitch-dkms bumblebee bumblebee-nvidia primus
wget https://sonik.dl.sourceforge.net/project/virtualgl/3.1/virtualgl_3.1_amd64.deb
sudo dpkg -i virtualgl_3.1_amd64.deb
git clone https://github.com/Witko/nvidia-xrun.git
cd nvidia-xrun
sudo chmod +x nvidia-xrun
sudo mv nvidia-xrun /usr/bin
sudo mv nvidia-xorg.conf /etc/X11
sudo mv xinit/nvidia-xinitrc /etc/X11
sudo mv config/nvidia-xrun /etc/default
cd ..
rm -r nvidia-xrun

E por fim configure os arquivos informados da seguinte forma: /etc/bumblebee/bumblebee.conf


# Configuration file for Bumblebee. Values should **not** be put between quotes

## Server options. Any change made in this section will need a server restart
# to take effect.
[bumblebeed]
# The secondary Xorg server DISPLAY number
VirtualDisplay=:8
# Should the unused Xorg server be kept running? Set this to true if waiting
# for X to be ready is too long and don't need power management at all.
KeepUnusedXServer=false
# The name of the Bumbleblee server group name (GID name)
ServerGroup=bumblebee
# Card power state at exit. Set to false if the card shoud be ON when Bumblebee
# server exits.
TurnCardOffAtExit=false
# The default behavior of '-f' option on optirun. If set to "true", '-f' will
# be ignored.
NoEcoModeOverride=false
# The Driver used by Bumblebee server. If this value is not set (or empty),
# auto-detection is performed. The available drivers are nvidia and nouveau
# (See also the driver-specific sections below)
Driver=nvidia
# Directory with a dummy config file to pass as a -configdir to secondary X
XorgConfDir=/etc/bumblebee/xorg.conf.d
# Xorg binary to run
XorgBinary=/usr/lib/xorg/Xorg

## Client options. Will take effect on the next optirun executed.
[optirun]
# Acceleration/ rendering bridge, possible values are auto, virtualgl and
# primus.
Bridge=virtualgl
# The method used for VirtualGL to transport frames between X servers.
# Possible values are proxy, jpeg, rgb, xv and yuv.
VGLTransport=proxy
# List of paths which are searched for the primus libGL.so.1 when using
# the primus bridge
PrimusLibraryPath=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus
# Should the program run under optirun even if Bumblebee server or nvidia card
# is not available?
AllowFallbackToIGC=false


# Driver-specific settings are grouped under [driver-NAME]. The sections are
# parsed if the Driver setting in [bumblebeed] is set to NAME (or if auto-
# detection resolves to NAME).
# PMMethod: method to use for saving power by disabling the nvidia card, valid
# values are: auto - automatically detect which PM method to use
# bbswitch - new in BB 3, recommended if available
# switcheroo - vga_switcheroo method, use at your own risk
# none - disable PM completely
# https://github.com/Bumblebee-Project/Bumblebee/wiki/Comparison-of-PM-methods

## Section with nvidia driver specific options, only parsed if Driver=nvidia
[driver-nvidia]

# Module name to load, defaults to Driver if empty or unset
KernelDriver=nvidia-legacy-390xx
PMMethod=bbswitch
# colon-separated path to the nvidia libraries
LibraryPath=/usr/lib/x86_64-linux-gnu/nvidia:/usr/lib/i386-linux-gnu/nvidia:/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu
# comma-separated path of the directory containing nvidia_drv.so and the
# default Xorg modules path
XorgModulePath=/usr/lib/nvidia,/usr/lib/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia
# If set to true, will always unload the kernel module(s) even with
# PMMethod=none - useful for newer Optimus models on which the kernel power
# management works out of the box to power the card on/off without bbswitch.
AlwaysUnloadKernelDriver=false

## Section with nouveau driver specific options, only parsed if Driver=nouveau
[driver-nouveau]
KernelDriver=nouveau
PMMethod=auto
XorgConfFile=/etc/bumblebee/xorg.conf.nouveau


/etc/X11/nvidia-xorg.conf

Section "Files"
 ModulePath "/usr/lib/nvidia/legacy-390xx"
 ModulePath "/usr/lib/x86_64-linux-gnu/nvidia"
 ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
 ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg/modules"
 ModulePath "/usr/lib/xorg"
 ModulePath "/usr/lib/xorg/modules"
EndSection

Section "ServerLayout"
 Identifier "layout"
 Screen 1 "nvidia"
 Inactive "Intel"
EndSection

Section "Device"
 Identifier "nvidia"
 Driver "nvidia"
 BusID "PCI:1:0:0"
EndSection

Section "Screen"
 Identifier "nvidia"
 Device "nvidia"
# Option "AllowIndirectGLX" "on"
# Option "IndirectGLX" "on"
# Option "AllowEmptyInitialConfiguration" "Yes"
# Option "UseDisplayDevice" "none"
EndSection

Section "Device"
 Identifier "Intel"
 Driver "modesetting"
 Option "AccelMethod" "glamor"
 Option "DRI" "3"
EndSection

Section "Screen"
 Identifier "Intel"
 Device "Intel"
EndSection


Para utilizar o bumblebee:

optirun -b none nvidia-settings -c :8
optirun -b primus /opt/VirtualGL/bin/glxspheres64
optirun /opt/VirtualGL/bin/glxspheres64

E para utilizar o nvidia-xrun:

Tecle Ctrl + Alt + F2, faça login e...

nvidia-xrun xterm

   

Páginas do artigo
   1. COMO UTILIZAR DUAS GPUS EM NOTEBOOK OPTIMUS COM DRIVE LEGACY 390XX
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Configurando placa wireless Broadcom 94311MC6 no Mandriva

Fingerprint-GUI (solução para leitores biométricos) no Ubuntu

Scanner / impressora Lexmark Series 1100 / 1185 / 1195 / 1250 / 1270

Instalando uma placa wireless

Arduino - Visão Geral

  
Comentários
[1] Comentário enviado por maurixnovatrento em 14/01/2024 - 13:09h


Muito interessante.

___________________________________________________________
https://www.youtube.com/@LinuxDicasPro
https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts