ROCm 7.2.4 on AMD Instinct MI350X: DigitalOcean Ubuntu 24.04 Installation Guide

ROCm 7.2.4 on AMD Instinct MI350X: DigitalOcean Ubuntu 24.04 Installation Guide

Community guide for AMD developers and ROCm users

This guide documents a verified installation and troubleshooting workflow for running ROCm 7.2.4 on an AMD Instinct MI350X VF inside a DigitalOcean Ubuntu 24.04 GPU Droplet.

It covers the full setup process, including:

  • Installing ROCm 7.2.4 from the official AMD repository
  • Correctly installing the AMDGPU DKMS driver
  • Avoiding the `–no-dkms` issue on MI350X droplets
  • Verifying GPU binding, ROCm runtime, and AMD SMI
  • Running ROCm Bandwidth Test / TransferBench
  • Troubleshooting common MI350X initialization errors

The final working configuration was validated with amd-smi, showing:

AMD Instinct MI350X VF
ROCm version: 7.2.4
amdgpu version: 6.16.13
Platform: Linux Guest
Partition Mode: SPX/NPS1

Target audience: AMD ROCm developers, cloud GPU users, ML/AI engineers, and anyone deploying MI350X workloads on Ubuntu-based DigitalOcean GPU droplets.

Guide link: inference-ops/rocm/7.2.4_installation_guide.md at master · bogdannadev/inference-ops · GitHub

This is solution for my previous post: ROCm 7.2.4 Runfile Installer MD5 checksum error on Ubuntu 24.04

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

1 Like