I have an NVIDIA Clara AGX Development Kit with a Jetson AGX Xavier which has arm64 architecture, but I need to run an x86_64 program, and I need GPU access for it to run. I have the executable and a docker image, but do not have access to the source code, so I cannot recompile anything.
I have tried running the program through QEMU and docker but have not had any luck. The program starts to run, can read in parameter files, but when it needs to access the GPU, it fails and gives the error message that no device was detected.
In simple arm64 docker images, I’ve been able to access the GPU by a simple test of running nvidia-smi inside the container, and I can compile and run simple cuda code (Hello world) in these as well. So I think the nvidia runtime is working ok to access the GPU, at least in arm64 images.
In x86_64 docker images, I’ve been able to run simple commands in bash shell using docker exec, and can compile simple cuda code using nvcc, so it seems like I am possibly using QEMU right to emulate the other architecture on my system? Is that right? That said, it doesn’t seem to detect the GPU in those x86_64 docker images: the cuda executables (I tried a simple hello world) do not work. Running nvidia-smi also yields a command not found.
Does anyone have any experience trying to do this? I’m wondering if I should keep trying to work through the docker pipeline, or if I should use QEMU to create a virtual machine and enable GPU passthrough.
Please let me know if anyone has any ideas. Thank you!