Table of Contents

Ubuntu - GPU - AMD GPU - Setup - Setup using the AMD Installer Script

The AMD Installer Script method automates the installation process for the AMDGPU stack.


Download the AMD Installer Script

NOTE: Check the latest version number of the Installer Script by checking the .deb file link from https://www.amd.com/en/support/linux-drivers.

sudo apt update
wget https://repo.radeon.com/amdgpu-install/22.40.5/ubuntu/jammy/amdgpu-install_5.4.50405-1_all.deb

NOTE: The installer package is updated periodically to resolve known issues and add new features.

  • The links for each Linux distribution always point to the latest available build.

Uninstall the previous AMDGPU Stack (optional)

Uninstall the AMDGPU stack.

NOTE: This is recommended.


Install the AMD Installer Script

sudo apt install ./amdgpu-install_5.4.50405-1_all.deb

NOTE: Check the latest version number of the Installer Script by checking the .deb file link from https://www.amd.com/en/support/linux-drivers.


Install the AMDGPU Stack

amdgpu-install --usecase=graphics,opencl --vulkan=amdvlk --opencl=rocr --no-dkms

NOTE: This chooses to install various optional elements, such as opencl with rocr and vulkan.

  • The pro option, used with vulkan requires AMD EULA to be accepted.
    • If this is not wanted, then remove this pro choice, which will use the Community version.
    • amdgpu-install --usecase=graphics,opencl --vulkan=amdvlk,pro --opencl=rocr
  • –no-dkms: To turn of dkms, as this sometimes causes problems. Optionally keep dkms by removing this option.

Enable the AMD Kernel Module

Ensure there is no modprobe blacklist for amdgpu.

sudo rm /etc/modprobe.d/blacklist-amdgpu.conf

Configure Group Access

Add the user to the video group

usermod -a -G video username

Add the user to the render group

usermod -a -G render username

NOTE: This is an alternative method to configure group access:

sudo usermod -a -G render,video $LOGNAME

Optionally, install fresh firmware files

Grab the latest firmware from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git.

Drop these firmware files into /lib/firmware/amdgpu/ and rebuild any initramfs:

wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/linux-firmware-20230515.tar.gz
tar -xf linux-firmware-20230515.tar.gz
sudo cp linux-firmware-20230515/amdgpu/* /lib/firmware/amdgpu/
sudo update-initramfs -uk 'all'

NOTE: The latest firmware files should probably provide support for newer GPUs.


Check that the GPU is being picked up

sudo apt update
sudo apt install mesa-utils
glxinfo | grep OpenGL

returns:

OpenGL vendor string: AMD
OpenGL renderer string: Radeon RX 7900 XTX (gfx1100, LLVM 15.0.3, DRM 3.48, 5.19.0-43-generic)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 22.3.0-devel
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6 (Compatibility Profile) Mesa 22.3.0-devel
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 22.3.0-devel
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

NOTE: This should show useful info on the GPU.

  • Mesa is the open source implementations of OpenGL and Vulkan that AMD GPU users typically use.

Test the GPU

glxgears -info

NOTE: This should show some gears spinning around, together with frames per second.


Optionally, Purge nvidia drivers

Remove the Nvidia packages and any Nvidia related kernel arguments you might have (DRM Kernel Mode Setting or whatever).

sudo dpkg -P $(dpkg -l | grep nvidia-driver | awk '{print $2}')

NOTE: The Nvidia drivers will not load if there is no Nvidia card installed.

  • Leaving the NVIDIA stack installed ensures that it is ready if you ever need to switch to a backup GPU in a hurry.

Optionally, setup environment variables for hardware acceleration

# For VDPAU
export VDPAU_DRIVER=radeonsi
 
# For VA-API
export LIBVA_DRIVER_NAME=radeonsi
 
# For GPU Vulkan Support, if the non-pro driver is used.
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json:/usr/share/vulkan/icd.d/radeon_icd.i686.json
 
# For GPU Vulkan Support, if the pro driver is used.
export VK_ICD_FILENAMES=/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd64.json

NOTE: These are only needed if these processes do not function correctly.

  • To allow these to be there permanently, upon boot, place into ~/.bashrc or ~/.profile.

Optionally, Xorg configuration

If using Xorg.

Xorg will automatically load the driver and it will use the monitors EDID to set the native resolution.

/etc/X11/xorg.conf.d/20-amdgpu.conf
Section "OutputClass"
     Identifier "AMD"
     MatchDriver "amdgpu"
     Driver "amdgpu"
EndSection

References

https://repo.radeon.com/amdgpu-install/

https://www.amd.com/en/support/linux-drivers

https://amdgpu-install.readthedocs.io/en/latest/

https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

https://rocm.docs.amd.com/en/latest/index.html

https://wiki.archlinux.org/title/AMDGPU