First, big thanks to the Nsight Systems team for creating this tool! My teammates and I have really enjoyed using it. We have found it to be an invaluable tool for performance tuning and bug fixing. It is usually the first tool I reach for after making updates to our application.
That said we have encountered some portability issues; not with the tool itself but with the project files:
Our particular workflow sometimes demands that we run applications on a quasi-embedded system where we have access to a display that allows us to bring up the tool but we don’t have access to our regular directory structures (eg. home directories). We like to compare test runs between the embedded environment and our development environment but there are hard-coded paths in the project files which make it difficult to copy the project folder back and forth between those two environments. There are workarounds, such as recreating all the paths necessary on each system each time we bring it up, but it would nice if there were only relative paths in the project files so that we wouldn’t have to do that.
The other issue is that it appears that the project files contain directly serialized Qt objects. When we upgraded from CUDA10 to CUDA11 we lost all of our historical results because Qt changed their serialization format and we couldn’t open the project created under CUDA10’s version of Nsight Systems with CUDA11’s version. It would be nice if the project files were written using a forward compatible format so that projects could be carried forward whenever newer versions of CUDA are released.
Neither of these issues are showstoppers for us but I thought it would be worth mentioning them so that perhaps future versions of the tools could benefit from increased portability.
EDIT: We are aware of the remote target capability but the embedded system we target doesn’t always have network connectivity or disk resources to allow its consistent use which is why prefer to bring the tools and project files directly to to the embedded system on a temporary basis when we need it.