Troubleshooting¶
Debugging and Verbose Simulation Output¶
One helpful mechanism of debugging CUDA-Q simulation execution is
the CUDAQ_LOG_LEVEL environment variable. For any CUDA-Q
executable, just prepend this and turn it on:
CUDAQ_LOG_LEVEL=info python3 file.py
CUDAQ_LOG_LEVEL=info ./a.out
Similarly, one may write the IR to their console or to a file before remote
submission. This may be done through the CUDAQ_DUMP_JIT_IR environment
variable. For any CUDA-Q executable, just prepend as follows:
CUDAQ_DUMP_JIT_IR=1 python3 file.py
# or
CUDAQ_DUMP_JIT_IR=<output_filename> python3 file.py
CUDAQ_DUMP_JIT_IR=1 ./a.out
# or
CUDAQ_DUMP_JIT_IR=<output_filename> ./a.out
Python Stack-Traces¶
When CUDA-Q parses Python command-line options via cudaq.parse_args(),
Python stack-traces are suppressed by default to keep runtime errors concise.
To show the full stack-trace for debugging, pass
--cudaq-full-stack-trace when invoking your script.
python3 program.py --cudaq-full-stack-trace
This flag can be combined with other CUDA-Q Python runtime options such as
--target, --target-option, and --emulate.
python3 program.py --target nvidia --target-option fp64 --cudaq-full-stack-trace
If your application parses CUDA-Q command-line arguments explicitly, call
cudaq.parse_args() before running the rest of the program so the flag is
recognized.