I’m a new member of CUDA and just received Jetson Nano yesterday, could anyone help me how to install CUDA cross-platform environment for Jetson Nano on host target ubuntu 10.4 ?
According to the URL:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#cross-platform
“6. CUDA Cross-Platform Environment”
and I’m a little confused that how to get “cuda-repo-cross-_all.deb”, and can only download
“cuda-repo-ubuntu1404-10-1-local-10.1.105-418.39_1.0-1_amd64.deb”, is there some different between “all” and “amd64”
when exe “sudo apt-get install cuda-cross-aarch64” command , there is an error:
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package cuda-cross-aarch64
root@ubuntu:/mnt/hgfs/share/cuda# dpkg -i cuda-repo-ubuntu1404-10-1-local-10.1.105-418.39_1.0-1_all.deb
dpkg: error processing archive cuda-repo-ubuntu1404-10-1-local-10.1.105-418.39_1.0-1_all.deb (–install):
cannot access archive: No such file or directory
Errors were encountered while processing:
I can’t answer your question as it is now, but see this for some general cross compile setup information:
An application is designed to run on a particular architecture. For a PC this might show as either amd64 or x86_64 (basically the same thing). This is the “native” architecture. Any other architecture is a “foreign” architecture. The “native” architecture of a nano is arm64/aarch64/ARMv8-a (depending on which notation you might use). The “native” architecure of a nano is “foreign” to a PC. A purely “foreign” architecture cannot run without some sort of virtualization to fake the environment.
If a compiler runs on a particular architecture, then it is native. However, if the compiler runs on one architecture, but produces code for a different architecture, then it is a cross compiler. The same is true of a linker…a linker which runs and links the same architecture is native, but a linker which runs on one architecture while working with code to another architecture is a cross linker.
Package managers normally only list packages which either do not have an architecture dependency (shell scripts and documentation would qualify), or else are native. One can ask to list foreign architectures (details differ by Linux distribution). However, there are also dependencies on versions…something too new might not run on something older.
So is this really Ubuntu 10? If so, then it is beyond ancient. The packages with “ubuntu1404” in their name are for Ubuntu 14.04 LTS. Ideally, for developing with the Nano (or CUDA 10) you’d want a development host running Ubuntu 18.04 LTS (though 16.04 will work).
Please install the CUDA toolkit for host device with sdkmanager.
You can find the tool/libraries for cross-compiling there.
Thanks for reply, sdkmanager is so good, the problem is resloved.
The host is x86 Ubuntu 18.04, the target is Jeston Nano arch64.
1: download sdk manager, and install it on x86 Ubuntu 18.04:
sudo apt install ./sdkmanager-[version].[build#].deb
2: login sdk manager, and install cuda ,cross compile and tools
3: install nfs on Jeston Nano on Jeston Nan
sudo apt-get install nfs-kernel-server
4: edit /etc/exports file on Jeston Nan
add “/ *(rw,sync,no_root_squash,no_subtree_check)” to the file tail
5: start rpcbind and nfs server on Jeston Nan
6: mnt Jeston Nan’s filesystem to x86 Ubuntu 18.04
mount -t nfs :/ /mnt/target
7: compile vectorAdd example on x86 for Jeston Nano
make TARGET_ARCH=aarch64 TARGET_OS=linux SMS=“30 32 53 61 62 70 72 75” TARGET_FS=/mnt/target
8: exe vectorAdd on Jeston Nano