Switching to newer toolkits and cross-compilation support?

I have some open questions regarding switching to newer toolkits and cross-compilation support:

→ Is cross compilation for armv7 (TK1) supported on CUDA 7.x / RC8.0 ?
→ Are there any constraints on host OS? (Ubuntu 14.04, 16.04?)
→ Are there any known dependency gotchas?

CUDA 7 requires a 64-bit platform. ARMv7 is only 32-bit, so CUDA 7 is out on the JTK1. It has been stated that there is no intent to develop past CUDA 6.5 for 32-bit platforms.

Host o/s must be Linux x86_64. 32-bit versions won’t work, the flash program itself is a 64-bit executable. Should you use JetPack packaging front end, then you need Ubuntu 14.04 because of the Ubuntu package system. It was stated that somewhere in the near future there would be JetPack support for Ubuntu 16.04 as well, but no exact data was mentioned…the hints are for this month though as a probable release.

I don’t know about specific dependency gotchas per se, but kernel compiles tend to be fairly easy to set up for. The kernel has always supported cross compile so it isn’t a specialty situation. Most dependency gotchas are for user space program compiles…this adds a need for a sysroot with support for everything the cross binutils might want to be there. Using a clone of a Jetson root file system can help there, but it does require some work which can get complicated at times (it’s a mix of cross tools, x86_64 tools, and pure armhf environment…getting the proper mix requires patience).


So sticking with ubuntu 14.04 and installing the latest CUDA toolkits 7.0/7.5 all of the same tools for cross compilation towards armv7 should be present? And these will compile towards CUDA 6.5 which is what is supported on TK1 ?

I’m not using Jetpack currently, is there any need to use it?

To clarify, Ubuntu seems to offer cross compilers under their native packaging system for ARMv7…so this is not an issue (the same is probably true of arm64, but I don’t know for certain). I use Fedora, so I couldn’t tell you which repositories or packages to actually install (I either build my own tool chains or use Linaro pre-built binaries). JetPack can aid in setting that up, both on the Jetson and on the host…so JetPack probably simplifies cross compiler installation as well. The major requirement of JetPack is the Ubuntu package management system (currently for Ubuntu 14.04, but in the near future a newer JetPack is expected to function from an Ubuntu 16.04 host).

I believe you could install CUDA 6.5 on your x86_64 host if you install some 32-bit compatibility libraries, though I’ve never tried. CUDA 7 and newer will just work with any of the x86_64 64-bit distributions and the nVidia video card (I manually install the video driver, then CUDA 7+ install is easy). CUDA 7 or newer will never work on any 32-bit system (regardless of CPU architecture), this is a purely 64-bit install (so CUDA 7+ works on a TX1, but you have to stick to 6.5 or earlier for TK1 since TK1 is 32-bit).

JetPack is not necessary for any of this, it is a convenience.