Podman + GPU on Jetson AGX Orin

I’m following these instructions Support for Container Device Interface — NVIDIA Container Toolkit 1.15.0 documentation
in order to use podman with NVidia GPU support of the Jetson AGX Orin dev kit.

On Jetson I have running:
Ubuntu 24.04 LTS
nvidia-container-toolkit (1.15.0-1)
podman v 4.9.3

When I try to create a CDI device with: sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml

I get this error(s):

INFO[0000] Auto-detected mode as “nvml”
ERRO[0000] failed to generate CDI spec: failed to create device CDI specs: failed to generate CDI edits for GPU devices: error visiting device: failed to get edits for device: failed to create device discoverer: error getting GPU device minor number: Not Supported

I’m trying to make this work:
podman run --platform linux/amd64 --gpus all --rm glava:latest
the image is amd64 and is able to run but inside pyTorch uses the CPU for computation instead of the GPU.

Any ideas on how to get past this point would be appreciated.
Thank you

here the ctk config:

#accept-nvidia-visible-devices-as-volume-mounts = false
#accept-nvidia-visible-devices-envvar-when-unprivileged = true
disable-require = false
supported-driver-capabilities = “compat32,compute,display,graphics,ngx,utility,video”
#swarm-resource = “DOCKER_RESOURCE_GPU”

[nvidia-container-cli]
#debug = “/var/log/nvidia-container-toolkit.log”
environment =
#ldcache = “/etc/ld.so.cache”
ldconfig = “@/sbin/ldconfig.real”
load-kmods = true
#no-cgroups = false
#path = “/usr/bin/nvidia-container-cli”
#root = “/run/nvidia/driver”
#user = “root:video”

[nvidia-container-runtime]
#debug = “/var/log/nvidia-container-runtime.log”
log-level = “info”
mode = “auto”
runtimes = [“docker-runc”, “runc”, “crun”]

[nvidia-container-runtime.modes]

[nvidia-container-runtime.modes.cdi]
annotation-prefixes = [“cdi.k8s.io/”]
default-kind = “nvidia.com/gpu
spec-dirs = [“/etc/cdi”, “/var/run/cdi”]

[nvidia-container-runtime.modes.csv]
mount-spec-path = “/etc/nvidia-container-runtime/host-files-for-container.d”

[nvidia-container-runtime-hook]
path = “nvidia-container-runtime-hook”
skip-mode-detection = false

[nvidia-ctk]
path = “nvidia-ctk”

Hi,

Could you help to double-confirm which Ubuntu version is in your environment?

With our latest JetPack 6, the Ubuntu version should be 22.04.
Do you setup with partner distros?

Thanks.

Hi,

yes, I can confirm Ubuntu 24.04 LTS. We’ve upgraded through ubuntu official channel in order to install Podman 4.9.3.

Thank you,
Kalo

Hi,

Do you follow the Canonical’s document?
If yes, could you share the link with us?

More, could you also verify the GPU functionally with our standard CUDA sample first?
For example, deviceQuery from the below link?

Thanks.

Hi,
no, we didn’t follow an official documentation from Canonical. Rather we’ve used the Ubunut Software & Updates app, where we’ve changed the Ubuntu version notification setting. Then only started sudo apt update & upgrade

Yes, the standard samples compile and pass their tests. Here the output of the deviceQuery:

./deviceQuery

CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: “Orin”
CUDA Driver Version / Runtime Version 12.2 / 12.5
CUDA Capability Major/Minor version number: 8.7
Total amount of global memory: 62841 MBytes (65893916672 bytes)
(008) Multiprocessors, (128) CUDA Cores/MP: 1024 CUDA Cores
GPU Max Clock rate: 1300 MHz (1.30 GHz)
Memory Clock rate: 612 Mhz
Memory Bus Width: 256-bit
L2 Cache Size: 4194304 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
Maximum Layered 1D Texture Size, (num) layers 1D=(32768), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(32768, 32768), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total shared memory per multiprocessor: 167936 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 1536
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 2 copy engine(s)
Run time limit on kernels: No
Integrated GPU sharing Host Memory: Yes
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device supports Managed Memory: Yes
Device supports Compute Preemption: Yes
Supports Cooperative Kernel Launch: Yes
Supports MultiDevice Co-op Kernel Launch: Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 0 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 12.2, CUDA Runtime Version = 12.5, NumDevs = 1
Result = PASS

Hi,

nivida-container recently has a known issue on the Orin-based systems.
There is a fix internally and our team is checking if the fix has been included in the most recent release.

Will provide more info to you later.
Thanks.

1 Like

When generating CDI specs on an Orin-based system with:

sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml

There is a bug in the mode detection logic that causes nvml to be used instead of the CSV files. You should be able to force the mode to csv by running:

sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml --mode=csv

To generate a CDI specification that you should be able to use from podman. The CDI device names available after spec generation can be checked using:

nvidia-ctk cdi list

To verify that the CDI devices can be used from a container, you can run:

podman run --rm -ti --device=nvidia.com/gpu=all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0-ubuntu22.04

Note, that it is unlikely that you’ll be able to run a linux/amd64 image while accessing these devices.

1 Like

Hi,

this worked. You’re also correct the linux/amd64 image doesn’t seem to recognize the gpu. We’ll try to rebuild it with arm64 architecture.

Thanks,
Kalo

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.