Julia on nVidia Jetson Nano or Orin?

Has anyone gotten Julia to work reliably on the Jetson units? Did you have to compile from scratch? Julia on any Jetson unit docs are extremely scarce!
Thanks,
David

I’ve not used those particular boards, but on older Jetson and other ARM boards I just use Docker and the standard Julia image which supports ARM32V7 and ARM64V8 architectures. Everything “just works”, including PackageCompiler.jl

We do CI both on x86 and ARM platforms and they use the exact same Dockerfile and scripts.

2 Likes

You may have to use a build with LLVM 15 from Enable JITLink on aarch64 linux. by sunho · Pull Request #45859 · JuliaLang/julia · GitHub, because of Julia fails on Chrome-OS and NVIDIA Jetson ARM-64 Linux · Issue #47399 · JuliaLang/julia · GitHub. Once LLVM 15 is merged (which shouldn’t take long), we’ll work on updating the GPU ecosystem, so there may still be some rough edges.

In general though, except for this Julia CPU bug, CUDA.jl works fine on ARM devices. There’s one known issue related to the CUDA artifacts, so if you run into strange issues try using the local system’s CUDA toolkit (using JULIA_CUDA_USE_BINARYBUILDER=false or CUDA.set_runtime_version!("local") depending on the version of CUDA.jl you’re using).

2 Likes

Hi
I’ve just started running Julia 1.9.0 on a Jetson Orin Nano Developer kit.
I found it fairly straightforward. It probably took about 8 hours to set it up over a weekend.
I went to the julialang downloads and got the aarch64 Linux version.
I’m running it with screen and keyboard attached, no problems so far.

It happily uses Juliaup to get/set the julia version.
Package manager is able to find and add packages like ModelingToolkit v8.56.0. which have a lot of package dependencies.

Here is my steps:

  1. For jetson Orin Nano, add SD card, USB keyboard & mouse and Screen with Displayport-HDMI cable.
  2. Following the Jetson Orin Nano Developer Kit Getting Started Guide | NVIDIA Developer page instructions, download the Jetson Orin Nano image. Download SD card formatter and Balena etcher. The first time I flashed the SD card it failed the verification. 2nd time took about 80 mins, but passed.
  3. Follow the JetsonOrinNano-start setup and first boot process instructions (there are Images and Video).
  4. Use Jetsons’ Chrome to go to julialang.org. Download “Generic Linux on ARM” 64-bitAArch64(GPG)
  5. Follow Julialangs Platform Specific instructions page:
  6. From the Jetson desktop side bar Open Files>downloads and move the julia tar file to a more appropriate location. I used the home directory.
  7. Right click in that folder and open a terminal window. Type tar zxgf “julia-1.9.0-linux-aarch64.tar.gz”
  8. Fixup the path. export PATH = “$PATH:/home/julia-1.9.0/bin”
    echo $PATH
  9. Its best to install juliaup. The install instructions are in the Julialang.org site
    use curl. from the Jetson terminal command line: sudo apt install curl
  10. curl -fs SL https://install.julialang.org/sh
    Configure the execution in ./home/user/.bashrc
  11. ~$juliaup Run juliaup from the terminal
    ~$juliaup status should show 1.9.0
  12. ~$julia should open Julia REPL

Usually on the jetson I work with the julia REPL and the inbuilt Jetson editor, which is very clean.
I’m currently in the process of adding a git repository for sharing code from my PC Windows julia environment (which is VScode) to the Jetson.

Next for me is to poke around with things like @info Sys.MACHINE and @info ENV. Then run the basic tests.

AM

3 Likes

Why do you install Julia and then juliaup? Does juliaup not install its own julia version on the jetson like it does on windows?

2 Likes

I could have installed juliaup first and saved time umming and aahing about which directory to use. After step 8 I did consider doing things the right way. I don’t think there would have been any problem installing juliaup first. So skip steps 4 - 8.

1 Like

First I’ve heard of “juliaup.”