Installing ROCm 7.2.4 on AMD Instinct MI350X DigitalOcean Droplet with Ubuntu 24.04
This guide documents a working installation path for ROCm 7.2.4 on an AMD Instinct MI350X DigitalOcean GPU Droplet running Ubuntu 24.04.
It also includes the correct way to run ROCm Bandwidth Test / TransferBench. In ROCm 7.2.x, rocm-bandwidth-test is a plugin-based framework; the actual bandwidth benchmark is normally provided by the TransferBench plugin (tb).
Tested Environment
Cloud provider: DigitalOcean
GPU: AMD Instinct MI350X VF
OS: Ubuntu 24.04
Kernel tested: 6.8.0-124-generic
ROCm: 7.2.4
AMDGPU installer: 7.2.4 / 30.30.4
Final working amdgpu version reported by amd-smi: 6.16.13
Example successful validation output:
amd-smi
+------------------------------------------------------------------------------+
| AMD-SMI 26.2.2+97f5574fe2 amdgpu version: 6.16.13 ROCm version: 7.2.4 |
| VBIOS version: 00174525 |
| Platform: Linux Guest |
|-------------------------------------+----------------------------------------|
| BDF GPU-Name | Mem-Uti Temp UEC Power-Usage |
| GPU HIP-ID OAM-ID Partition-Mode | GFX-Uti Fan Mem-Usage |
|=====================================+========================================|
| 0000:83:00.0 AMD Instinct MI350X VF | 0 % 58 °C 0 254/1000 W |
| 0 0 6 SPX/NPS1 | 0 % N/A 285/294592 MB |
+-------------------------------------+----------------------------------------+
Why ROCm 7.2.4?
ROCm 7.2.4 is recommended for this setup because AMD lists MI350X compatibility with AMD GPU driver 30.30.x up to 30.30.4, while ROCm 7.2.3 lists support only up to 30.30.2 for that driver family.
MI350X is a CDNA4 / gfx950 GPU. ROCm 7.2.4 supports this target in the AMD Instinct stack.
Key Finding
For this DigitalOcean MI350X Ubuntu 24.04 droplet, installing ROCm with --no-dkms was not sufficient:
sudo amdgpu-install --usecase=rocm --no-dkms --no-32
That path left the system using the stock Ubuntu in-kernel amdgpu module:
/lib/modules/6.8.0-124-generic/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko.zst
With the stock Ubuntu driver, the MI350X PCI device was visible, but the driver did not bind to the GPU:
readlink /sys/bus/pci/devices/0000:83:00.0/driver || echo "No driver bound"
Example failed output:
No driver bound
The failing dmesg output looked like this:
amdgpu 0000:83:00.0: amdgpu: Fatal error during GPU init
amdgpu: Doesn't get msg:1 from pf, error=-62
amdgpu: Doesn't get TRN_MSG_ACK from pf in 500 msec
amdgpu: probe of 0000:83:00.0 failed with error -22
The working fix was to install ROCm with the AMD DKMS driver:
sudo amdgpu-install --usecase=rocm --no-32
Step 0 — Clean Previous Broken Install
If you previously used a runfile, mixed ROCm versions, or installed with --no-dkms, clean the system first.
sudo amdgpu-uninstall || true
sudo apt purge -y 'amdgpu*' 'rocm*' 'hip*' 'hsa*' 'rocr*' 'rocblas*' 'rocminfo*' 'rocm-smi*'
sudo apt autoremove -y
sudo apt autoclean
sudo rm -rf /opt/rocm*
sudo rm -rf /etc/rocm*
sudo rm -rf /usr/local/rocm*
sudo rm -rf /var/lib/dkms/amdgpu
sudo rm -rf /usr/src/amdgpu*
Reboot:
sudo reboot
Why this matters
ROCm, AMDGPU DKMS, HIP, HSA, and ROCm user-space libraries must match. Mixing runfile packages, Ubuntu stock packages, and AMD repo packages can leave incompatible modules or libraries on the system.
Step 1 — Verify System and GPU Visibility
After reboot:
lsb_release -a
uname -r
lspci | grep -i amd
lspci -k | grep -A 5 -i amd
Expected GPU visibility:
83:00.0 Processing accelerators: Advanced Micro Devices, Inc. [AMD/ATI] Device 75b0
At this point, it is okay if the driver is not active yet.
Step 2 — Install Base Dependencies
sudo apt update
sudo apt upgrade -y
sudo apt install -y \
wget \
curl \
gnupg2 \
gpg \
ca-certificates \
pciutils \
kmod \
dkms \
build-essential \
linux-headers-$(uname -r) \
linux-modules-extra-$(uname -r) \
linux-firmware \
libnuma1 \
numactl
Why this matters
dkms is required for building the AMDGPU DKMS driver.
linux-headers-$(uname -r) must match the running kernel.
build-essential provides the compiler toolchain.
linux-firmware provides firmware blobs.
libnuma1 and numactl are required or useful for TransferBench-style bandwidth testing.
Step 3 — Add the Official AMD ROCm 7.2.4 Repository
Download the official AMD amdgpu-install package for ROCm 7.2.4 and Ubuntu 24.04 Noble:
cd /root
wget https://repo.radeon.com/amdgpu-install/7.2.4/ubuntu/noble/amdgpu-install_7.2.4.70204-1_all.deb
Install it:
sudo apt install -y ./amdgpu-install_7.2.4.70204-1_all.deb
sudo apt update
Note
AMD may publish newer patch releases under repo.radeon.com.
Before copying commands blindly, verify the current package path here:
https://repo.radeon.com/
The tested and working URL for this guide is:
https://repo.radeon.com/amdgpu-install/7.2.4/ubuntu/noble/amdgpu-install_7.2.4.70204-1_all.deb
Step 4 — Install ROCm 7.2.4 with AMD DKMS Driver
This is the critical step.
Use:
sudo amdgpu-install --usecase=rocm --no-32
Do not use --no-dkms for this tested MI350X DigitalOcean setup.
Correct:
sudo amdgpu-install --usecase=rocm --no-32
Incorrect for this tested setup:
sudo amdgpu-install --usecase=rocm --no-dkms --no-32
Why this matters
Using --no-dkms left the droplet on Ubuntu’s stock kernel amdgpu driver, which did not bind correctly to the MI350X VF. Installing with DKMS provided the correct AMDGPU driver stack.
Step 5 — Check DKMS Status
Before rebooting, verify that DKMS built and installed the AMDGPU module:
dkms status
You should see an installed AMDGPU DKMS entry.
Also check where the amdgpu module exists:
find /lib/modules/$(uname -r) -name "amdgpu.ko*" | sort
A successful DKMS install should provide an AMD DKMS module, usually under an updates/dkms-style path.
Step 6 — Rebuild initramfs
sudo update-initramfs -u -k all
Why this matters
This ensures the new AMDGPU kernel module and firmware references are available during boot.
Step 7 — Reboot
sudo reboot
Do not skip this step.
Step 8 — Verify AMDGPU Module
After reboot:
lsmod | grep amdgpu
Expected output should include entries similar to:
amdgpu
amdxcp
gpu_sched
ttm
Step 9 — Verify Kernel Driver Version
modinfo amdgpu | grep -E "filename|version|vermagic"
A previously broken state looked like this:
filename: /lib/modules/6.8.0-124-generic/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko.zst
That indicates the stock Ubuntu kernel driver.
A working system should load the AMD DKMS driver, and amd-smi should later report something like:
amdgpu version: 6.16.13
Step 10 — Verify Device Nodes
ls -l /dev/kfd
ls -l /dev/dri/
Expected:
/dev/kfd
/dev/dri/card0
/dev/dri/renderD128
Example:
crw-rw---- 1 root render 238, 0 /dev/kfd
crw-rw---- 1 root video 226, 0 card0
crw-rw---- 1 root render 226, 128 renderD128
Step 11 — Verify PCI Driver Binding
readlink /sys/bus/pci/devices/0000:83:00.0/driver || echo "No driver bound"
Expected:
/sys/bus/pci/drivers/amdgpu
Then:
lspci -k | grep -A 5 -i amd
Expected:
Kernel driver in use: amdgpu
Kernel modules: amdgpu
If you only see:
Kernel modules: amdgpu
without:
Kernel driver in use: amdgpu
then the module exists but did not attach to the device.
Step 12 — Check dmesg
dmesg | grep -E "amdgpu|kfd|firmware|fatal|error|TRN|pf" -i | tail -150
Bad signs:
amdgpu: Fatal error during GPU init
amdgpu: Doesn't get TRN_MSG_ACK from pf
amdgpu: probe of 0000:83:00.0 failed with error -22
In this tested setup, those errors were caused by using the stock Ubuntu amdgpu driver. Installing the AMD DKMS driver fixed them.
Step 13 — Verify with AMD SMI
Run:
amd-smi
Expected working output:
+------------------------------------------------------------------------------+
| AMD-SMI 26.2.2+97f5574fe2 amdgpu version: 6.16.13 ROCm version: 7.2.4 |
| VBIOS version: 00174525 |
| Platform: Linux Guest |
|-------------------------------------+----------------------------------------|
| BDF GPU-Name | Mem-Uti Temp UEC Power-Usage |
| GPU HIP-ID OAM-ID Partition-Mode | GFX-Uti Fan Mem-Usage |
|=====================================+========================================|
| 0000:83:00.0 AMD Instinct MI350X VF | 0 % 58 °C 0 254/1000 W |
| 0 0 6 SPX/NPS1 | 0 % N/A 285/294592 MB |
+-------------------------------------+----------------------------------------+
This confirms that:
- MI350X VF is detected.
- AMDGPU driver is active.
- ROCm 7.2.4 user-space is installed.
- AMD SMI can query the GPU.
- The droplet is running as a Linux guest.
Step 14 — Verify ROCm Runtime
rocminfo | grep -i gfx
Expected:
gfx950
Run:
rocm-smi
Expected: GPU temperature, utilization, memory, power, and other metrics should be visible.
Step 15 — Configure ROCm Bandwidth Test Environment
ROCm Bandwidth Test is plugin-based. Set the ROCm 7.2.4 environment explicitly:
export ROCM_PATH=/opt/rocm-7.2.4
export PATH=$ROCM_PATH/bin:$PATH
export LD_LIBRARY_PATH=$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/lib/rocm_bandwidth_test/plugins:${LD_LIBRARY_PATH}
Step 16 — Install / Reinstall ROCm Bandwidth Test
sudo apt update
sudo apt install --reinstall -y rocm-bandwidth-test libnuma1 numactl
Step 17 — Verify Bandwidth Test Plugins
Check plugin files:
find /opt/rocm* -type f \( -name "*transfer*" -o -name "*.amdplug" \) | sort
Expected relevant files include:
/opt/rocm-7.2.4/lib/rocm_bandwidth_test/plugins/amd_hello.amdplug
/opt/rocm-7.2.4/lib/rocm_bandwidth_test/plugins/builtin.amdplug
/opt/rocm-7.2.4/lib/rocm_bandwidth_test/plugins/transferbench.amdplug
Check for missing shared libraries:
ldd /opt/rocm-7.2.4/lib/rocm_bandwidth_test/plugins/transferbench.amdplug | grep "not found" || echo "No missing shared libraries"
List registered plugins:
/opt/rocm-7.2.4/bin/rocm-bandwidth-test plugin -i
Expected: the TransferBench plugin should appear, typically with short name tb.
Step 18 — Run ROCm Bandwidth Test
Once the TransferBench plugin is registered, run:
/opt/rocm-7.2.4/bin/rocm-bandwidth-test run tb a2a 1G | tee rocm-bandwidth-test-mi350x-a2a-1g.log
Meaning:
run tb runs the TransferBench plugin.
a2a is an all-to-all preset.
1G uses a fixed 1 GiB transfer size.
For a transfer-size sweep:
/opt/rocm-7.2.4/bin/rocm-bandwidth-test run tb a2a 0 | tee rocm-bandwidth-test-mi350x-a2a-sweep.log
Use plugin help if needed:
/opt/rocm-7.2.4/bin/rocm-bandwidth-test run tb --help
Monitoring Commands
AMD SMI
amd-smi
Live view:
watch -n 1 amd-smi
Show available commands:
amd-smi --help
ROCm SMI
rocm-smi
Live view:
watch -n 1 rocm-smi
Common metrics:
rocm-smi --showtemp --showuse --showmemuse --showclk --showpower
Topology:
rocm-smi --showtopo
Troubleshooting
Problem: amd-smi says no GPU devices
Example:
Unable to detect any GPU devices
Check whether the PCI device is bound:
readlink /sys/bus/pci/devices/0000:83:00.0/driver || echo "No driver bound"
If output is:
No driver bound
then AMDGPU did not bind to the GPU.
Problem: lspci only shows Kernel modules: amdgpu
Bad:
Kernel modules: amdgpu
Good:
Kernel driver in use: amdgpu
Kernel modules: amdgpu
If only Kernel modules appears, the module exists but failed to attach.
Problem: Stock Ubuntu amdgpu driver is loaded
Check:
modinfo amdgpu | grep filename
Bad example:
/lib/modules/6.8.0-124-generic/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko.zst
Fix:
sudo amdgpu-install --usecase=rocm --no-32
sudo update-initramfs -u -k all
sudo reboot
Problem: PF/TRN error in dmesg
Bad example:
amdgpu: Doesn't get msg:1 from pf, error=-62
amdgpu: Doesn't get TRN_MSG_ACK from pf in 500 msec
amdgpu: probe of 0000:83:00.0 failed with error -22
In this tested setup, this happened when the stock Ubuntu amdgpu driver was used. Installing the AMD DKMS driver fixed it.
If this error persists even after AMD DKMS is loaded, contact DigitalOcean support and ask them to verify host-side MI350X PF/GIM/firmware compatibility.
Problem: rocm-bandwidth-test plugin -i only shows Hello
If:
/opt/rocm-7.2.4/bin/rocm-bandwidth-test plugin -i
shows only:
Hello
but this file exists:
/opt/rocm-7.2.4/lib/rocm_bandwidth_test/plugins/transferbench.amdplug
then the plugin is present but not loading.
Set environment variables:
export ROCM_PATH=/opt/rocm-7.2.4
export PATH=$ROCM_PATH/bin:$PATH
export LD_LIBRARY_PATH=$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/lib/rocm_bandwidth_test/plugins:${LD_LIBRARY_PATH}
Check missing libraries:
ldd $ROCM_PATH/lib/rocm_bandwidth_test/plugins/transferbench.amdplug | grep "not found" || echo "No missing shared libraries"
Reinstall RBT and dependencies:
sudo apt update
sudo apt install --reinstall -y rocm-bandwidth-test libnuma1 numactl
Then check plugins again:
$ROCM_PATH/bin/rocm-bandwidth-test plugin -i
Clean Reinstall Summary
If you want the shortest complete reinstall path:
sudo amdgpu-uninstall || true
sudo apt purge -y 'amdgpu*' 'rocm*' 'hip*' 'hsa*' 'rocr*'
sudo apt autoremove -y
sudo apt autoclean
sudo rm -rf /opt/rocm*
sudo rm -rf /etc/rocm*
sudo rm -rf /usr/local/rocm*
sudo rm -rf /var/lib/dkms/amdgpu
sudo rm -rf /usr/src/amdgpu*
sudo reboot
After reboot:
sudo apt update
sudo apt upgrade -y
sudo apt install -y \
wget \
curl \
gnupg2 \
gpg \
ca-certificates \
pciutils \
kmod \
dkms \
build-essential \
linux-headers-$(uname -r) \
linux-modules-extra-$(uname -r) \
linux-firmware \
libnuma1 \
numactl
cd /root
wget https://repo.radeon.com/amdgpu-install/7.2.4/ubuntu/noble/amdgpu-install_7.2.4.70204-1_all.deb
sudo apt install -y ./amdgpu-install_7.2.4.70204-1_all.deb
sudo apt update
sudo amdgpu-install --usecase=rocm --no-32
dkms status
sudo update-initramfs -u -k all
sudo reboot
After reboot:
amd-smi
lspci -k | grep -A 5 -i amd
readlink /sys/bus/pci/devices/0000:83:00.0/driver || echo "No driver bound"
rocminfo | grep -i gfx
Configure RBT environment:
export ROCM_PATH=/opt/rocm-7.2.4
export PATH=$ROCM_PATH/bin:$PATH
export LD_LIBRARY_PATH=$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/lib/rocm_bandwidth_test/plugins:${LD_LIBRARY_PATH}
Run bandwidth test:
/opt/rocm-7.2.4/bin/rocm-bandwidth-test run tb a2a 1G | tee rocm-bandwidth-test-mi350x-a2a-1g.log
Final Working Result
A successful installation should show something like:
AMD-SMI 26.2.2
amdgpu version: 6.16.13
ROCm version: 7.2.4
Platform: Linux Guest
GPU: AMD Instinct MI350X VF
Partition Mode: SPX/NPS1
Memory: ~294592 MB
This confirms that ROCm 7.2.4 is correctly installed and the MI350X VF is usable from the DigitalOcean Ubuntu 24.04 droplet.
Key Lesson
For DigitalOcean MI350X on Ubuntu 24.04, the working install command was:
sudo amdgpu-install --usecase=rocm --no-32
not:
sudo amdgpu-install --usecase=rocm --no-dkms --no-32
The --no-dkms path left the system using Ubuntu’s stock amdgpu kernel driver, which did not bind correctly to the MI350X VF. Installing the AMD DKMS driver resolved the issue.
References