I’m working on optimizing some programs. These programs will be released to public. As the official tools such as Nsight System and Nsight Compute give many detail information about our optimized program, this may show our competitors some clues for our optimization method.
Any way to prevent this?
What I want to keep secret including but not limited to:
- SASS code(Nsight Compute, cuobjdump and maybe some other tools can show this)
- Ptx code
- Detail information showed in Nsight Compute and Nsight System.
All in all, as little information as possible is leaked.
You can prevent PTX code from being in your application at all with proper usage of compile switches. This has implications for your code running on a future architecture.
It may be possible using the driver API to obfuscate your SASS code. This just puts thing in a different file format, so the
cuobjdump tool doesn’t know where to find the binary code. The code is not encrypted or actually hidden. I’m not suggesting that linked example is canonical or anything like that, just a demonstrator. You probably would not want to follow a “standardized” process anyway, if you are interested in hiding things.
I don’t have suggestions for hiding things from the profilers.
Thanks for your response.
Is there anyway to detect my program is profiled by Nsight Compute or Nsight System?
So i can stop my program or just the cuda part to prevent being profiled.
I don’t know. Detailed profiling questions might be better asked on the profiling forums.