Nsight Systems on Ubuntu, trying to profile Xavier NX


I am trying to connect Nsight Systems on Ubuntu, installed from the .deb package, to a Xavier NX, where I have installed the arm cli and moved it to the correct directory

On xavier:

/opt/nvidia/nsight-systems/2021.2.1/target-linux-armv8: ls
GpuMetrics.config       libcupti-tegra.so.10.2  libToolsInjectionCuBLAS64_10.so  nvtx
launcher                libcupti-tegra.so.11.0  libToolsInjectionCuBLAS64_11.so  python
libcupti-sbsa.so.10.2   libcupti-tegra.so.11.1  libToolsInjectionCuda64.so       reports
libcupti-sbsa.so.11.0   libcupti-tegra.so.11.2  libToolsInjectionCuDNN64_7.so    rules
libcupti-sbsa.so.11.1   libcupti-tegra.so.11.3  libToolsInjectionCuDNN64_8.so    sqlite3
libcupti-sbsa.so.11.2   libLauncher64.so        libToolsInjectionNvMedia64.so    vulkan-layers
libcupti-sbsa.so.11.3   libnvlog.so             libToolsInjectionProxy64.so
libcupti-tegra.so.10.0  libnvperf_host.so       nsys
libcupti-tegra.so.10.1  libToolsInjection64.so  nsys-launcher

However Nsight is giving the following error when I try to connect via SSH w/ password:

DirectoryNotFoundError (150) {
    OriginalExceptionClass: N5boost16exception_detail10clone_implIN11QuadDCommon26DirectoryNotFoundExceptionEEE
    OriginalFile: /build/agent/work/20a3cfcd1c25021d/QuadD/Host/Analysis/PosixDeviceValidator.cpp
    OriginalLine: 24
    OriginalFunction: bool QuadDAnalysis::PosixDeviceValidator::CheckHostSupport(const DevicePtr&)
    Filename: /opt/nvidia/nsight-systems/2021.2.1/target-linux-armv8
    ErrorText: Deploy directory does not exist

Clearly the directory exists, and the issue persists even if I widen permissions to something crazy like +777.

Does anyone have a solution or workaround for this issue? Please do not comment on the arm binary vs the sdkmanager, as that is unrelated to the error that I am being given.


Hi, the build you have installed 2021.2.1, is the ARM server version of Nsight Systems, rather than the version that works on embedded systems like Xavier NX.

Nsight Systems for the Xavier NX, is shipped in JetPack, and the installation instructions are at How to Install JetPack :: NVIDIA JetPack Documentation.

I found an issue with this documentation though. If you just click through to Nsight Systems page from there, you get the download page for the workstation version. And the “other platforms” link on the workstation page is broken. So you see the ARM server version and think it is correct.

Unfortunately, right now, there isn’t a good way to get Nsight Systems for tegra systems without getting JetPack (or CodeWorks (for Android)). What I will do is file a feature request to add Nsight Systems to the list of components that are available as separate apt-get components in that package. We already have apt-get options for the workstation product, so I would think it would be relatively simple.

Hi hwilper,

Thanks for your help here.

That would certainly be helpful in the long run. Are you able to request that Nsight Compute binaries also be made available for the Xavier NX? (Again, outside of JetPack)

That said, I think I am also having another issue, as I would expect the ssh session of Nsight Systems on my host to be able to find the directory, irrespective of whether the binary itself on the target supports the platform.

Two followup questions:

  1. Does Nsight Systems on the host expect its ssh user to be root? Or is it sufficient to be a sudoer?
  2. Nsight Systems allows one to attach to a running process by specifying its pid. I’ve installed the Nsight Systems Cli package, but cannot find the capability to ask the nsys binary to attach to a pid in the documentation. Is there a way to attach nsys to a running process?

Is there a way to attach nsys to a running process?

No, this is not supported with the CLI. What you can do is use nsys launch command together with nsys start and nsys stop. This way you can start your application pre-injected using nsys launch ... ./my-app, and then use nsys start and nsys stop to start and stop the collection.

Does Nsight Systems on the host expect its ssh user to be root? Or is it sufficient to be a sudoer?

For remote connections, the user on Jetson should be a sudoer.