nvdisasm fatal : Cannot print dot output file with these options

When trying to get the control flow diagram of a (supposedly) complex kernel I am trying to run nvdisasm on my cubin file. When I run it it throws a few warnings and then a fatal error: " Cannot print dot output file with these options". I have no clue how to fix this.

My cuda version is 5.5 (new versions give bad numbers, promised to be solved in 7.5). I’m working under windows and obtained my cubin files (called .cu.obj.cubin.txt) by giving CMake the option CUDA_BUILD_CUBIN. Visual studio version 2012 and building for sm_35.

If I run nvdisasm on the cubin without flags I get assembly code (which I will have to learn how to read I think, because register count seriously does not make any sense when I’m changing my code and config) just fine.

The “Cannot print dot output file with these options” is a message that will be received if the cubin in question has not been compiled for a cc3.0 or higher architecture. It’s just speculation, of course, and I recognize that you say you are building for sm_35, but you may want to check it. I think both windows (Visual Studio) and CMake both tend to obscure what is actually happening.

On CUDA 7.5 RC on linux, I had no trouble by compiling the kernel here:



nvcc -arch=sm_30 -cubin t670.cu

and then:

nvdisasm -cfg t670.cubin

And I would certainly encourage you to switch to a newer CUDA version if possible. Not sure what your objections are. (“new versions give bad numbers”? You mean you don’t get the results you expect on CUDA 6.0, or CUDA 6.5, or CUDA 7.0? It’s not clear why you think CUDA 7.5 would be any better. You might need to drill down on whatever the issue is.)

Sorry, this turned out to be caused by running a version of nvdisasm of 6.0 or above on code generated by nvcc 5.5. Thanks though.