Hi, yes, these patches are required to have tne basic debug info support. At least 2 more patches are required to be able to get values of the variables without additional manual data type casting in cuda-gdb.
Thanks for the information. I don’t mean to push this but I’m in desperate need of debugging some cuda code. I’m not familiar with the llvm internal but it sounds like there’s at least line info now, right? If so, can you point me to a branch of llvm that can help tracing the bug down to certain line of code. I believe my bug is simply a write/read out of array boundary.
Are you planning to release this as soon as it’s ready or you want to make it into a major release? Is it possible to let me know (maybe by replying to this thread) once the code is ready? I know sometimes it takes a while to get things in the major release. I greatly appreciate your work on this!
Actually, we need to commit just 2 more patches to enable basic debug info support for NVPTX. So, I hope, it is going to be the part of the next 8.0 release. It won’t be backported to 7.0 definitely.
Sure, I will let you know when the patches are committed to the trunk, no problems.
If you only need line-information that information is already present and should be useful. As long as you set -g you should get some and there is a flag to turn ptxas optimisation off to preserve as much debuginformation as possible.
You then can also run your code under cuda-memcheck
I haven’t been able consistently to get line information of device code with -g -O0, sometimes cuda-memcheck can tell which line triggers the error but not always. cuda-gdb can only trace back to the kernel launch. Is --cuda-noopt-device-debug the option you mentioned to turn off ptxas optimisation? What’s the difference between that and simply -O0?
clang version 9.0.0 (https://git.llvm.org/git/clang.git 4566ed0d7c076ad061168f7c6cb5fa3a793614a8) (https://git.llvm.org/git/llvm.git b7195a6d8d9064c4fac6a7b91826de80df394f69)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/aznb/.linuxbrew/bin
Found candidate GCC installation: /home/aznb/.linuxbrew/bin/…/lib/gcc/x86_64-unknown-linux-gnu/5.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.4.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.4.7
Selected GCC installation: /home/aznb/.linuxbrew/bin/…/lib/gcc/x86_64-unknown-linux-gnu/5.5.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /net/vol3/software/modules-sw/cuda/10.0/Linux/RHEL6/x86_64, version 10.0
"/home/aznb/mycodes/testcuda -ferror-limit 19 -fmessage-length 0 -pthread -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -o /tmp/59224042.1.login.q/axpy-560f45.s -x cuda axpy.cu
clang -cc1 version 9.0.0 based upon LLVM 9.0.0svn default target x86_64-unknown-linux-gnu
ignoring nonexistent directory “/include”
ignoring nonexistent directory “/include”
ignoring duplicate directory “/home/aznb/.linuxbrew/bin/…/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/…/…/…/…/include/c++/5.5.0”
ignoring duplicate directory “/home/aznb/.linuxbrew/bin/…/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/…/…/…/…/include/c++/5.5.0/x86_64-unknown-linux-gnu”
ignoring duplicate directory “/home/aznb/.linuxbrew/bin/…/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/…/…/…/…/include/c++/5.5.0/backward”
ignoring duplicate directory “/usr/local/include”
ignoring duplicate directory “/home/aznb/.linuxbrew/Cellar/llvm/HEAD-b7195a6/lib/clang/9.0.0/include”
ignoring duplicate directory “/usr/include” #include “…” search starts here: #include <…> search starts here:
/home/aznb/.linuxbrew/Cellar/llvm/HEAD-b7195a6/lib/clang/9.0.0/include/cuda_wrappers
/net/vol3/software/modules-sw/cuda/10.0/Linux/RHEL6/x86_64/include
/home/aznb/.linuxbrew/bin/…/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/…/…/…/…/include/c++/5.5.0
/home/aznb/.linuxbrew/bin/…/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/…/…/…/…/include/c++/5.5.0/x86_64-unknown-linux-gnu
/home/aznb/.linuxbrew/bin/…/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/…/…/…/…/include/c++/5.5.0/backward
/usr/local/include
/home/aznb/.linuxbrew/Cellar/llvm/HEAD-b7195a6/lib/clang/9.0.0/include
/usr/include
End of search list.
“/net/vol3/software/modules-sw/cuda/10.0/Linux/RHEL6/x86_64/bin/ptxas” -m64 -g --dont-merge-basicblocks --return-at-end -v --gpu-name sm_61 --output-file /tmp/59224042.1.login.q/axpy-1ebb06.o /tmp/59224042.1.login.q/axpy-560f45.s
ptxas /tmp/59224042.1.login.q/axpy-560f45.s, line 290; fatal : Parsing error near ‘{’: syntax error
ptxas fatal : Ptx assembly aborted due to errors
clang-9: error: ptxas command failed with exit code 255 (use -v to see invocation)
Maybe it’s related to the illegal assembly code mentioned in https://reviews.llvm.org/D46189 Any idea what’s going on? I’m including other people to see if they have any suggestion. https://reviews.llvm.org/D46189 also mentioned that this is fixed but has the fixed been merged in the trunk yet?
BTW, github mirror’s b7195a6 does include your commit about the debug info on nvptx:
Hi Char, I found the problem, for some reason the last patch was applied correctly. Just committed the fixed version. Tried to compile axpy.cu, everything works.
Thanks for the great work! The version I checked out works most of the time. But I do encounter crashes sometimes. I can’t file a bug report on https://bugs.llvm.org/ because I don’t have an account. I sent an email to bugs-admin@lists.llvm.org for an account already but I haven’t heard back. Meanwhile, can you take a look at the issue? I’m attaching the bug report files here – the clang_error.log has the verbose output from clang and the other files are generated automatically by clang upon the crash. I’m using the above-mentioned commit 48aefa8877713616802d9c90b63f86fe50b9a101 from github mirror. The bug is reproducible on my machine with a nvidia RTX2080 card (sm=Turing75).
Hi Char, unfortunately I cannot help you with these crashes, because they caused not by clang /LLVM, but the NVidia’s PTX-to-SASS translator ptxas. It is ptxas who crashes and I can’t do anything about this. You need to report the bug to NVidia, but you need to manually run the ptxas tool with the generated .s file. Sometimes it helps to compile the code sequentially, not using the parallel builds. Plus, those crashes may disappear from time to time.
Both of these commands were shown in the error log. How do I replace my original cpp files with the two *.cu files automatically generated by llvm in the above command to reproduce the bug?