After some digging, I found that lxd containers work for this situation, as they have great support for nvidia passthrough (using an nvidia device inside of a container).
If you haven't done so already, first init
lxd by typing:
Create a new Ubuntu 18.04 container using with the
nvidia.runtime config and add gpu to it:
lxc launch ubuntu:18.04 isaac -c nvidia.runtime=true
lxc config device add isaac gpu gpu
Push previously downloaded isaac sdk to container, log into container as
ubuntu user, and install it:
lxc file push /<isaac folder>/isaac-sdk-<isaac version>.tar.xz isaac/tmp/i.txz
lxc exec isaac -- su ubuntu --login
tar xf /tmp/i.txz
./engine/build/scripts/install_dependencies.sh # it will take a very long time
This installed the dependencies as described. Afterwards I was able to build a sample app and run it:
bazel build //apps/tutorials/ping # this takes a long time first time around!
bazel run //apps/tutorials/ping
I was also able to bring up their "websight" visualization by opening http://10.24.150.210:3000/ on my desktop, where the ip is the one of the lxc container (run
ip addr inside to find it).
To facilitate the development workflow, I also mapped a local folder on the host to the container and mapped the userids so I could edit from inside and outside of the container (primarily so I could use my favorite editor on the host):
lxc config device add isaac myshareddir disk path=/ubuntu/shared source=/home/`whoami`/shared
lxc config set isaac raw.idmap "both 1000 1000"
lxc restart isaac